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 :

Formule Excel ok mais VBA non exécutable


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
    Chargé d'affaire
    Inscrit en
    Mars 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2014
    Messages : 11
    Par défaut Formule Excel ok mais VBA non exécutable
    Bonjour à tous,

    Voilà mon défis, j'ai mis en place une formule (avec des recherchev, fonction si, concatener, stxt) qui marche.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(RECHERCHEV($B23;CONVERT!$1:$1048576;10;FAUX)="CDR";"MAILLING000DTRCDR";SI(RECHERCHEV($B23;CONVERT!$1:$1048576;10;FAUX)="SND";"MAILLING000DTRSND";SI(RECHERCHEV($B23;CONVERT!$1:$1048576;10;FAUX)="ELE";"MAILLING000DTRELE";SI(RECHERCHEV($B23;CONVERT!$1:$1048576;10;FAUX)="FTV";"MAILLING000FTV";CONCATENER(STXT(RECHERCHEV(B23;CONVERT!$1:$1048576;5;FAUX);1;8);RECHERCHEV($B23;CONVERT!$1:$1048576;16;FAUX);RECHERCHEV($B23;CONVERT!$1:$1048576;17;FAUX);"DTR";RECHERCHEV($B23;CONVERT!$1:$1048576;10;FAUX))))))
    Vu que je suis débutant en vba, j'ai bidouillé quelque chose (voir ci-dessous) en enregistrant une macro dans laquelle j'ai utilisé la formule sur la feuille et étirée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     Range("C23").Select
        ActiveCell.FormulaR1C1 = _
            "=IF(VLOOKUP(RC2,CONVERT!R1:R1048576,10,FALSE)=""CDR"",""MAILLING000DTRCDR"",IF(VLOOKUP(RC2,CONVERT!R1:R1048576,10,FALSE)=""SND"",""MAILLING000DTRSND"",IF(VLOOKUP(RC2,CONVERT!R1:R1048576,10,FALSE)=""ELE"",""MAILLING000DTRELE"",IF(VLOOKUP(RC2,CONVERT!R1:R1048576,10,FALSE)=""FTV"",""MAILLING000FTV"",CONCATENATE(MID(VLOOKUP(RC[-1],CONVERT!R1:R1048576,5,FALSE),1,8),VLOOK" & _
            "ONVERT!R1:R1048576,16,FALSE),VLOOKUP(RC2,CONVERT!R1:R1048576,17,FALSE),""DTR"",VLOOKUP(RC2,CONVERT!R1:R1048576,10,FALSE))))))"
            Range("C23").Select
        Selection.AutoFill Destination:=Range("C23:C200"), Type:=xlFillDefault
        Range("C23:C200").Select
    Je veux que cette formule s'applique à partir de la cellule C23 jusqu'à C200.

    Pouvez-vous réussir à programmer cette fonction?
    nb: Fichier avec la macro dans "MAJ Classeur1.xls" -> MAJ Classeur1.xls

    Merci par avance de votre aide

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour, bonjour,

    en utilisant l'Enregistreur de macros, le code est fourni sur un plateau !

  3. #3
    Membre émérite Avatar de keygen08
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Octobre 2012
    Messages : 545
    Par défaut
    Bonjour

    En utilisant formulalocal, la formule a utiliser sous VBA reste identique a celle utilisé sur la feuille excel, ce qui donnerait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Range("C23").Formulalocal = _
    =SI(RECHERCHEV($B23;CONVERT!$1:$1048576;10;FAUX)="CDR";"MAILLING000DTRCDR";SI(RECHERCHEV($B23;CONVERT!$1:$1048576;10;FAUX)="SND";"MAILLING000DTRSND";SI(RECHERCHEV($B23;CONVERT!$1:$1048576;10;FAUX)="ELE";"MAILLING000DTRELE";SI(RECHERCHEV($B23;CONVERT!$1:$1048576;10;FAUX)="FTV";"MAILLING000FTV";CONCATENER(STXT(RECHERCHEV(B23;CONVERT!$1:$1048576;5;FAUX);1;8);RECHERCHEV($B23;CONVERT!$1:$1048576;16;FAUX);RECHERCHEV($B23;CONVERT!$1:$1048576;17;FAUX);"DTR";RECHERCHEV($B23;CONVERT!$1:$1048576;10;FAUX))))))
     Range("C23").AutoFill Destination:=Range("C23:C200"), Type:=xlFillDefault
    Plus compréhensible lorsque l'on a pas l'habitude d'utiliser VBA. A part les select que j'ai nettoyé, quel est la difficulté que vous rencontré pour rendre cette macro opérationelle.

  4. #4
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2014
    Messages : 11
    Par défaut
    Comme mentionné ci-dessus, j'ai utilisé l'enregistreur macro mais elle n'est pas opérationnelle.

    Dans le module, lorsque j'exécute le programme (F5), il y a une fenêtre inscrit "Erreur d'exécution '1004': Erreur définie par l'application ou par l'objet".
    Lorsque je clique sur "Débogage", ça me surligne en jaune le programme suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        ActiveCell.FormulaR1C1 = _
            "=IF(VLOOKUP(RC2,CONVERT!R1:R1048576,10,FALSE)=""CDR"",""MAILLING000DTRCDR"",IF(VLOOKUP(RC2,CONVERT!R1:R1048576,10,FALSE)=""SND"",""MAILLING000DTRSND"",IF(VLOOKUP(RC2,CONVERT!R1:R1048576,10,FALSE)=""ELE"",""MAILLING000DTRELE"",IF(VLOOKUP(RC2,CONVERT!R1:R1048576,10,FALSE)=""FTV"",""MAILLING000FTV"",CONCATENATE(MID(VLOOKUP(RC[-1],CONVERT!R1:R1048576,5,FALSE),1,8),VLOOK" & _
            "ONVERT!R1:R1048576,16,FALSE),VLOOKUP(RC2,CONVERT!R1:R1048576,17,FALSE),""DTR"",VLOOKUP(RC2,CONVERT!R1:R1048576,10,FALSE))))))"
    Merci de voir

  5. #5
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    ! Plus pratique pour indiquer le n° d'une ligne en erreur …

    Il y a donc une faute dans le code, donc reprendre de zéro depuis la feuille en ré-entrant la formule
    tout en utilisant l'Enregistreur de macros …

  6. #6
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2014
    Messages : 11
    Par défaut
    Cher Marc,

    Je me suis rendu compte qu'il y avait une faute, j'ai refais la manip plusieurs fois mais à chaque fois c'est le même problème.

    J'ai mis le fichier avec la macro dans "MAJ Classeur1.xls" juste à l'instant.

    Merci

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

Discussions similaires

  1. Formule Excel en code VBA
    Par enretard dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 10/11/2011, 15h19
  2. Exécution automatique d'une formule Excel à partir de VBA
    Par jumiara dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 02/11/2010, 12h13
  3. Formules excel écrites via VBA
    Par Loki83 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 20/11/2008, 08h58
  4. [E-00] Transcrire une formule Excel en script VBA
    Par ritournelle dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 16/10/2008, 11h53
  5. 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

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