Microsoft 365 Suppression des doublons d'image

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

elmo86

XLDnaute Nouveau
Bonjour à toutes et à tous,

Je suis entrain de réaliser un tableur pour réaliser des documents simplifiés. Les documents en question sont des fiches de données et de sécurité de produits chimiques mais les FDS sont difficiles à la lecture donc je souhaite les simplifier.

J'ai un soucis dans la gestion des doublons de mes pictogrammes de produits chimiques. En effet j'ai réussi à gérer leur affichage (dans l'onglet "FDS_simplifiée") en fonction du contenu de la cellule de référence mais je n'arrive pas à faire en sorte que le pictogramme ne s'affiche qu'une fois.

Je vous joint le fichier.

En vous remerciant par avance,

Cordialement.
 

Pièces jointes

Solution
Bonjour à tous,

Modification de la formule

VB:
=SIERREUR(INDEX(Feuil2!$A$10:$A$18;PETITE.VALEUR(SI(ESTTEXTE(DECALER(Feuil2!$A$9;1;EQUIV(FDS_simplifée!$J$1;Feuil2!$B$1:$H$1;0);9));LIGNE(Feuil2!$A$10:$A$18)-9);1));0)

JHA
Bonjour à tous,

Changement des formules pour la recherche des pictogrammes, en "C5".
VB:
=SIERREUR(INDEX(Feuil2!$A$10:$A$18;PETITE.VALEUR(SI(ESTTEXTE(DECALER(Feuil2!$A$9;1;EQUIV(FDS_simplifée!$J$1;Feuil2!$C$1:$H$1;0)+1;9));LIGNE(Feuil2!$A$10:$A$18)-9);1));0)

JHA
 

Pièces jointes

Bonjour,

Tout d'abord JHA merci pour ta proposition. J'ai regardé le fichier mais en changeant de produit dans l'onglet "FDS_simplifiée" notamment avec le produit C la gestion des images ne fonctionne pas. En effet le produit C n'a aucun pictogramme or sur l'onglet "FDS_simplifiée" il en apparaît 5.

J'espère que je me suis fait comprendre.

Cordialement
 
Bonjour @Gégé-45550 😉

Avec la version 2019, je n'ai pas de pictogramme pour les produits A, B et D.
Pour info j'ai fait un "suppr" sur toutes les cellules vides de l'onglet "Feuil2" de le plage "B10:H18" afin de m'assurer qu'il n'y ai rien dans ces cellules.

As-tu regardé les formules en colonne "V", elles donnent des "0" sur ces produits?

JHA
 
Bonjour @Gégé-45550 😉

Avec la version 2019, je n'ai pas de pictogramme pour les produits A, B et D.
Pour info j'ai fait un "suppr" sur toutes les cellules vides de l'onglet "Feuil2" de le plage "B10:H18" afin de m'assurer qu'il n'y ai rien dans ces cellules.

As-tu regardé les formules en colonne "V", elles donnent des "0" sur ces produits?

JHA
Bonjour JHA et encore bravo pour cette magnifique formule.
J'ai supprimé mon message précédent car j'ai constaté qu'il était inutile mais je l'avais écrit dans un premier temps après avoir connu un phénomène bizarre.
Je m'explique :
Lorsque tu as posté ta deuxième formule (corrective), je n'ai pas re-téléchargé le fichier que tu avais joint, mais j'ai simplement corrigé la formule dans le dossier original et là ... 5 pictos ! ... d'où ma proposition de modification, qui, au passage, fonctionne aussi mais complique inutilement.
Après avoir posté, j'ai quand même téléchargé ton deuxième fichier ... qui marche nickel.
Je n'ai pas cherché à comprendre davantage, j'ai supprimé mon post.
Encore respect pour cette belle formule !
 
Bonjour à tous,

Modification de la formule

VB:
=SIERREUR(INDEX(Feuil2!$A$10:$A$18;PETITE.VALEUR(SI(ESTTEXTE(DECALER(Feuil2!$A$9;1;EQUIV(FDS_simplifée!$J$1;Feuil2!$B$1:$H$1;0);9));LIGNE(Feuil2!$A$10:$A$18)-9);1));0)

JHA
Bonjour,

Je tiens à vous remercier pour la solution proposée, c'est parfait. Juste pour ma culture personnelle, pouvez-vous m'expliquer la construction de la formule pour que je puisse si besoin n'en inspirer pour de prochains travaux?

En vous remerciant par avance,

Cordialement.
 
Bonjour à tous,

Concernant la formule:
VB:
=SIERREUR(INDEX(Feuil2!$A$10:$A$18;PETITE.VALEUR(SI(ESTTEXTE(DECALER(Feuil2!$A$9;1;EQUIV(FDS_simplifée!$J$1;Feuil2!$B$1:$H$1;0);9));LIGNE(Feuil2!$A$10:$A$18)-9);1));0)

Donc on utilise la fonction "index" pour retourner les datas de la plage "Feuil2!$A$10:$A$18" suivant les données des colonnes "Feuil2!$B$10:$H$18".
On commence par rechercher la colonne de recherche avec la fonction "DECALER" suivant le critère en "FDS_simplifée!$J$1"

DECALER(réf, lignes, colonnes, [hauteur], [largeur])

DECALER(Feuil2!$A$9;1;EQUIV(FDS_simplifée!$J$1;Feuil2!$B$1:$H$1;0);9)
Ref Feuil2!$A$9
ligne on descent d'une ligne "1"
colonne EQUIV(FDS_simplifée!$J$1;Feuil2!$B$1:$H$1;0) on recherche le critère sur la plage "Feuil2!$B$1:$H$1"
Hauteur cette plage à 9 lignes.
Exemple pour le produit "C" cela renvoie "{0;0;"Corrosif";0;"Environnement";0;0;0;0}"
Cette formule décaler est complété par la fonction texte() cela renvoie:
"{FAUX;FAUX;VRAI;FAUX;VRAI;FAUX;FAUX;FAUX;FAUX}"
maintenant la plage est définie, on peut désormais rechercher la première valeur "VRAI" puis en donner la position avec petite.valeur.
PETITE.VALEUR({FAUX;FAUX;3;FAUX;5;FAUX;FAUX;FAUX;FAUX};1)) soit la 3ème ligne.
ca qui revient à INDEX(Feuil2!$A$10:$A$18;3)
si il n'y a plus de "vrai", la fonction "si" retournera "0"

