Iferror

Bonjour à tous,

Je traite un fichier et dans la formule de la macro, j'ai cette ligne:

Formula = "=IFERROR(IF(K5=0,""""K5-M5),0)"

Je me demande bien ce que ça voudrais dire.

Merci pour votre assistance.

BrodEva

Bonjour BrodEva,

IF(K5=0,"""",K5-M5) (j'ai ajouté la 2ème virgule manquante) = SI(K5=0;"";K5-M5)

=IFERROR(IF(K5=0,"""",K5-M5),0) = SIERREUR(SI(K5=0;"";K5-M5);0)

si la fonction SI() retourne une erreur telle que #VALEUR!, alors SIERREUR()

remplacera ce message d'erreur par le dernier argument : 0

dhany

voici un complément à ma réponse précédente :

* si K5 contient 10 et M5 contient 2, alors =K5-M5 retourne 10-2 = 8

* si en K5 tu remplaces 10 par la lettre a (par exemple) alors =K5-M5 retourne #VALEUR!

* si en M5 tu remplaces 2 par la lettre b (par exemple) alors =K5-M5 retourne #VALEUR!

donc dans ces 2 cas, pour éviter le texte #VALEUR! car l'utilisateur a tapé une lettre au lieu d'un chiffre, on utilise la fonction SIERREUR() qui retourne soit le résultat du 1er argument si y'a pas d'retour d'un message d'erreur (donc 8), soit le 2ème argument de remplacement du message d'erreur (donc 0 ; celui qui est tout au bout à droite, pas le 0 de Si(K5=0;).


si ton utilisateur tape à la fois a en K5 et b en M5, c'est plus une faute de frappe mais une tentative de sabotage ! mais il en sera quand même pour ses frais, car grâce à SIERREUR(), il arrivera toujours pas à avoir #VALEUR!

dhany

Merci pour la réactivité. Ça ne pourrait être plus claire et précis après vos explications.

Je vous remercie énormément et vous félicite pour votre performance.

MERCI

merci pour ton retour ! bonne continuation !

dhany

bonjour tout le monde,

Je déterre un sujet qui avait été résolu parce que je cherche une formule ou je voudrais ajouter une autre condition à Iferror().

J'avais déjà donné la formule: IFERROR(IF(K5=0,""""K5-M5),0)".

Maitenant, je voudrais rajouter une condition en plus à cette formule qui fera que la différence de K5-M5=0 si M5=0.

comment procédé?

merci pour votre aide.

Bonsoir Brodyeva, dhany, le forum,

Je ne suis pas très doué en formule (ni en vba d'ailleurs) mais si j'ai bien compris :

=SIERREUR(SI(M5=0;0;SI(K5=0;"";K5-M5));0) = = "=IFERROR(IF(M5=0,0,IF(K5=0,"""",K5-M5)),0)"

Donc,

si M5 =0, 0

si K5=0, rien

sinon K5-M5 ? (et si erreur, alors 0)

1classeur1.xlsm (16.47 Ko)

Cordialement,

Bonsoir Brodyeva, xorsankukai,

tu a écrit :

je voudrais rajouter une condition en plus à cette formule qui fera que la différence de K5-M5=0 si M5=0.

est-ce que tu n'aurais pas plutôt voulu dire : « si M5=0 retourner la différence K5-M5 » ?

car on dirait que tu as tapé en trop le premier « =0 » ! si oui :

formule en version française : =SI(OU(M5=0;K5<>0);SIERREUR(K5-M5;0);"")

formule en version anglaise : =IF(OR(M5=0,K5<>0),IFERROR(K5-M5,0),"")


mais p't'être que j'me suis trompé ? alors n'oublie pas de lire le post de xorsankukai :

https://forum.excel-pratique.com/viewtopic.php?p=707223#p707223

ça correspond peut-être mieux à ce que tu attends ?

dhany

Bonjour dhany et xorsankukai,,

Tout d'abord je tiens à vous remercier pour la prise en charge de ma préoccupation.

ensuite, j'essaierai de préciser ma penser.

- J'ai une formule excel avec une condition qui fonctionne déjà:

=IFERROR(IF(K5=0,"""",K5-M5),0) = SIERREUR(SI(K5=0;"";K5-M5);0)

Je voudrais rajouter une autre condition de sorte que, en plus de la première condition ci-haut, je puise obtenir 0 à la différence de (K5-M5)si M5=0. soit (K5-M5=0 si M5=0)

donc 2 conditions:

=IFERROR(IF(K5=0,"""",K5-M5),0) puis IF(M5=0 alors K5-M5=0)

Ouf!!

Merci encore.

tu a écrit :

... puis IF(M5=0 alors K5-M5=0)

quelque chose ne va pas dans ta formulation, car normalement, pour un test IF() :

si la condition X est vraie, alors la cellule de la formule reçoit la valeur A, sinon la cellule de la formule reçoit la valeur B

par exemple, mets en K9 cette formule : =IF(M5=0,10,2)

si M5=0 : K9 reçoit la valeur 10 ; sinon (donc si M5 est différent de 0), K9 reçoit la valeur 2

c'est la cellule où tu as placé la formule qui va contenir le résultat ! on ne peut pas faire :

si M5=0, alors K5-M5=0, sinon autre chose (que tu n'as pas précisé)

dhany

@Brodyeva

en d'autres termes, un signe « = » peut apparaître dans le 1er argument du IF qui est la condition, mais à droite, pour le 2ème argument SIVRAI ou le 3ème argument SIFAUX, on ne peut pas faire une affectation de valeur !

un signe « = » peut apparaître à droite, mais seulement de ce genre (en tant que test, pas en tant qu'affectation de valeur) :

=IF(M5=0,10-(K5=0),5+(K5=0))

donc si cette formule est par exemple en K9, elle signifie :

si M5=0 alors mettre en K9 : 10-1 = 9 si K5=0 ; 10-0 = 10 si K5<>0

sinon (donc si M5<>0), alors mettre en K9 : 5+1 = 6 si K5=0 ; 5+0 = 5 si K5<>0

ainsi, les 2 (K5=0) de la formule sont des tests booléens qui retournent VRAI ou FAUX

et sont respectivement convertis en 0 et 1 dans ces 2 opérations mathématiques :

10-(K5=0) et 5+(K5=0)

ce n'est donc absolument pas des affectations de valeurs ! voilà pourquoi ton IF(M5=0 alors K5-M5=0)

n'est pas une formulation correcte et ne peut pas marcher !

relis l'aide Excel sur la fonction IF() pour mieux en comprendre la syntaxe.

dhany

si tu as besoin de davantage d'aide :

* indique quelle est la cellule X où tu places la formule ; ça évitera de faire des suppositions du genre :

« si tu mets ta formule en K9 » ; ce sera cette cellule X qui reçoit le résultat de la formule.

* donne un exemple chiffré, pour les valeurs de K5, M5, et le résultat attendu en cellule X ; cela pour

chaque cas que tu veux tester.

* envoie ton fichier (sans données confidentielles) ; pour cela, utilise le bouton « Ajouter des fichiers »

qui est situé juste sous la fenêtre d'édition de ton post.

dhany

Rechercher des sujets similaires à "iferror"