Afficher une image en fonction du contenu de la cellule

fanny_746

XLDnaute Nouveau
Bonjour à tous,

J'utilise un tableau Excel pour suivre le stock de plus de 300 produits chimiques dans une entreprise. Je cherche à améliorer la lisibilité de ce tableau en intégrant des pictogrammes, pour la toxicité des produits notamment.

Je souhaite donc, en fonction du contenu de la cellule (F, Xn, Xi...) faire apparaître automatiquement le pictogramme de danger correspondant dans la même cellule, ou la cellule juste à côté...

J'ai essayé plusieurs méthodes qui fonctionnent en m'inspirant des archives de ce forum :
- affichage d'une image en fonction d'un menu déroulant (fonction DECALER)
- utilisation de la fonction SI (Photo=SI(Feuil1!$J$3="N";Feuil1!$B$2;Feuil1!$B$1)
... mais je ne m'en sort pas, je dois définir un nom, donc une formule pour chaque image !

Je pense que c'est possible, par l'intermédiaire d'une macro peut-être (si c'est vraiment nécessaire...) mais là je suis perdue...
Quelqu'un a-t-il une solution à mon problème ? :confused:
Je n'ai peut-être pas été très claire donc vous trouverez ci-joint une présentation simplifiée de mon tableau...

Merci d'avance.
Fanny
 

Pièces jointes

  • Affiche Image suivant Cellule.xls
    44 KB · Affichages: 860

fanny_746

XLDnaute Nouveau
Re : Afficher une image en fonction du contenu de la cellule

Sans vouloir abuser de ton savoir...
Je me retrouve maintenant avec un autre cas de figure :
Pour faire simple, j'ai une colonne programmée pour afficher 1 ou 2 ou rien, en fonction du contenu des colonnes précédentes. J'aimerais qu'à la place du 1 s'affiche l'image1, à la place du 2 s'affiche l'image2, ou rien si la cellule est vide...
J'ai essayé d'adapter ta macro précédente mais je m'y perd !
Ci joint mon tableau,
Merci d'avance.
 

Pièces jointes

  • CMR.xls
    15.5 KB · Affichages: 216
  • CMR.xls
    15.5 KB · Affichages: 172
  • CMR.xls
    15.5 KB · Affichages: 184

fanny_746

XLDnaute Nouveau
Re : Afficher une image en fonction du contenu de la cellule

Bonjour JB,
Ci-joint une partie de mon tableau.
Toute l'explication se trouve dans le fil, mais si tu as des questions, n'hésite pas.
Bonne journée.
 

Pièces jointes

  • Images.zip
    30 KB · Affichages: 163
  • Images.zip
    30 KB · Affichages: 145
  • Images.zip
    30 KB · Affichages: 226

fanny_746

XLDnaute Nouveau
Re : Afficher une image en fonction du contenu de la cellule

Merci Jouxte mais je n'ai pas bien compris l'exemple que l'on trouve via ton lien...
Je cherche qqch de plus simple, sans l'intervention d'une macro si possible.
Une colonne :
- si cellule = "1", Image1 s'affiche dans la cellule
- si cellule = "2", Image2 s'affiche dans la cellule
Merci pour ton aide,
Fanny.
 

wilfried_42

XLDnaute Barbatruc
Re : Afficher une image en fonction du contenu de la cellule

Bonjour à tous

J'ai pas mal travaillé sur les images ces derniers temps (A cause de toi :D)

Voici 3 fichiers, Dont un qui remplace la precedente macro complementaire que je t'ai fournie (le .xla)

Un fichier exemples d'affichage d'images à l'aide de :
1- listes de validation
2- ComboBox de type formulaire
3- Combobox de type boite de controle
4- Menus Contextuels
 

Pièces jointes

  • photos.zip
    35.2 KB · Affichages: 98
  • Images.zip
    36.8 KB · Affichages: 111
  • Gw_mfc_V7.zip
    32.6 KB · Affichages: 106
  • photos.zip
    35.2 KB · Affichages: 103
  • Images.zip
    36.8 KB · Affichages: 105
  • Gw_mfc_V7.zip
    32.6 KB · Affichages: 114
  • photos.zip
    35.2 KB · Affichages: 104
  • Images.zip
    36.8 KB · Affichages: 116
  • Gw_mfc_V7.zip
    32.6 KB · Affichages: 120

wilfried_42

XLDnaute Barbatruc
Re : Afficher une image en fonction du contenu de la cellule

re: (Suite à MP)

regarde la macro de copie, elle fonctionne bien mais regarde avant la feuil2, j'ai preparé la reception en formatant les lignes de la bonne Hauteur et le colonnes De la bonne largeur

ton fichier en retour
 

Pièces jointes

  • fanny.zip
    30 KB · Affichages: 118
  • fanny.zip
    30 KB · Affichages: 110
  • fanny.zip
    30 KB · Affichages: 100

