Bug de fonction qui renvoie une valeur erronée sur certaines cellules seulement
Résolu
The_Real_GRiz
Messages postés
10
Statut
Membre
-
Vaucluse Messages postés 27336 Date d'inscription Statut Contributeur Dernière intervention -
Vaucluse Messages postés 27336 Date d'inscription Statut Contributeur Dernière intervention -
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...
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...
1 réponse
-
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
-
-
-
-
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. -
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
-