Associer une image à une valeur cible

Bonjour à tous,

Et oui, j'ai encore une question sur une macro!!

Je souhaiterais faire apparaître une image dans une cellule en fonction de la valeur d'une autre cellule.

J'ai réussi via la fonction DECALER que j'ai mise dans Insertion/Nom/Définir. Mais malheureusement, cela ne fonctionne que pour la première ligne. Or je souhaite appliquer cette opération sur de nombreuses lignes de mon fichier (à priori plus de 2000).

Je pense donc qu'il faudrait passer par une macro. Mais je ne sais pas comment faire...

Je vous joins un fichier explicatif.

Merci merci merci!!

Bonne après-midi à tous!

Einstein

118images.zip (141.24 Ko)

Re einstein,

Une solution adaptée d'un code de Boisgontier :

293copie-de-images.zip (145.93 Ko)

Re vba-new,

Ouahh!! super!

Mais j'ai quelques difficultés à l'adapter sur mon fichier.

Peux-tu m'expliquer les quelques lignes de code en rouge afin que je comprenne bien à quoi cela fait référence.

Je pense que j'adapte mal la macro à cause de ces zones d'ombre!

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 1 And Target.Count = 1 Then

'-- suppression

For Each s In ActiveSheet.Shapes

If s.Type = 13 Then

If s.TopLeftCell.Address = Target.Offset(0, 1).Address Then

s.Delete

End If

End If

Next s

'--

If Target <> "" Then

lig = [TRUC].Find(Target, LookAt:=xlWhole).Row

col = [TRUC].Column + 1

For Each s In Sheets("Images").Shapes

If s.TopLeftCell.Address = Cells(lig, col).Address Then s.Copy

Next s

Target.Offset(0, 1).Select

ActiveSheet.Paste

Selection.ShapeRange.Left = ActiveCell.Left + 11

Selection.ShapeRange.Top = ActiveCell.Top + 3

Target.Select

End If

End If

End Sub

J'ai vu que tu avais défini une zone avec la fonction DECALER. L'as-tu associée à une cellule en particulier?

Merci vba new!

Einstein

On boucle sur les "objets" de la feuille active. Si l'objet est une image (Type = 13) et si elle se trouve dans la cellule à droite (If s.TopLeftCell.Address = Target.Offset(0, 1).Address) on la supprime pour la réafficher après.

L'instruction ActiveCell.Left est là pour définir la position gauche de l'image.

L'instruction ActiveCell.Top c'est pour définir la position supérieure (le haut) de l'image.

Le +11 et le +3 c'est pour ajuster la position de l'image pour qu'elle soit à peu près au milieu de ta cellule.

Un truc très utile pour connaître la signification d'un mot VBA est de placer ton curseur sur ce mot et d'appuyer sur F1 dans ton éditeur vba.

Merci beaucoup pour toutes ces explications vba new!

C'est très sympa de ta part d'avoir éclairé ma lanterne!!!

Excellente soirée à toi

Einstein

Si tu repasses par là,

Ça vaut pour les autres posts aussi

Bonjour,

Étant novice, j'espère ne pas trop passer pour un boulet a vos yeux!!!!

J'ai bien essayer de bidouiller quelques choses a partir du fichier "copie images" qui est exactement ce que je cherche, mais quand je l'adapte a mon fichier cela ne marche pas!!!

l'image ne s'affiche pas.

Mes image à afficher sont dans l'onglet Base

je joint le fichier.

A l'aide!!!!!!!!

Merci d'avance

117matrice-ventes-3.xlsm (162.87 Ko)

Bonsoir et bienvenue

Le code adapté à ta présentation (image dans la colonne de gauche)

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = 2 And Target.Count = 1 Then
    '-- suppression
    For Each s In ActiveSheet.Shapes
       If s.Type = 13 Then
          If s.TopLeftCell.Address = Target.Offset(0, -1).Address Then
             s.Delete
          End If
       End If
     Next s
     '--
     If Target <> "" Then
        lig = [Reference].Find(Target, LookAt:=xlWhole).Row
        col = [Reference].Column - 1
        For Each s In Sheets("Base").Shapes
          If s.TopLeftCell.Address = Cells(lig, col).Address Then s.Copy
        Next s
        Target.Offset(0, -1).Select
        ActiveSheet.Paste
        Selection.ShapeRange.Left = ActiveCell.Left + 11
        Selection.ShapeRange.Top = ActiveCell.Top + 3
        Target.Select
      End If
    End If
End Sub

Amicalement

Nad

Merci bcp Nad,

Mais il n'y a que la premiere ligne en A5 ou l'image apparait et si ce n'est pas trop abuser j'aimerais que les photos soit sur tous les jour du mois.

la je n'arrive qu'a afficher la cellule A5

Merci d'avance.

Paky

Bonjour,

Merci Nad, grace a toi ca marche les photos s' affichent correctement, mais il me reste un dernier probleme.

J'aimerai pouvoir afficher les photos sur les autres jours du mois.

Merci d'avance.

Paky

Rechercher des sujets similaires à "associer image valeur cible"