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