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 de calcul booléen [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 262
    Par défaut formule de calcul booléen
    bonjour,

    je travaille sur une formule matricielle dans laquelle je vérifie (entre autres) 2 conditions. Je cherche une formule pour laquelle en vérifiant ces 2 conditions, ca me donne un résultat tel que :

    condition 1 condition 2 Résultat attendu
    1 1 -1
    1 0 -1
    0 1 1
    0 0 0

    A priori je ne peux pas utiliser un si dans une formule matricielle, donc si qqn a une idée ...

    Merci

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,

    Si c'est un calcul booléen en Excel c'est 1 pour VRAI et 0 pour FAUX en VBA c'est -1 pour VRAI et 0 pour FAUX
    Pour tester si tout est VRAI (l'équivalent d'un ET)
    Pour tester si une des conditions est VRAI (l'équivalent d'un OU)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =(((C3="F") + (D3>=1500))>0)*1
    Pour les OU, on utilise + pour les ET *
    Les deux formules renvoient donc 0 ou 1 en Excel (-1 en VBA)
    Bien sûr, tu peux aussi utiliser les fonctions ET (AND)et OU (OR)
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 262
    Par défaut
    Merci pour ta réponse.

    Mais j'ai mal exposé mon probleme.
    Ce que je cherche a faire, c'est une formule (sans macro) qui puisse me donner un résultat en testant 2 critères (VRAI OU FAUX) et en n'utilisant pas de SI/OU/ET car je suis dans une formule de calcul matriciel.

    ma condition 1 / ma condition 2 = mon résultat
    1 1 = -1
    1 0 = -1
    0 1 = 1
    0 0 = 0

    Je n'arrive pas à trouver une idée qui puisse me permettre d'interpréter à la fois la 1ere et la seconde ligne.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Les 2 premiers exemples que j'ai donné, ce sont des formules Excel et pas du VBA.
    J'ai fait allusion à du VBA parce-que tu donnes -1 0 et 1 or comme je l'ai écrit 0 = FAUX en Excel et VBA 1 = VRAI en Excel mais -1 en VBA
    Pour moi mais je peux me tromper une valeur booléenne n'a que 2 états VRAI ou FAUX donc 1 et 0 (pour Excel) et -1 et 0 dans sa version VBA
    L'exemple que j'ai donné est bien (Condition1) * (Condition2) qui est l'équivalent d'un ET (donnera 0 si c'est FAUX et 1 si c'est VRAI) et que j'utilise aussi dans les formules matricielles.
    Mais sans doute n'ai-je rien compris à ta question.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 262
    Par défaut
    Tu as raison, il faut que je fasse une formule qui multiplie les 2 test, mais pas que ...

    car en prenant mes 4 cas (en prenant 1=VRAI, 0= FAUX)

    1*1= 1 => je cherche a avoir -1
    1*0 = 0 => je cherche a avoir -1
    0*1= 0 => je cherche a avoir 1
    0*0 = 0 => ok

    je ne sais pas si il est possible de trouver une formule qui puisse me donner le bon résultat.

    tu me suis ?

    en fait je suis sur la voie, j'ai fait ainsi


    (cond 1 + cond 2)* (1+cond 2*-2)


    mais j'ai l'impression qu'il manque qqch

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Relis ma première réponse.
    Pour me résumer on utilise le produit de 2 ou plusieurs conditions pour obtenir l'équivalent d'un ET et la somme de deux ou plusieurs conditions pour obtenir l'équivalent d'un OU.
    Attention que la somme de plusieurs conditions aura comme résultat final une valeur supérieur à 1. Il y a donc lieu de mettre entre parenthèses l'ensemble de ces conditions et refaire un test logique >=1 ou >0 comme illustré dans ma première réponse.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =(((C3="F") + (D3>=1500))>0)*1
    Si tu désires obtenir une valeur négative en finale tu peux tout simplement faire -Résultat mais je ne saisis pas dans quelle condition tu souhaites obtenir cela. Comme illustré ci-dessous.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    = - (C7="F") * (D7>=1500) * (E7="Marseille")
    Il serait important que tu expliques dans quel cas tu veux obtenir -1 ou plutôt de l'expliquer par un cas concret.
    Peut-être est-ce simplement un OU Exclusif que tu souhaites tester ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 02/01/2006, 22h13
  2. [VBA-E] Copier une formule de calcul dans toute la ligne
    Par kernel57 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/12/2005, 18h18
  3. Réponses: 1
    Dernier message: 05/09/2005, 19h18
  4. formule de calcul du TRI avec PL/SQL
    Par mongilotti dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 30/07/2005, 20h23
  5. Mauvais résultat aprés une formule de calcul complexe
    Par poufouille dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/12/2004, 00h12

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