fanny_746

XLDnaute Nouveau
Re : Afficher une image en fonction du contenu de la cellule

Wilfried,

Je ne peux pas vraiment adapter ta macro à la mienne car la macro source est complexe (cf. ci-dessous) : elle filtre et extrait des données de plusieurs classeurs, qui sont copiées dans un modèle de doc ("VOTREARMOIRE").

Elle est un peu indigeste :p mais tu trouveras en gras ce que j'ai rajouté pour copier mes colonnes contenant les picto... et le résultat sur le fichier ci-joint.

Je ne sais pas trop comment faire, j'ai l'impression que c'est lors de l'extraction que ça beugue... Je pensais à essayer d'extraire seulement les croix et mettre une macro dans la feuille de destination pour que quand elle repère une "x", l'image soit automatiquement insérée (cad adapter ta macro).

Qu'en penses-tu ?



' Mis à jour le 05/09/2007

Const Bas_Tablo = 363 'indice dernière ligne STOCKMAX : A EVENTUELLEMENT ACTUALISER !!!

Public Date_Maj As String
Public Nom_Corr As String
Public Nom_Gest As String
Public Nom_Service As String
Public Nom_UE As String
Public VArmoire As String


Private Sub Commandbutton1_Click()
' Gestionnaire d'erreurs
On Error GoTo DesErreurs

' Mémorise le choix d'armoire PC
VArmoire = UserForm1.ComboBox1

' Cherche la colonne de l'APC choisie
i = 29 'indice "0" des colonnes armoires : A EVENTUELLEMENT ACTUALISER !!!
Do
i = i + 1
Loop Until Cells(10, i) = VArmoire

' Sélectionne la feuille STOCKMAX et filtre la colonne APC (choisie dans le combo) avec valeurs <> 0
Worksheets("STOCKMAX").Range(Cells(12, i).Address & ":" & Cells(Bas_Tablo, i).Address).AutoFilter _
Field:=i, Criteria1:="<>"

' Efface données de VOTREARMOIRE et copie les nouvelles de STOCKMAX vers VOTREARMOIRE
Worksheets("VOTREARMOIRE").Range("A7:F11").ClearContents
Worksheets("VOTREARMOIRE").Range("A16:W" & Bas_Tablo).ClearContents
Worksheets("STOCKMAX").Range("B12:E" & Bas_Tablo).Copy
Worksheets("VOTREARMOIRE").Paste Destination:=Worksheets("VOTREARMOIRE").Range("A16")
Worksheets("STOCKMAX").Range("H12:H" & Bas_Tablo).Copy
Worksheets("VOTREARMOIRE").Paste Destination:=Worksheets("VOTREARMOIRE").Range("W16")
Worksheets("STOCKMAX").Range(Cells(12, i).Address & ":" & Cells(Bas_Tablo, i).Address).Copy
Worksheets("VOTREARMOIRE").Paste Destination:=Worksheets("VOTREARMOIRE").Range("V16")
Worksheets("STOCKMAX").Range("I12:R" & Bas_Tablo).Copy
Worksheets("VOTREARMOIRE").Paste Destination:=Worksheets("VOTREARMOIRE").Range("E16")

Worksheets("STOCKMAX").Range("T12:AA" & Bas_Tablo).Copy
Worksheets("VOTREARMOIRE").Paste Destination:=Worksheets("VOTREARMOIRE").Range("N16")


' Cherche les infos l'amoire dans la feuille Armoires
Sheets("Armoires").Select
w = 1
While Cells(w, 1).Value <> ""
If Cells(w, 1).Value = VArmoire Then
Activité = Cells(w, 2).Value
Info_Compl = Cells(w, 3).Value
Nom_Corr = Cells(w, 4).Value
Nom_Gest = Cells(w, 5).Value
Date_Maj = Cells(w, 6).Value
Commentaire = Cells(w, 7).Value
End If
w = w + 1
Wend

' Ferme le userform
UserForm1.Hide

' Selection de VOTRE ARMOIRE et ajout des infos en entête
Worksheets("VOTREARMOIRE").Select
Worksheets("VOTREARMOIRE").Cells(3, 23).Value = Date_Maj
Worksheets("VOTREARMOIRE").Cells(5, 4).Value = "" & VArmoire
Worksheets("VOTREARMOIRE").Cells(7, 1).Value = "Activité"
Worksheets("VOTREARMOIRE").Cells(7, 4).Value = Activité
Worksheets("VOTREARMOIRE").Cells(8, 4).Value = Info_Compl
Worksheets("VOTREARMOIRE").Cells(9, 4).Value = Commentaire
Worksheets("VOTREARMOIRE").Cells(10, 1).Value = "Correspondant(e)"
Worksheets("VOTREARMOIRE").Cells(10, 4).Value = Nom_Corr
Worksheets("VOTREARMOIRE").Cells(11, 1).Value = "Gestionnaire(s)"
Worksheets("VOTREARMOIRE").Cells(11, 4).Value = Nom_Gest
i = 16
Do
i = i + 1
Loop Until Cells(i, 4) = ""
Worksheets("VOTREARMOIRE").PageSetup.PrintArea = Cells(1, 1).Address & ":" & Cells((i - 1), 23).Address

