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 :

Conditions multiples Excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé Avatar de babybell
    Homme Profil pro
    Retraité Bancaire
    Inscrit en
    Septembre 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité Bancaire
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2008
    Messages : 495
    Par défaut Conditions multiples Excel
    Bonjour

    J'ai un code à condition multiples
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.FormulaR1C1 ="=IF(RC[-1]=""A"",VLOOKUP(RC[-1],ListeDeroulante!R3C[-7]:R6C[-5],2),IF(RC[-1]=""B"",VLOOKUP(RC[-1],ListeDeroulante!R3C[-7]:R6C[-5],2),IF(RC[-1]=""C"",VLOOKUP(RC[-1],ListeDeroulante!R3C[-7]:R6C[-5],2),IF(RC[-1]=""D"",VLOOKUP(RC[+2],ListeDeroulante!R2C[+7]:R13C[+9],2),IF(RC[-1]=""E"",VLOOKUP(RC[+2],ListeDeroulante!R2C[+20]:R39C[+23],3)))))))"
    et il fonctionne bien tant que je met les 4 premières conditions, mais pas quand j'en met 5,6 ou 7.
    Je croyais pourtant que cela fonctionnait jusqu'à 7.
    Existe-t-il un moyen pour faire fonctionner ce code ?

    Merci de vos réponses

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    De mémoire ce n'est pas au nombre de conditions, mais d'imbrications de parenthèses, et à première vu tu as atteint le quota.

    Deux solutions :

    Passer à Excel 2007 qui permet plus d'imbrications (il me semble que c'est 64).
    Créer une fonction en VB et la récupérer comme une fonction personnalisée.

    Philippe

  3. #3
    Membre éclairé Avatar de babybell
    Homme Profil pro
    Retraité Bancaire
    Inscrit en
    Septembre 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité Bancaire
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2008
    Messages : 495
    Par défaut
    Merci de ta réponse, mais deux choses :
    * Comment se fait-il que ces conditions fonctionnent en direct dans une formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(G379="A";RECHERCHEV(G379;ListeDeroulante!A$3:C$6;2);SI(G379="B";RECHERCHEV(G379;ListeDeroulante!A$3:C$6;2);SI(G379="C";RECHERCHEV(G379;ListeDeroulante!A$3:C$6;2);SI(G379="D";RECHERCHEV(J379;ListeDeroulante!O$2:Q$11;2);SI(G379="E";RECHERCHEV(J379;ListeDeroulante!AB$2:AE$38;3);RECHERCHEV(G379;ListeDeroulante!AB$2:AE$38;3))))))
    et que cela ne fonctionne pas en VB
    * Ensuite, je ne sais pas comment créer une fonction en VB et la récupérer comme une fonction personnalisée.

    Merci de me guider

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2008
    Messages : 16
    Par défaut
    Bonjour Babybell,
    je ne peux pas répondre à ta question pourquoi on peut le faire en Excel mais pas en VBA. Par contre, j'ai peut-être une piste de solution à te proposer.

    Si tu souhaites réaliser cela en VBA, je te proposerais de la décortiquer en éditant un petit bout de code qui ferait la même chose que la fonction demandée plutôt que d'essayer de convertir une formule d'un kilomètre en VBA avec l'enregistreur. Par exemple, tu pourrais faire un select case avec ta cellule.

    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
    Cellule = Cells(379, 7)
    On Error Resume Next
     
    Select Case Cellule
        Case "A"
            'ton VLookup
        Case "B"
            'ton VLookup
        Case "C"
            'ton VLookup
        Case "D"
            'ton VLookup
        Case "E"
            'ton VLookup
    End Select
    Comme tu as parlé de code dans ton premier message, je crois que c'est une piste de solution qui pourrait te convenir. Si c'est le cas, tu n'as qu'à faire signe et nous pourrions t'aider à pousser un peu plus !

    Cordialement,

    Étienne

  5. #5
    Membre éclairé Avatar de babybell
    Homme Profil pro
    Retraité Bancaire
    Inscrit en
    Septembre 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité Bancaire
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2008
    Messages : 495
    Par défaut
    Bonjour

    Cela m'irai très bien, d'autant plus que ce genre d'exercice, je dois le faire 2 ou 3 fois, avec des VLOOKUP différents?
    Merci à toi de m'aider

  6. #6
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour Etienne.

    La ligne est en trop, non?

    PGZ

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2008
    Messages : 16
    Par défaut
    Re, Babybell, pgz, le forum,
    je crois babybell que le plus simple serait vraiment de nous mettre un fichier exemple sans données confidentielles qui nous permettrait de te donner un coup de main concret, et non de seulement envoyer des idées en l'air comme ça. Qu'est-ce que t'en dis ?

    Etienne

    PS : Excellent point pgz ! Elle est complètement inutile ! Salutations !

  8. #8
    Membre éclairé Avatar de babybell
    Homme Profil pro
    Retraité Bancaire
    Inscrit en
    Septembre 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité Bancaire
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2008
    Messages : 495
    Par défaut
    Voici un petit bout de mon appli. Ce que je voudrais faire en VBA, c'est le contenu des cellules C2 et D2.

    Merci à toi

  9. #9
    Membre chevronné
    Inscrit en
    Octobre 2008
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Octobre 2008
    Messages : 273
    Par défaut
    Bonjour,

    Tu peux déjà simplifier ta formule.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    =SI(B2="A";RECHERCHEV(B2;ListeDeroulante!A$3:C$6;2);
    SI(B2="B";RECHERCHEV(B2;ListeDeroulante!A$3:C$6;2);
    SI(B2="C";RECHERCHEV(B2;ListeDeroulante!A$3:C$6;2)
    ;SI(B2="D";RECHERCHEV(E2;ListeDeroulante!O$2:Q$11;2);
    SI(B2="E";RECHERCHEV(E2;ListeDeroulante!AB$2:AE$38;3);
    RECHERCHEV(B2;ListeDeroulante!AB$2:AE$38;3))))))
    Peut être remplacée par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    =SI(OU(B2="A";B2="B";B2="C");RECHERCHEV(B2;ListeDeroulante!A$3:C$6;2);
    SI(B2="D";RECHERCHEV(E2;ListeDeroulante!O$2:Q$11;2);
    RECHERCHEV(B2;ListeDeroulante!AB$2:AE$38;3)))

  10. #10
    Membre éclairé Avatar de babybell
    Homme Profil pro
    Retraité Bancaire
    Inscrit en
    Septembre 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité Bancaire
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2008
    Messages : 495
    Par défaut
    Effectivement c'est plus simple et cela fonctionne.
    Merci de ton aide, bonne journée et bonne fêtes de fin d'année à tous

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

Discussions similaires

  1. [XL-2013] Formule Excel à Conditions Multiple
    Par jbsushi dans le forum Excel
    Réponses: 9
    Dernier message: 26/03/2015, 16h03
  2. [XL-2007] Condition multiple excel 2007
    Par zorgon80 dans le forum Excel
    Réponses: 4
    Dernier message: 04/06/2013, 08h03
  3. Calcul requête avec conditions multiples
    Par Phullbrick dans le forum Access
    Réponses: 7
    Dernier message: 18/04/2006, 13h45
  4. Calculs dans une requete avec conditions multiples
    Par Sha1966 dans le forum Access
    Réponses: 3
    Dernier message: 13/01/2006, 15h18
  5. Switch et conditions multiples
    Par The Wretched dans le forum Langage
    Réponses: 4
    Dernier message: 19/04/2005, 13h57

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