Images sélectionnées par une liste déroulante

Images sélectionnées par une liste déroulante

On commence par placer les images dans un dossier, j'ai choisi c:\Temp mais cela peut se personnaliser, idem pour le nom des photos, par facilité, je les nomme 01.jpg, 02.jpg etc...
Ensuite, je pose une liste déroulante sur la feuille Word, il s'agit d'une liste déroulante de type ActiveX que je remplis avec le code VBA suivant (pour atteindre le mode VBA faire ALT+F11) j'ai conservé son nom par défaut
Cet événement se produit lorsque j'appuie sur la flèche de la liste déroulante

Private Sub ComboBox1_DropButtonClick()
  ComboBox1.Clear 'Efface le contenu précédent s'il existe
  ComboBox1.AddItem "Marie" 'Ajout
  ComboBox1.AddItem "Julie" 'Ajout
End Sub

Ensuite, on détecte la modification de cette liste et l'on charge une image

Private Sub ComboBox1_Change()
  Maj = UCase(ComboBox1) 'on récupére la valeur choisie dans la liste déroulante
 'on va charger l'image adéquate
  Select Case Maj 'on va sélectionner le bout de code à exécuter suivant la valeur
    Case Is = "JULIE"
    Call EffacerImage 'on doit effacer l'ancienne image s'il en avait déjà une
    Set sh = ActiveDocument.Shapes.AddPicture("c:\temp\01.jpg") 'on désigne l'image correspondante
    With sh
      .RelativeHorizontalPosition = wdRelativeHorizontalPositionMargin
      .Top = CentimetersToPoints(1) 'on choisit la position, en principe en dessous de la liste déroulante
    End With

'même commentaires pour cette autre valeur
    Case Is = "MARIE"
    Call EffacerImage
    Set sh = ActiveDocument.Shapes.AddPicture("c:\temp\02.jpg")
    With sh
      .RelativeHorizontalPosition = wdRelativeHorizontalPositionMargin
      .Top = CentimetersToPoints(1)
    End With
  End Select
End Sub

et ici la procédure pour effacer l'image précédente

Sub EffacerImage()
  For i = ActiveDocument.Shapes.Count To 1 Step -1
    ActiveDocument.Shapes(i).Delete
  Next i
End Sub

Télécharger le fichier exemple ListeDeroulanteImages