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 formule en VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    jeanyvesporcher
    Inscrit en
    Octobre 2020
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : jeanyvesporcher
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2020
    Messages : 27
    Par défaut Convertir formule en VBA
    Bonjour,
    Je souhaite faire appel à vous pour répondre à mon problème:
    Convertir une formule excel vers du VBA
    Voici la formule :
    Code formule : Sélectionner tout - Visualiser dans une fenêtre à part
    =DATEDIF(B2;B1;"Y")&SI(DATEDIF(B2;B1;"Y")>1;" ans, ";" an, ")&DATEDIF(B2;B1;"YM") &" mois et "&DATEDIF(B2;B1;"MD")&SI(DATEDIF(B2;B1;"MD")>1;" jours";" jour")
    Merci

  2. #2
    Membre averti
    Homme Profil pro
    jeanyvesporcher
    Inscrit en
    Octobre 2020
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : jeanyvesporcher
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2020
    Messages : 27
    Par défaut
    Quelques modifications et informations que je donne.
    Convertir cette formule en VBA:
    Code formule : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(E10="";"";DATEDIF(E10;$C$1;"Y")&SI(DATEDIF(E10;$C$1;"Y")>1;" ans, ";" an, ")&DATEDIF(E10;$C$1;"YM") &" mois et "&DATEDIF(E10;$C$1;"MD")&SI(DATEDIF(E10;$C$1;"MD")>1;" jours";" jour"))
    E10 = Date_Fin
    $C$1 = Date_début
    (Aujourdhui())
    Merci

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Vous ne précisez pas si c'est écrire la formule dans une plage à l'aide du VBA ou si c'est écrire en VBA l'équivalent de cette formule en ne renvoyant que son résultat.

    Si c'est la première solution qui vous intéresse, il suffit d'écrire dans la plage complète la chaîne de caractères de la formule en utilisant la propriété Formula et en traduisant les fonction en anglais.
    Pour la traduction et en supposant que la formule est en cellule F10, il suffit d'écrire dans la fenêtre d'Exécution de l'éditeur VBA, l'instruction suivante ? Range("F10").Formula (le point d'interrogation est le raccourci de l'instruction Debug.Print) ce qui donnera =IF(E10="","",DATEDIF(E10,$C$1,"Y")&IF(DATEDIF(E10,$C$1,"Y")>1," ans, "," an, ")&DATEDIF(E10,$C$1,"YM") &" mois et "&DATEDIF(E10,$C$1,"MD")&IF(DATEDIF(E10,$C$1,"MD")>1," jours"," jour"))

    Il suffit alors d'écrire en VBA et en supposant que la formule doive être écrite dans les cellules F10 à F50
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("F10:F50").Formula = "Texte de la formule"
    Attention cependant que la chaîne de caractères de la formule contient de nombreuses constantes texte entourées de guillemets. Il y a donc lieu de les doubler. Cet exercice n'étant des plus amusant, je me suis abstenu. Il est possible de remplacer ces constantes par un code VBA

    A lire
    pour en savoir plus mes deux billets sur ce sujet
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  4. #4
    Membre averti
    Homme Profil pro
    jeanyvesporcher
    Inscrit en
    Octobre 2020
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : jeanyvesporcher
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2020
    Messages : 27
    Par défaut
    Bonjour Philippe,
    Merci pour ta réponse. Depuis un userform, j'ai entrée des valeurs dans les textBox1(TextDepart= date de naissance), textBox2 la valeur de C1 (dans la feuil1) = (Aujourdhui()), E10 = Colonne E

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim MaLigne As Long
     
    MaLigne = ActiveCell.Row 'N° de ligne
          Cells(MaLigne, 5) = FrmDates.TextDepart ' La date de Naissance
          Cells(MaLigne, 6).Formula = "=IF(E10="","",DATEDIF(E10,$C$1,"Y")&IF(DATEDIF(E10,$C$1,"Y")>1," ans, "," an, ")&DATEDIF(E10,$C$1,"YM") &" mois et "&DATEDIF(E10,$C$1,"MD")&IF(DATEDIF(E10,$C$1,"MD")>1," jours"," jour"))"
          Cells(MaLigne, 8) = CDbl(Txt_NbMois) ' Nombre de mois entre la date de départ et la date de fin
    Ceci afin d'éviter que les utilisateur efface cette cellule par m'égarde, de cette façon cette formule sera toujours renvoyée dans la cellule
    Cordialement

  5. #5
    Membre averti
    Homme Profil pro
    jeanyvesporcher
    Inscrit en
    Octobre 2020
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : jeanyvesporcher
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2020
    Messages : 27
    Par défaut
    Bonjour à tous,
    Quelqu'un aurai la solution ?
    J'ai une Erreur! en cells(MaLigne, 6).Formula

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim MaLigne As Long
     
    MaLigne = ActiveCell.Row 'N° de ligne
     
          Cells(MaLigne, 5) = UserForm1.TextDepart   ' La date de Naissance Range("E")
     ' Range("C1") est la date d'Aujourdhui
          Cells(MaLigne, 6).Formula = "=IF(E10="","",DATEDIF(E10,$C$1,"Y")&IF(DATEDIF(E10,$C$1,"Y")>1," ans, "," an, ")&DATEDIF(E10,$C$1,"YM") &" mois et "&DATEDIF(E10,$C$1,"MD")&IF(DATEDIF(E10,$C$1,"MD")>1," jours"," jour"))"
     
          Cells(MaLigne, 8) = CDbl(Txt_NbMois) ' Nombre de mois entre deux date

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Dans ma réponse, j'ai indiqué qu'il fallait doubler les guillemets mais comme il y en a un paquets, je me suis abstenu de vous écrire la formule complète

    Petit exemple simple

    La formule dans excel est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =RECHERCHEV("C090";$A$2:$J$106;2;FAUX
    en VBA pour l'écrire dans la cellule N2, ce sera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("N2").Formula = "=VLOOKUP(""C090"",$A$2:$J$106,2,FALSE)"
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. [XL-2010] Comment convertir formule pour VBA (Textbox et Userform)
    Par leo.grinou dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/12/2019, 08h26
  2. [XL-2007] convertir formule en code vba
    Par anissa5 dans le forum Excel
    Réponses: 3
    Dernier message: 20/11/2019, 13h15
  3. Convertir formule en VBA
    Par Floflo3163 dans le forum Excel
    Réponses: 1
    Dernier message: 09/07/2012, 15h13
  4. Copier une formule avec vba
    Par NAMORJOSE dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/05/2006, 00h12
  5. [VBA-E] Convertir du code VBA 2000 en VBA 97
    Par Mykeul dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/04/2006, 11h05

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