Bug de fonction qui renvoie une valeur erronée sur certaines cellules seulement

Résolu/Fermé
The_Real_GRiz Messages postés 8 Date d'inscription mercredi 30 janvier 2019 Statut Membre Dernière intervention 7 février 2019 - Modifié le 30 janv. 2019 à 15:46
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 - 31 janv. 2019 à 12:47
Bonjour,

J'utilise un tableau excel pour des références
Une première feuille est une liste de recettes avec dans la colonne D les ingrédients, dans la colonne D la proportion, la colonne E le numéro de référence et la F le taux d'alcool de l'ingrédient.
Les colonnes D et E sont rentrées manuellement
Les colonnes E et F sont obtenues en utilisant la fonction suivante : (exemple pour la ligne 55)
=SI(SOMMEPROD((D55=Tableau2[Produit])*1)>0;RECHERCHE(D55;Tableau2[Ingrédient];Tableau2[Degré d''alcool]);"Pas d'article")

La fonction appelle donc des valeurs rentrées manuellement dans un tableau sur la feuille 3 qui contient les références de chaque ingrédient

Mon bug est que pour certains ingrédients (en l'occurence la ligne 54)la valeur sur la feuille 1 pour l'ingrédient "vermouth otto's" renvoie la référence et le degré d'alcool de "mix concombre" qui est la dernière ligne des références. si j'ajoute une ligne de référence, les cellules buguées des ingrédients renverront les valeurs de la dernière ligne des références

c'est également le cas pour quelques autres ingrédients

Cependant les valeurs semblent correctes pour les autres lignes...

Je suis incapable de comprendre pourquoi...
A voir également:

1 réponse

Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 394
30 janv. 2019 à 15:22
Bonjour
1° je ne vois pas l'utilité de la fonction SOMMEPROD dans la formule
2° la fonction de RECHERCHE telle qu'elle est écrite nécessite que les champs soit classés en ordre croissant , ce qui n'est sûrement pas le cas
essayez ceci (à partir d'Excel 2007)
=SIERREUR(INDEX(Tableau2[Degré d''alcool]);EQUIV(D55;Tableau2[Ingrédient];0));"Pas d'article")
n'oubliez pas le 0 en fin du code EQUIV
crdlmnt
0
The_Real_GRiz Messages postés 8 Date d'inscription mercredi 30 janvier 2019 Statut Membre Dernière intervention 7 février 2019 1
30 janv. 2019 à 15:51
Merci de votre réponse
j'avais piqué la formule dans un autre post que je ne retrouve plus, la fonction sommeprod servait à éviter les cases vides si je me souviens bien
Avec votre fonction, excel m'indique un nombre d'argument invalides
0
The_Real_GRiz Messages postés 8 Date d'inscription mercredi 30 janvier 2019 Statut Membre Dernière intervention 7 février 2019 1
30 janv. 2019 à 16:30
j'ai trouvé la solution à partir de votre réponse sans trouver une explication plus logique
Comme il faut effectivement que les références soient classées par ordre croissant, j'ai donc appliqué un tri automatique par ordre alphabétique et le problème semble avoir disparu.
Merci encore
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 394
30 janv. 2019 à 17:49
si votre code exige le classement c'est que vous n'avez pas terminé le code EQUIV par ;0) (comme recommandé à la fin de mon message) avec cet argument le classement n'est pas obligatoire pour trouver une valeur exacte
0
The_Real_GRiz Messages postés 8 Date d'inscription mercredi 30 janvier 2019 Statut Membre Dernière intervention 7 février 2019 1
31 janv. 2019 à 12:29
Non, j'ai du effectuer le classement pour garder ma fonction, c'est un peu contrariant de devoir classer par ordre alphabétique à chaque fois que j'entre de nouvelles références mais ça fait le travail.
Quant à votre fonction, je l'ai copiée collée pour éviter les erreurs (et ne pas oublier le 0 par exemple) mais excel m'a affiché "erreur, nombre d'arguments invalides" sans me préciser quelle fonction n'a pas le bon nombre d'arguments.
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 394
31 janv. 2019 à 12:47
Je maintiens toutefois que cette formule fonctionne correctement, à moins que l'utilisation des adresses tableau intervienne dans le fonctionnement (mais ce serait surprenant

auquel cas il faudrait rajouter une point virgule avant EQUIV

=SIERREUR(INDEX(Tableau2[Degré d''alcool]);;EQUIV(D55;Tableau2[Ingrédient];0));"Pas d'article")
et bien entendu si Ingredient et Degré d'alcool sont des champs à une seule colonne
voyez cet exemple
https://mon-partage.fr/f/QPj00pUj/
crdlmnt
0