Pas simple d'expliquer cette formule matricielle mais j'espère que cela te t'aidera.


JHA
 
Bonjour à tous,

Concernant la formule:
VB:
=SIERREUR(INDEX(Feuil2!$A$10:$A$18;PETITE.VALEUR(SI(ESTTEXTE(DECALER(Feuil2!$A$9;1;EQUIV(FDS_simplifée!$J$1;Feuil2!$B$1:$H$1;0);9));LIGNE(Feuil2!$A$10:$A$18)-9);1));0)

Donc on utilise la fonction "index" pour retourner les datas de la plage "Feuil2!$A$10:$A$18" suivant les données des colonnes "Feuil2!$B$10:$H$18".
On commence par rechercher la colonne de recherche avec la fonction "DECALER" suivant le critère en "FDS_simplifée!$J$1"

DECALER(réf, lignes, colonnes, [hauteur], [largeur])

DECALER(Feuil2!$A$9;1;EQUIV(FDS_simplifée!$J$1;Feuil2!$B$1:$H$1;0);9)
Ref Feuil2!$A$9
ligne on descent d'une ligne "1"
colonne EQUIV(FDS_simplifée!$J$1;Feuil2!$B$1:$H$1;0) on recherche le critère sur la plage "Feuil2!$B$1:$H$1"
Hauteur cette plage à 9 lignes.
Exemple pour le produit "C" cela renvoie "{0;0;"Corrosif";0;"Environnement";0;0;0;0}"
Cette formule décaler est complété par la fonction texte() cela renvoie:
"{FAUX;FAUX;VRAI;FAUX;VRAI;FAUX;FAUX;FAUX;FAUX}"
maintenant la plage est définie, on peut désormais rechercher la première valeur "VRAI" puis en donner la position avec petite.valeur.
PETITE.VALEUR({FAUX;FAUX;3;FAUX;5;FAUX;FAUX;FAUX;FAUX};1)) soit la 3ème ligne.
ca qui revient à INDEX(Feuil2!$A$10:$A$18;3)
si il n'y a plus de "vrai", la fonction "si" retournera "0"

Pas simple d'expliquer cette formule matricielle mais j'espère que cela te t'aidera.


JHA
Merci infiniment, je pense que j'ai compris la construction.

Cordialement
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
85
Affichages
7 K
Retour