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

Excel Discussion :

IF - problème comparaison text / text et number / number dans la même formule [XL-2010]


Sujet :

Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 2
    Points
    2
    Par défaut IF - problème comparaison text / text et number / number dans la même formule
    Bonjour

    J'ai un soucis avec une comparaison dans Excel (fonction IF).

    Voici les conditions:

    Si AG2 est vide et AH2 ="Unknown" , alors TRUE ' AG2="",AH2="Unknown"
    Si AG2 = AH2 , alors TRUE ' AG2=AH2
    Si ((AH2 - AG2) <= 0.1) , alors TRUE ' (AH2-AG2)<=0.1
    Autrement,c'est FAUX

    Excel arrive à comparer soit les valeurs textes entre elles, soit les valeurs nombre entre elles.

    Si ma formule ne compare que le texte c'est bon
    Si ma formule ne compare que les nombres c'est bon

    Mais s'il doit comparer les deux alors la formule devient TRUE (si pas d'erreur) pour les nombres à comparer, et "#VALUE!" s'il y a la valeur "Unknown" dans la colonne AH, et rien dans la colonne AG.

    Ma tentative est:
    =IF(OR(OR(AND(AG2="",AH2="Unknown"),AG2=AH2),(AH2-AG2)<=0.1),TRUE,FALSE)

    Y a t-il un moyen de comparer les nombres entre eux, et les textes en eux, dans la meême formule ?

    Merci de votre aide.

  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
    12 922
    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 : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pour connaître les informations concernant la valeur d'une cellule, il faut utiliser une fonction de la catégorie Informations
    Pour savoir si c'est un nombre ESTNUM (ISNUM) etc...
    Ces formules renvoient VRAI (TRUE) ou FAUX (FALSE)

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Bonjour
    Merci de ta réponse,
    J'ai rajouté un ISNUMBER
    Mais si désormais je n'ai plus d'erreur pour la partie text.
    La fonction ne fait plus le calcul souhaité, et me systématiquement FALSE
    s'il y a deux nombres dans quasi identiques dans AG2 et AH2.

    résultat:
    ex: si AG2 = -37931950.08 , et AH2 = -37931950.08 , ALORS FALSE
    Le résultat est censé être TRUE

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =IF(OR(OR(AND(AG2="",AH2="Unknown"),AG2=AH2),(ISNUMBER(AH2-AG2)<=0.1)),TRUE,FALSE)
    SAis tu d'où vient le problème ?

  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
    12 922
    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 : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Quand je regarde ta formule,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =IF(OR(OR(AND(AG2="",AH2="Unknown"),AG2=AH2),(ISNUMBER(AH2-AG2)<=0.1)),TRUE,FALSE)
    je serais très étonné quelle puisse calculer quoi que ce soit, je ne vois nulle trace de calcul
    De plus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (ISNUMBER(AH2-AG2)<=0.1)
    Dans cette partie de formule que fait Excel ? Il vérifie si AH2-AG2 est un nombre et donc renvoie TRUE ou FALSE et ensuite il vérifie si ce résultat est inférieur ou égale à 0.1
    Si le résultat de la soustraction de AH2 et AG2 est un nombre, la formule ISNUMBER renverra TRUE or TRUE ne peut pas être <= 0.1 puisque TRUE est égal à 1 et FALSE à 0 il renverra toujours FALSE

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    ok, si la formule excel ne peut pas fonctionner.

    Est-ce qu'avec un code vba, il serait possible de faire la comparaison ?
    Pour les 3 conditions ci dessous ?

    Je cherche juste à savoir si vba est capable de faire la comparaison ?

    3 conditions pour TRUE:
    IF AG2 = AH2 alors TRUE 'pour text and number
    OR IF (AH2-AG2)<=0.1 alors TRUE 'pour number only
    OR IF AG2 ="" , AH2="Unknow" alors TRUE 'pour text only

    Merci de votre aide

  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
    12 922
    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 : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Non seulement VBA est capable évidemment de faire la comparaison mais excel aussi, il faut revoir ton algorithme.
    Je t'ai simplement expliqué pourquoi la formule ne faisait pas le calcul.

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 922
    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 : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je te donne déjà un morceau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    =SI( A2=B2; VRAI;
    SI( ET(ESTNUM(A2);ESTNUM(B2)); (B2-A2)<=0,1;
    "Texte"))
    Ou plus simple et plus rapide en exécution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    =SI( A2=B2; VRAI;
    SI( ESTNUM(A2) * ESTNUM(B2); (B2-A2)<=0,1;
    "Texte"))
    On traite dans l'ordre
    ligne 1 les égalités (Texte et Nombre)
    ligne 2 B2-A2 <= 0.1 à condition que chaque cellule soit un nombre

    Reste à construire la dernière condition
    Attention que si les deux cellules sont vides Excel considérera qu'il y a égalité. Il y a peut-être lieu de créer une condition supplémentaire.

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    J'ai réessayé, mais je ne parviens pas à faire fonctionner la formule correctement, de nouveau je suis confronté au même problème.

    Chaque fois que je change la formule, j'ai de nouveau le même problème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =IF(DP23=DQ23,TRUE,IF(AND(ISNUMBER(DP23),ISNUMBER(DQ23),(DQ23-DP23)<=0.1),TRUE,FALSE))
    =>#VALUE! => quand "unknown" est dans la colonne DQ

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =IF(DP4=DQ4,TRUE,FALSE),IF(AND(ISNUMBER(DP4),ISNUMBER(DQ4),(DQ4-DP4)<=0.1),TRUE,FALSE),IF(OR(DP4="",DQ4="Unknown"),TRUE,FALSE)
    =>#VALUE! => tout le temps

  9. #9
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 922
    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 : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je pense que tu ne lis pas attentivement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =IF(DP4=DQ4,TRUE,FALSE),IF(AND(ISNUMBER(DP4),ISNUMBER(DQ4),(DQ4-DP4)<=0.1),TRUE,FALSE),IF(OR(DP4="",DQ4="Unknown"),TRUE,FALSE)
    Pourquoi FALSE et pas le IF suivant
    La synatxe du IF c'est SI( <Test condition>, Condition=VRAI, Condtion=FAUX)
    Condition = VRAI ou Condition=FAUX
    Sont soit une valeur à renvoyer immédiatement soit une valeur à recalculer par une autre fonction etc...
    dans le cas présent si la cellule 1 n'est pas égal à la cellule 2 on passe à un 2ème SI (ou IF)

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Hello,

    merci encore des vos conseils,
    mais çane fonctionne toujours pas, si j'intégère toutes les conditions, ça ne fonctionne pas, je ne parviens pas à obtenir de résultat du tout.

    J'ai essayé plusieurs fois, plusieurs formats, mais rien n'y fait, je ne parviens pas à implanter la bonne formule.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =IF(DP4=DQ4,TRUE,IF(AND(ISNUMBER(DP4),ISNUMBER(DQ4),(DQ4-DP4)<=0.1),TRUE,AND(OR(ISTEXT(DQ4),(ISTEXT(DP4),DP4="",DQ4="Unknown")))),FALSE)
    Cordialement

  11. #11
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 922
    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 : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Dans la formule que j'ai faite un peu plus haut, j'ai présenté la formule en hiérarchie pour une meilleure compréhension.
    La voici en présentation classique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(A2=B2;VRAI;SI(ET(ESTNUM(A2);ESTNUM(B2));(B2-A2)<=0,1;"Texte"))
    Avec ce code, tout fonctionne mais si j'ai du texte quel qu'il soit en A2 ou B2 la formule renvoie "Texte"
    Il reste donc à remplacer la chaîne Texte par une nouvelle condition en utilisant par exemple un nouveau SI soit
    SI ( A2 ="" et B2="Unknow" alors VRAI sinon FAUX)
    D'accord ?
    Comment faire ce test ?
    Soit dans avec SI
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SI(ET(A6="";B6="Unknow");VRAI;FAUX)
    C'est ce morceau là qu'il faut placer à la place de Texte
    Attention comme je l'ai déjà signalé, si les cellules sont vides Excel renvoi VRAI (Test d'égalité)

    Il y a moyen également de le faire avec une suite de ET et de OU mais c'est un peu plus compliqué à comprendre et autre solution avec une suite d'additions et de multiplications.

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    J'ai réessayé de le modifier, mais toujours le même problème.

    Avec la première formule, le message d'erreur est "#NAME!"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =IF(DP2=DQ2,TRUE,IF(AND(ISNUM(DP2),ISNUM(DQ2)),(DQ2-DP2)<=0.1,"Texte"))
    Avec la seconde formule, en intégrant le texte, le message d'erreur est "#NAME!" pour les lignes avec texte, et "0" pour les lignes avec nombre..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =IF(DP2=DQ2,TRUE,IF(AND(ISNUM(DP2),ISNUM(DQ2)),(DQ2-DP2)<=0.1,"Texte"))*IF(AND(DP2="",DQ2="Unknown"),TRUE,FALSE)
    Faut-il intégrer de nouvelles conditions ?

    Cordialement

  13. #13
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 922
    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 : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Avec la première formule, le message d'erreur est "#NAME!"
    Le code erreur #NOM! ou #NAME! pour la version anglaise, signifie que la formule fait référence à un identificateur non reconnu par excel (nom de la formule, reférence à une cellule etc..)
    La fonction pour tester si le contenu de la cellule est un nombre est ISNUMBER et pas ISNUM.
    Premier exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =IF(A2=B2;TRUE;IF(AND(ISNUMBER(A2);ISNUMBER(B2));(B2-A2)<=0,1;"Texte"))
    Deuxième exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =IF(A2=B2;TRUE;IF(AND(ISNUMBER(A2);ISNUMBER(B2));(B2-A2)<=0,1;IF(AND(A2="";B2="Unknow");TRUE;FALSE)))

  14. #14
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Aucune des deux fonctions ne fonctionnent, j'ai systématiquement le même message d'erreur, je ne peux même pas tester la formule.


    message d'erreur: "You've entered too many aguments for this function.
    To get help.... Sign in your formula."


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =IF(DP2=DQ2,TRUE,IF(AND(ISNUMBER(DP2),ISNUMBER(DQ2)),(B2-A2)<=0,1,"Text"))

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =IF(DP2=DQ2,TRUE,IF(AND((SNUMBER(DP2),ISNUMBER(DQ2)),(DQ2-DP2)<=0,1),IF(AND(DP2="",DQ2="Unknow"),TRUE,FALSE))
    J'ai même essayé de rajouter un TRUE après le calcul B-A)<=0.1, mais je ne parviens pas non plus à valider la formule.


    Cordialement

  15. #15
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Finalement j'ai pu rajouter un "TRUE" après ma formule de calcul, mais excel refuse toujours ma formule.
    "your formula contains errors"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF(DP2=DQ2,TRUE,IF(AND((SNUMBER(DP2),ISNUMBER(DQ2)),(DQ2-DP2)<=0,1),TRUE,IF(AND(DP2="",DQ2="Unknown"),TRUE,FALSE))

  16. #16
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 922
    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 : 12 922
    Points : 28 908
    Points
    28 908
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Citation Envoyé par vba_help Voir le message
    Finalement j'ai pu rajouter un "TRUE" après ma formule de calcul, mais excel refuse toujours ma formule.
    "your formula contains errors"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF(DP2=DQ2,TRUE,IF(AND((SNUMBER(DP2),ISNUMBER(DQ2)),(DQ2-DP2)<=0,1),TRUE,IF(AND(DP2="",DQ2="Unknown"),TRUE,FALSE))
    Franchement cette histoire prend des proportions anormale.
    Voici le classeur avec les formules telles que je les ai affichées avec les trois cas de figures.
    J'aimerais avoir ton retour pour savoir si cela correspond à ce que tu attendais et pourquoi chez toi cela ne fonctionne pas.

  17. #17
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    La formule fonctionne, Je te remercie pour tout le temps que tu as passé sur le sujet.

    Un grand merci et un grand bravo

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

Discussions similaires

  1. Texte et nombres dans la même formule
    Par Bloubee dans le forum Excel
    Réponses: 2
    Dernier message: 16/12/2011, 01h42
  2. Réponses: 5
    Dernier message: 15/09/2006, 16h13
  3. [HTML] problème avec un text area
    Par krfa1 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 29/10/2004, 11h37
  4. [Flash Mx] Problème de contour texte
    Par tahiti bob dans le forum Flash
    Réponses: 13
    Dernier message: 12/03/2004, 13h52
  5. Problème avec fichier texte
    Par jpdelx dans le forum ASP
    Réponses: 7
    Dernier message: 13/11/2003, 13h17

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