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 :

Comparaison de valeurs ne fonctionne pas comme attendu [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut Comparaison de valeurs ne fonctionne pas comme attendu
    Bonjour,
    J'ai créé une macro dans laquelle j'utilise des conditions imbriquées pour comparer les valeurs de plusieurs cellules afin d'en renseigner une autre, voici le bout de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If (data.Cells(i + 1, 9) <> "-" And data.Cells(i + 1, 7) <> data2.Cells(9, 7)) Or (data.Cells(i + 1, 9) <> "-" And data.Cells(i + 1, 7) <> data2.Cells(10, 7)) Then
          data.Cells(i + 1, 2) = "'" & data.Cells(i + 1, 2) & " of " & data.Cells(i + 1, 10) & " " & data.Cells(i + 1, 7) & " for " & data.Cells(i + 1, 9)
       End If
    J'ai également testé celui-ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     If (data.Cells(i + 1, 9) <> "-" And (data.Cells(i + 1, 7) <> "Procurement" Or data.Cells(i + 1, 7) <> "Construction") Then
                        data.Cells(i + 1, 2) = "'" & data.Cells(i + 1, 2) & " of " & data.Cells(i + 1, 10) & " " & data.Cells(i + 1, 7) & " for " & data.Cells(i + 1, 9)
       End If
    Mon souci est qu'après avoir ajouté des AddWatch pour visualiser les valeurs de mes variables alors même que les valeurs " data.Cells(i + 1, 7) " et "data2.Cells(9, 7)" sont égales, la condition devient vrai et je rentre dans mon code .
    Quelle erreur ai-je zappé? Ai-je utilisé la bonne méthode? Selon moi cela devrait fonctionner, je ne comprends pas . .
    Merci pour votre aide
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 548
    Par défaut
    Bonjour

    Quand on mélange des And et des Or, il est conseillé de mettre des parenthèses...

  3. #3
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut
    Bonjour 78Chris,
    Il me semble que le nombre de parenthèses était suffisant (voir le code) mais pour être sur j'en ai ajouté, résultat identique.

    SI( ((A <> "_") ET ((B <> C) OU (B <>D))) me renvoie VRAI alors que B et C sont égaux.

    Après vérification il est normal que ma condition soit vrai car ici si B = C j'aurai B <> D, ce qui validera ma condition .
    Ce que je souhaite c'est que cette condition me renvoi FAUX si A <> "-" et si les valeurs C ou D sont présentes .
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  4. #4
    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,

    c'est comme en mathématiques, faut juste utiliser les parenthèses à bon escient, être logique quoi !

    Si Condition1 ET (Condition2 OU Condition3) …

    What else ?

    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 29/04/2015, 16h44
  2. pthread et signal : fonctionne pas comme attendue
    Par contremaitre dans le forum POSIX
    Réponses: 0
    Dernier message: 01/08/2008, 12h22
  3. [D7][Mutex] ne fonctionne pas comme attendu !
    Par jbat dans le forum Delphi
    Réponses: 8
    Dernier message: 25/06/2007, 12h35
  4. un if qui ne fonctionne pas comme je veux
    Par Kelly182 dans le forum Access
    Réponses: 4
    Dernier message: 27/07/2006, 15h12
  5. time.sleep() ne fonctionne pas comme souhaité
    Par Olivier_ dans le forum Général Python
    Réponses: 3
    Dernier message: 19/11/2005, 01h46

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