IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

convertir une formule Excel en VBA [XL-2002]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 681
    Points
    681
    Par défaut convertir une formule Excel en VBA
    Bonjour,

    j'ai la formule suivante dans une cellule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =ENT(MOD(ENT((AUJOURDHUI()-2)/7)+0,6;52+5/28))+1
    qui me donne le numéro de la semaine en cours.

    J'ai fait un bouton dans ma feuille pour dupliquer la feuille et j'ai cette formule dans une cellule.
    J'aimerais convertir cette formule en VBA car lorsque la nouvelle feuille est créée le numéro de la semaine ne doit plus bouger.

    Ne connaissant vraiment rien en VBA, j'avoue avoir besoin d'un petit coup de main pour traduire cette formule.

    Merci

  2. #2
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    bonjour bubulemaster le forum par vba message & copy en cellule a1 a adapter a tes besoins.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Option Explicit
    Sub test()
    Dim z As Integer
    z = DatePart("ww", Date, vbMonday, vbFirstFourDays)
    MsgBox z
    [a1] = z
    End Sub

  3. #3
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 681
    Points
    681
    Par défaut
    Bonjour,

    ça m'a mis sur la piste
    Voilà mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Sub NouvellePage()
        ' Créer la nouvelle feuille suivant le modèle de la première feuille
        Sheets(1).Copy After:=Worksheets(Worksheets.Count)
     
        Dim NumeroDeSemaine As Integer
     
        NumeroDeSemaine = DatePart("ww", Date, vbSunday, vbFirstJan1)
     
        Dim NumeroDeSemaineStr As String
     
        NumeroDeSemaineStr = Str(NumeroDeSemaine)
     
        ' Modifie le numéro de semaine. On supprime la formule de la cellule
        ActiveSheet.Cells(1, 2).Value = NumeroDeSemaineStr
     
        ' Change le nom de la feuille
        ActiveSheet.Name = "S" + NumeroDeSemaineStr
    End Sub
    Mais j'ai une erreur 400 sur la dernière ligne ?!?

  4. #4
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Bonjour
    En VBA la concaténation de chaine de caractère utilise le &
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Name = "S" &  NumeroDeSemaineStr

  5. #5
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Salut,
    Essaies:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Name = "S" &  NumeroDeSemaineStr
    A+

    Edit: Désolé pour le doublon pas fait de Refresh...

  6. #6
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 681
    Points
    681
    Par défaut
    Effectivement, j'avais oublié que pour concaténer une chaine s'était &.

    Mais ça ne résous pas le problème.
    En fait, voilà ce qui se passe.

    J'ai une première feuille qui sert de modèle avec le code que j'ai mis plus haut.
    Lorsqu'on créer une nouvelle (ex : S38) feuille ça marche.
    Mais si on clique sur le bouton de de la feuille S38 là il plante.
    J'ai remarqué qu'il dupliquait le code VBA de la feuille 1 sur la feuille 2, or il ne faudrait pas.
    Il faudrait que chaque bouton de chaque feuille appel le même code.

    Mais là, je ne trouve pas comment faire

  7. #7
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    1. Il va renommer la feuille S38 (S & N° semaine); Tu ne risque pas d'essayer de renommer 2 feuilles avec le même nom?
    2. Si c'est la même procédure qui est copié d'une feuille à une autre? mets là dans un module public au bouton, tu auras à faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub TonBouton_Click()
    machin
    end sub
    si j'ai bien compris

  8. #8
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 681
    Points
    681
    Par défaut
    Merci de la réponse.

    Où dois-je déclarer la méthode publique.
    J'ai essayé dans 'VBAProject -> Microsoft Excel Object -> ThisWorkbook'
    Mais lorsque j'appel la méthode il ne la trouve pas.

  9. #9
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Dans éditeur vba, tu fais insertion module, tu y colle ta procédure avec Public Sub...
    Pour nommer les feuilles créées ("S" & NumSemaine) il faut au préalable tester si une feuille avec le même nom existe déjà, tu dois prendre dès lors une décision que faire (soit supprimer l'ancienne, soit ne pas ajouter la nouvelle)

  10. #10
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 681
    Points
    681
    Par défaut
    Super ça marche, merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Insérer une formule dans une cellule Excel via VBA
    Par *.Har(d)t dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/02/2020, 13h02
  2. Inserer une Formule Excel dans VBA
    Par sambrook dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/02/2013, 16h46
  3. comprendre une formule excel en VBA
    Par huître dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/05/2011, 11h47
  4. Transformé une formule Excel en script VBA ?
    Par SFLEY dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 06/01/2007, 11h48
  5. [VBA]Passer une variable dans une formule Excel
    Par David1974 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/01/2006, 16h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo