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 :

Combien de condition "And" peut on mettre dans une ligne de code


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 142
    Par défaut Combien de condition "And" peut on mettre dans une ligne de code
    Bonjour
    Dans une ligne de code VBA j'utilise l'opérateur "And" 8 fois comme suit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ...
    ElseIf Cells(LignePlan, 4) <> "Sujet1" And Not Cells(LignePlan, 36) Like "*Sujet2*" And Cells(LignePlan, 53) <> "Sujet3" And Cells(LignePlan, 53) <> "Sujet4" And Cells(LignePlan, 32) <> "Sujet5" And Cells(LignePlan, 65) = "Sujet6" And Cells(LignePlan, 6) = "Sujet7" And Cells(LignePlan, 75) = "Sujet8" Then
                            Cpt = Cpt + 1
    ...
    Lorsque je lance la macro en l'état , il n'y a pas de résultat. Lorsque je passe à 7 conditions un résultat s'affiche. Y a t-il une nombre maximum de conditions à ne pas dépasser ? Si celà est le cas, avez-vous une astuce pour que le résultat tienne tout de même compte des 8 conditions ?

    merci
    Salutations

    MichaSarah

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut MichaSarah et le forum
    tu n'as qu'à essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If 1 = 1 And 2 = 2 And 3 = 3 And 4 = 4 And 5 = 5 And 6 = 6 And 7 = 7 And 8 = 8 And 9 = 9 And 10 = 10 Then
        x = 1
    Else
        x = 2
    End If
    Sauf que ton code commence par ElseIf ce qui fait soupçonner d'autres conditions. De plus avec autant de conditions et comme une seule suffit à bloquer, puisque c'est des ET.
    Avec autant de conditions, j'évite t'utiliser les nombres pour désigner les colonnes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ElseIf Cells(LignePlan, "D") <> "Sujet1" And _
        Not Cells(LignePlan, "AJ") Like "*Sujet2*" And _
        Cells(LignePlan, "BA") <> "Sujet3" And _
        Cells(LignePlan, "BA") <> "Sujet4" And _
        Cells(LignePlan, "AF") <> "Sujet5" And _
        Cells(LignePlan, "BM") = "Sujet6" And _
        Cells(LignePlan, "F") = "Sujet7" And _
        Cells(LignePlan, "BW") = "Sujet8" Then
                            Cpt = Cpt + 1
    Ne connaissant rien d'autre...
    A+

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 364
    Par défaut
    Bonjour

    autre solution (exemple pour 9 conditions a, b , c ... i) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If a + b + c + d + e + f + g + h + i = -9 Then

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 142
    Par défaut
    Bonjour Gorfael et OrDonc,

    J'ai essayé de remplacer le n° des colonnes par l'équivalent en lettre mais rien ni change.
    Je n'ai pas très bien compris vos propositions :

    OrDonc : que signifie le -9 ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If a + b + c + d + e + f + g + h + i = -9 Then
    Gorfael : A quoi correspondent les égalités ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If 1 = 1 And 2 = 2 And 3 = 3 And 4 = 4 And 5 = 5 And 6 = 6 And 7 = 7 And 8 = 8 And 9 = 9 And 10 = 10 Then
        x = 1
    Else
        x = 2
    End If
    merci par avance pour votre aide
    MichaSarah

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut MichaSarah et le forum
    Je n'ai pas très bien compris vos propositions
    Quelles propositions ? C'est juste pour te prouver qu'avec 9 conditions, ça fonctionne encore : 1=1 est vrai et la 2ème méthode fait la même chose (True = -1).
    Donc ton erreur ne vient pas du nombre de condition, mais qu'une de ces conditions n'est pas vraie.
    A+

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 142
    Par défaut
    Bonsoir,
    Merci Gorfael pour ce complément d'information. Après plusieurs tests, il y avait bien une petite erreur dans l'une de mes égalités.

    MichaSarah

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/05/2012, 16h14
  2. Combien de valeurs peut-on mettre dans un Array ?
    Par kay600 dans le forum ActionScript 3
    Réponses: 0
    Dernier message: 27/07/2010, 23h11

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