Excel : Afficher une image et condition SI
Fermé
JB_A
Messages postés
301
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
13 février 2018
-
14 mars 2009 à 23:04
cjard1 - 12 août 2020 à 15:03
cjard1 - 12 août 2020 à 15:03
A voir également:
- Excel afficher image selon valeur cellule
- Frédéric cherche à faire le buzz sur les réseaux sociaux. il a ajouté une image de manchots sur une image de plage. retrouvez l'image originale de la plage. que cachent les manchots ? ✓ - Forum Windows
- Excel cellule couleur si condition texte - Guide
- Aller à la ligne dans une cellule excel - Guide
- Liste déroulante excel - Guide
- Afficher toutes les lignes masquées excel ✓ - Forum Excel
3 réponses
wilfried_42
Messages postés
907
Date d'inscription
mardi 19 août 2008
Statut
Contributeur
Dernière intervention
8 décembre 2009
244
Modifié par crapoulou le 26/01/2017 à 22:09
Modifié par crapoulou le 26/01/2017 à 22:09
Bonjour J_BA, Raymond
Cette formule doit le faire :
le 2eme critère est optionnel, si les images sont dans le même répertoire que le classeur
Mais avant : (je triche raymond, rassure toi, la fonction d'affichage d'image n'existe pas dans Excel)
tu vas dans le VBA : Click droit sur le nom de l'onglet / Visualiser le code
tu changes de fenêtre et tu arrives Sur VBA
Menu Insertion / Module
et tu fais un copier coller des lignes ci-dessous
La fonction adapte la taille de l'image à la taille de la cellule, si ce sont des cellules fusionnées, elle en tient compte
Cordialement
Wilfried
ps: n'oubliez pas de mettre votre fil sur résolu quand vous obtenez ce que vous cherchez. Merci
Cette formule doit le faire :
=Si(A1="OUI";Image("Monfichier.jpg";"MonChemin");image(""))
le 2eme critère est optionnel, si les images sont dans le même répertoire que le classeur
Mais avant : (je triche raymond, rassure toi, la fonction d'affichage d'image n'existe pas dans Excel)
tu vas dans le VBA : Click droit sur le nom de l'onglet / Visualiser le code
tu changes de fenêtre et tu arrives Sur VBA
Menu Insertion / Module
et tu fais un copier coller des lignes ci-dessous
Function Image(img_nom As Variant, Optional chemin As String = "") As String ' Declaration des variables Dim ref As Range, sh As Shape, drap As Boolean ' ref : la cellule qui provoque la fonction ' sh : les shapes ' Drap : drapeau definissant si la shape est trouvée Application.Volatile ' defini une fonction qui se recalcule automatiquement ' teste le type de variable soit une cellule soit une valeur alphanumerique Select Case TypeName(img_nom) Case "Range" ' c'est une reference cellule Image = img_nom.Value Case "String" ' c'est une valeur alphanumerique Image = img_nom Case Else ' c'est une erreur Image = "#ERROR" Exit Function End Select ' le chemin est un parametre optionnel, s'il est omis, la valeur est le chemin du classeur If chemin = "" Then chemin = ThisWorkbook.Path ' le chemin ne se termine pas forcemment par \ je le rajoute If Right(chemin, 1) <> "\" Then chemin = chemin & "\" Set ref = Application.Caller ' affectaction à ref de la cellule qui lance la fonction If ref.MergeCells = True Then Set ref = Range(ref.MergeArea.Address) drap = False ' initialisation du drapeau For Each sh In ref.Worksheet.Shapes ' je passe en revue toute les shapes ' je teste son nom construite plus bas pour savoir si c'est la bonne shappe If "Img-" & ref.Address = Left(sh.Name, Len(ref.Address) + 4) Then drap = True: Exit For Next If drap = True Then ' c'est la bonne shape ' je teste maintenant si c'est la meme que celle de la formule pour ne pas refaire le traitement ' Le gain de temps n'est pas negligeable If "Img-" & ref.Address & "-" & Image = sh.Name Then GoTo fin ' egalité parfaite, je sors End If On Error Resume Next ' controle d'erreur, si la shape n'existe pas encore, l'instruction suivante provoque une erreur sh.Delete ' je detruits la shap If Image = "" Then Exit Function ' la valeur est à "" alors pas de shape à affecter ' j'inserre la shape, avec l'image en lui mettant les tailles necessaires pour la cellule Set sh = ref.Worksheet.Shapes.AddPicture(chemin & Image, True, True, ref.Left, ref.Top, ref.Width, ref.Height) sh.Name = "Img-" & ref.Address & "-" & Image ' je definis son nom pour la trouver plus tard fin: Image = "Img" & ref.Address ' j'affecte un nom pour resultat End Function
La fonction adapte la taille de l'image à la taille de la cellule, si ce sont des cellules fusionnées, elle en tient compte
Cordialement
Wilfried
ps: n'oubliez pas de mettre votre fil sur résolu quand vous obtenez ce que vous cherchez. Merci
25 janv. 2018 à 18:06
Bravo et merci encore.
12 août 2020 à 15:03
Super le tuyau, cela fonctionne bien à mon niveau, par contre, une fois que l'image est apparue elle ne s'enlève pas si la valeur de la cellule ne correspond plus, il y a t-il moyen de l'enlever si changement de valeur dans la cellule ?