' Lance la page en printpreview
Worksheets("VOTREARMOIRE").PrintPreview

Exit Sub
DesErreurs:
If Err.Number = 91 Then
Date_Maj = Cells(5, 6).Value
Resume Next
End If

End Sub

Private Sub userform_activate()
' Gestionnaire d'erreurs
On Error GoTo DesErreurs
' Efface le combo et charge les infos dedans
UserForm1.ComboBox1.Clear
UserForm1.ComboBox1.AddItem "APC 1"
UserForm1.ComboBox1.AddItem "APC 2"
UserForm1.ComboBox1.AddItem "APC 3"
UserForm1.ComboBox1.AddItem "APC 4"
UserForm1.ComboBox1.AddItem "APC 5"
UserForm1.ComboBox1.AddItem "APC 6"
UserForm1.ComboBox1.AddItem "Bac C"
UserForm1.ComboBox1.AddItem "Bac D"
UserForm1.ComboBox1.AddItem "APC 7"
UserForm1.ComboBox1.AddItem "Frigo plasturgie"
UserForm1.ComboBox1.AddItem "APC 8"
UserForm1.ComboBox1.AddItem "APC 9"
UserForm1.ComboBox1.AddItem "APC 10"
UserForm1.ComboBox1.AddItem "APC 11"
UserForm1.ComboBox1.AddItem "APC 12"
UserForm1.ComboBox1.AddItem "APC 13"
UserForm1.ComboBox1.AddItem "APC 14"
UserForm1.ComboBox1.AddItem "APC 15"
UserForm1.ComboBox1.AddItem "Bac E"
UserForm1.ComboBox1.AddItem "APC 16"
UserForm1.ComboBox1.AddItem "APC 17"
UserForm1.ComboBox1.AddItem "APC 18"
UserForm1.ComboBox1.AddItem "Bac dégraisseur"
UserForm1.ComboBox1.AddItem "Bac A"
UserForm1.ComboBox1.AddItem "Bac B"
UserForm1.ComboBox1.AddItem "Soute peinture"
UserForm1.ComboBox1.AddItem "APC 19"
UserForm1.ComboBox1.AddItem "APC 20"
UserForm1.ComboBox1.AddItem "Local produits d'entretien"
' Selectionne STOCKMAX et supprime les filtres
Worksheets("STOCKMAX").Select
Worksheets("STOCKMAX").ShowAllData
Exit Sub
DesErreurs:
If Error = "La méthode ShowAllData de la classe Worksheet a échoué." Then
Resume Next
End If
End Sub
 

Pièces jointes

  • Classeur1.xls
    39 KB · Affichages: 151
  • Classeur1.xls
    39 KB · Affichages: 166
  • Classeur1.xls
    39 KB · Affichages: 184

wilfried_42

XLDnaute Barbatruc
Re : Afficher une image en fonction du contenu de la cellule

Re:

j'ai vu, mais je n'ai pas vaincu :confused:

Bon tes croix se mettent bien, les images, issues d'une feuille de taille et de position differente, se mettent n'importe ou ! :eek:

Donc supprimer les images dans la feuille de reception, (tu as la procedure dans le dernier fichier joint) et adapter le macro pour integrer les images en fonction des croix et de la taille de la cellule !

ai je tout compris ?

@ te lire
 

fanny_746

XLDnaute Nouveau
Re : Afficher une image en fonction du contenu de la cellule

C'est bien ça :)
Mais il faut que je précise la situation : mon fichier de suivi des produits est partagé, les responsables de labo y sélectionnent leur armoire de produits chimiques et grâce à la macro indigeste précédente, ils peuvent directement récupérer la feuille de stock de l'armoire, l'imprimer et l'afficher...
Donc : il faudrait que la macro supprime comme une grande les images qu'elle a mis n'importe où dans la feuille de réception, et qu'elle intègre automatiquement les picto sur les croix (sans avoir à cliquer), ceci à la taille de la cellule ; tout cela pour que la personne ait simplement à cliquer sur "Imprimer".
Si j'y crois très très fort, peut-être que ça pourra marcher ?! :p
 

Discussions similaires

Réponses
9
Affichages
146

Statistiques des forums

Discussions
312 046
Messages
2 084 839
Membres
102 685
dernier inscrit
med_remi021