Insertion d'une image sous condition, macro?

Bonjour,

Je souhaite insérer une image dans une cellule en fonction de ce qui est écrit dans deux autres cellules.

La condition du "f" et du "M" entraînant l'apparition de cette image.

J'ai été vers la piste des formules, mais je ne trouve rien d'adapté (combinaison de SI et de ET fonctionne seulement pour du texte).

Je me suis ensuite penché vers la piste VBA via des vidéos youtube mais je n'ai rien trouvé non plus d'intéressant pour mon problème.

Que me suggérez-vous?

PS: je ne maîtrise pas les macros, je pourrai, en suivant des consignes étape par étape.

D'avance merci de vos réponses

Cordialement

Bonjour NeedHelp,

Par VBA, une piste ici: http://boisgontierjacques.free.fr/ dans la rubrique image

Un exemple ci-dessous:

Si f est inscrit en A1 et si M est inscrit en B1, alors on insert une image en C1 (image nommée Ninja dans le répertoire c:\Users\maison\Downloads), si une condition manque, on efface l'image.

Private Sub Worksheet_Change(ByVal Target As Range)   'évènement Change de la feuille

Dim Sh As Shape

répertoirePhoto = "c:\Users\maison\Downloads" ' Répertoire de la photo, à adapter
nom = "Ninja"  'nom de la photo, à adapter

Set c = Range("C1") 'on insert l'image dans C1

With ActiveSheet

If .Range("A1") = "f" And .Range("B1") = "M" Then  'si A1 contient f et si B1 contient M alors

.Pictures.Insert(répertoirePhoto & "\" & nom & ".jpg").Name = nom
.Shapes(nom).Left = c.Left              'on adapte l'image à la taille de la cellule
.Shapes(nom).Top = c.Top                '  ""
.Shapes(nom).LockAspectRatio = msoFalse '  ""
.Shapes(nom).Height = c.Height          '  ""
.Shapes(nom).Width = c.Width            '  ""

Else     'sinon

For Each Sh In Sheets("Feuil1").Shapes
        If Sh.TopLeftCell.Address = Range("C1").Address Then Sh.Delete    'on efface l'image
    Next

End If

End With

End Sub

Alt + F11 pour accéder au code qui est dans la feuille 1

159test-image.xlsm (17.61 Ko)

En espérant que cela t'aide,

Cordialement,

Bonjour xorsankukai,

Merci beaucoup pour ta réponse, c'est exactement la solution à ma problématique.

Pour l'application de ton code, tu as pris le soin de mettre en rouge les termes à modifier pour adapter à mon utilisation, j'ai bien compris le raisonnement sauf pour la ligne de code suivante:

.Pictures.Insert(répertoirePhoto & "\" & nom & ".jpg").Name = nom

Par quoi je dois remplacer les termes en rouge? J'ai essayé avec le chemin du fichier et avec le nom et inversement, mais la ligne de code s'affiche en surbrillance.

J'imagine que la réponse est simple mais cela dépasse mon tout petit niveau...

Encore merci.

Cordialement

Bonjour NeedHelp,

Normalement, tu n'as pas à modifier cette ligne de code

.Pictures.Insert(répertoirePhoto & "\" & nom & ".jpg").Name = nom

C'est sur ces 2 lignes que tu dois agir: ce qui est en rouge....

répertoirePhoto = "c:\Users\maison\Downloads" ' Répertoire de la photo, à adapter
nom = "Ninja"  'nom de la photo, à adapter

ça revient à écrire:

.Pictures.Insert("c:\Users\maison\Downloads\Ninja.jpg").Name = nom

Je ne suis pas très doué pour les explications , pour faire simple, tu modifies le chemin de la photo et son nom.

Par exemple, ta photo s'appelle image1.jpg, son chemin c:\mes documents\mes images

répertoirePhoto = "c:\mes documents\mes images"
nom = "image1" 

ça ne change rien pour

.Pictures.Insert(répertoirePhoto & "\" & nom & ".jpg").Name = nom

Cordialement,

xorsankukai,

J'ai bien fait cela mais lorsque je clique la dessus :

capture

Ce message d'erreur apparait :

capture

Et lorsque je clique sur Débogage j'ai ceci:

capture

Qu'est ce que je ne fais pas bien ?

Cordialement,

Re,

Dans répertoire photo, supprime \1.jpg (après DUER) et ça devrait fonctionner

@+

Re,

Merci beaucoup, cela fonctionne avec ton fichier, j'ai essayé de transposer au mien mais je crois que je n'ai pas bien fait les réglages pour autoriser les macros etc... donc je vais me pencher la dessus.

Maintenant, si je souhaite ajouter d'autres conditions à la même feuille, (même chose mais lettres différentes et image différente), est ce que je peux copier coller le code que tu as écrit (en modifiant ce qu'il y a à modifier), et ainsi avoir plusieurs macros (9) appliquées à une même feuille, OU est ce que toutes les conditions doivent être contenues dans une seule macro?

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

PS: Est-ce important de nommer une macro?

Encore merci,

Cdt

Re,

Je ne vois pas ce qui cloche,

* Ton image se nomme bien 1.jpg ? pas 1.jpeg ou 1.bmp ou 1.png ?

* Il n'y a pas d'erreur dans le chemin du répertoire ? genre un espace en trop, ou une minuscule au lieu d'une majuscule ?

* H, c'est une partition de ton disque dur ?

EDIT

Merci beaucoup, cela fonctionne avec ton fichier, j'ai essayé de transposer au mien mais je crois que je n'ai pas bien fait les réglages pour autoriser les macros etc... donc je vais me pencher la dessus.

Cool , tu me rassures

J'avais édité, ça n'a pas du bien charger ^_^

Bonjour NeedHelp,

Maintenant, si je souhaite ajouter d'autres conditions à la même feuille, (même chose mais lettres différentes et image différente), est ce que je peux copier coller le code que tu as écrit (en modifiant ce qu'il y a à modifier), et ainsi avoir plusieurs macros (9) appliquées à une même feuille, OU est ce que toutes les conditions doivent être contenues dans une seule macro?

Je ne suis pas parvenu à adapter ma macro pour plusieurs photos (petit souci d'affichage des photos), cependant, après quelques recherches, j'ai trouvé une méthode sans macro.

Voir exemple ci-dessous avec 4 images et conditions différentes.

A toi d'adapter à ta situation, n'étant pas un pro, je ne pense pas pouvoir t'aider d'avantage, je passerai donc la main,

Cordialement,

Rechercher des sujets similaires à "insertion image condition macro"