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 :

Ordre des condition (If) vba ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2010
    Messages : 85
    Par défaut Ordre des condition (If) vba ?
    Bonjour a tous

    Je me suis gratté la tête cette semaine sur un truc qui ne m'était encore jamais arrivé...pourquoi certaines conditions ne s’exécutait pas alors que tout était bien en placé dans le code et que si je les déplaçaient au dessus d'une autre, là, elles fonctionnaient ? Y a t-il un ordre dans laquelle mettre les conditions selon qu'elles comporte des And ou des Or ?

    Exemple bidon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    If x = y And z = a Then
    blabla
     
    ElseIf x = y Then 
    bla
     
    ElseIf z = a And x = y And dada Then
    blablabla
     
    EndIf
    Dans l'exemple bidon si dessus, disons que, de cette façon, la troisième condition ne s’exécute pas, mais si je la déplace au dessus de la deuxième..là elle s'exécute, et les autres aussi...je ne comprend pas...comment une condition peut elle être ignorée selon là ou je la met dans mon code ??


    Merci

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    bonsoir,

    et que veux dire "else" pour toi ?

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2010
    Messages : 85
    Par défaut
    Bon attention ici, la je parle de et non de ...donc si je me réfère à ce que microsoft en dit :

    avec les ElseIf toutes les conditions sont parsé tant qu'il ne rencontre une valeur False, et donc l'ordre des conditions ne devrait être un problàme...puis le code s'intéromp au End If final.

  4. #4
    Membre Expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Par défaut
    Citation Envoyé par Biggy30 Voir le message
    Bon attention ici, la je parle de et non de ...donc si je me réfère à ce que microsoft en dit :

    avec les ElseIf toutes les conditions sont parsé tant qu'il ne rencontre une valeur False, et donc l'ordre des conditions ne devrait être un problàme...puis le code s'intéromp au End If final.
    L'aide de Microsoft dit l'inverse
    Si condition a la valeur False, chaque instruction ElseIf est évaluée à tour de rôle. Quand une elseifcondition de valeur True est trouvée, les instructions qui suivent immédiatement l'instruction Then correspondante sont exécutées. Si aucune elseifcondition n'a la valeur True, ou s'il n'existe aucune instruction ElseIf, les instructions qui suivent Else sont exécutées. Après l'exécution des instructions qui suivent Then, ElseIf ou Else, l'exécution se poursuit avec l'instruction qui suit End If.
    C'est donc logique que quand tu as une valeur VRAIE que les conditions suivantes ne soient pas exécutées

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2010
    Messages : 85
    Par défaut
    Bah pourtant toute mes conditions fonctionne bien...je veux dire par là que peux importe l'ordre d'exécution elle fonctionne...mais si j'en déplace une qui contient des And dessous une qui n'a qu'une condition...là elle ne sera pas exécuté...mais les autre oui...c'est ca je pige pas...le reste ca m'importe peu du moment que ca marche

  6. #6
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    salut ...

    else = sinon ....

    donc dés que l'une tes conditions et vrai on ne teste pas celles qui suivent derrière un else (ou elseif..) ...

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

Discussions similaires

  1. Ordre des conditions dans une clause WHERE, important ou pas en 2012 ?
    Par clavier12AZQSWX dans le forum Langage SQL
    Réponses: 5
    Dernier message: 07/03/2012, 11h54
  2. [MySQL] Influence de l'ordre des conditions dans la clause WHERE
    Par morgan47 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 09/02/2012, 22h46
  3. Réponses: 2
    Dernier message: 23/03/2007, 14h31
  4. [VBA]L'ordre des évènements de suppression
    Par DelphiManiac dans le forum Access
    Réponses: 4
    Dernier message: 10/10/2006, 21h56
  5. [VBA-E] Ordre des feuilles d'un classeur
    Par steps5ive dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/04/2006, 19h11

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