Afficher une image suivant le contenu d'une case ou en cliquant dessus
But: on veut afficher une image différente suivant le contenu de la case A1 et aussi obtenir une possibilité de changement lorsque l'on clique sur l'image donc obtenir ceci :
1er Cas : Sur une Feuille
Pour atteindre le but, nous avons besoin de macros que voici :
La première réagit sur l'événement "Worksheet_Change(ByVal Target As Range)"; ce qui correspond en fait à n'importe quel changement dans une cellule de la feuille. On y définit alors que l'on ne s'intéresse qu'à la case A1; on transforme le contenu de A1 en majuscule pour éviter les déconvenues si l'utilisateur ne respecte pas la casse et un petit "select case" nous permet de charger l'image que l'on désire
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range, Maj As String
'on fait une boucle car on pourrait ajouter
'des tests sur différentes cases
For Each c In Range("A1")
'on place le contenu de la case A1 en majuscule
'on ne se préoccupe pas ainsi de la manière
'dont c'est écrit Marie, MaRiE,etc ...sont bons
Maj = UCase(Range("A1"))
'on va charger l'image adéquate
Select Case Maj
Case Is = "JULIE"
Feuil1.Image1.Picture = LoadPicture("c:\temp\01.jpg")
Case Is = "MARIE"
Feuil1.Image1.Picture = LoadPicture("c:\temp\02.jpg")
End Select
Next
End Sub
La seconde procédure réagit lorsque l'on clique sur l'image, elle appelle un module qui fera ouvrir une inputbox que l'on doit ici remplir avec "A" ou "B", il est certain que l'on peut définir ce que l'on veut, on aurait pu redemander à entrer "marie" et "julie"
Private Sub Image1_Click()
Call image 'appel d'une autre procédure
End Sub
'Code du module
Option Explicit
Sub image()
Dim im As image
Dim reponse As String
reponse = InputBox("Quelle image ?", "Répondre A-B-C-D ou E")
Select Case reponse
Case "B"
Feuil1.Image1.Picture = LoadPicture("c:\temp\01.jpg")
Case "A"
Feuil1.Image1.Picture = LoadPicture("c:\temp\02.jpg")
Case "C"
Feuil1.Image1.Picture = LoadPicture("c:\temp\03.jpg")
Case "D"
Feuil1.Image1.Picture = LoadPicture("c:\temp\04.jpg")
Case "E"
Feuil1.Image1.Picture = LoadPicture("c:\temp\05.jpg")
End Select
End Sub
2ème Cas : Sur un UserForm
Créer le formulaire en posant un contrôle combobox et un contrôle image (traits rouges)
Dans les propriétés du contrôle image, modifiez son mode d'affichage pour que l'image se redimensionne automatiquement à la taille du contrôle
Entrez ensuite le code suivant pour les contrôles respectifs - initialisation du formulaire et remplissage automatique de la combobox
Option Explicit
'***** le contenu de la combobox vient complèter
'***** le nom du fichier - image qui est en jpg
Private Sub ComboBox1_Change()
UserForm1.Image1.Picture = LoadPicture("C:\temp\" &
ComboBox1 & ".jpg")
End Sub
'**** Remplir la combobox ******
Private Sub UserForm_Initialize()
Dim c As Range
ComboBox1.Clear
For Each c In Range("A1:A5")
ComboBox1.AddItem c
Next
End Sub
Voici ce que vous devez obtenir après la première sélection
Placez des images dans le dossier c:/temp/ et renommez les 01.jpg; 02.jpg. Plus un fichier MARIE.jpg et JULIE.jpg.
Téléchargez le fichier exemple AfficherUneImage