Insertion d'une image dans un Userform

  • Initiateur de la discussion Initiateur de la discussion joums
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

joums

XLDnaute Occasionnel
Bonjour,

Comment faire pour charger une image dans un Userform selon une condition.
Je m'explique :

J'ai 2 combobox qui liste les images dans 2 repertoires diffents
Combobox 1 => répertoire A
Combobox 2 => répertoire B

Je souhaite visualiser ces images dans mon userform où se trouve "Picture"

Ex : Si combobox 1 = image 1.......et combobox image 2
je veux voir SOIT l'image de combobox 1 SOIT l'image de combobox 2
dans mon userform (Picture)

En espérant avoir été clair 😛

Merci de votre aide
A+
 
Re : Insertion d'une image dans un Userform

Bonjour joums,

Je crois comprendre que vous savez charger une image dans un UserForm (utilisation de la propriété Picture).

Par contre ça je ne comprends pas du tout :

Ex : Si combobox 1 = image 1.......et combobox image 2
je veux voir SOIT l'image de combobox 1 SOIT l'image de combobox 2
dans mon userform (Picture)

Quelle est la condition qui pilote les SOIT ???

A+
 
Re : Insertion d'une image dans un Userform

Bonjour,

Je vais essayer d'être plus clair dsl....

En fait comme j'ai 2 combobox (A et B)
et une seule picture (P)
Et que les valeurs des combobox A et B correspondent à des images.
Je souhaite que l'image affiché dans la picture (P) corresponde à la valeur de A ou B.
Je pensais mettre un togglebutton par combobox pour activer l'affichage de la valeur dans picture (P).

Ex : togglebutton A.value = true
then togglebutton B = false
Picture = Activé l'image de Combobox A
Donc on ne voit pas l'image B

Et inversement si on choix B
A n'est pas visible

En espérant être plus compréhensible
Merci









Bonjour joums,

Je crois comprendre que vous savez charger une image dans un UserForm (utilisation de la propriété Picture).

Par contre ça je ne comprends pas du tout :



Quelle est la condition qui pilote les SOIT ???

A+
 
Re : Insertion d'une image dans un Userform

Re,

Bon, la condition c'est l'état d'un ToggleButton.

Mais alors pourquoi 2 ToggleButtons ???

On va y arriver 🙂

A+

Il y a surement d'autre moyen pour arriver à mes fins.
Peut être que mon approche est erronée.

Je souhaite "juste" visualiser l'image dans la zone réservée en sachant qu'il s'agisse bien d'une image de la combobox que l'on souhaite.
Si on avait par exemple 10 combobox, l'image que l'on visualiserai serait celle de la dernière combobox "touchée". Il n'est pas aisée de se rappeler de quelle combobox il s'agissait.
Le togglebutton était un moyen d'activer l'affichage de l'image
si un togglebutton = true TOUS les autres = False donc on sait que l'image appartient à la combobox avec le togglebutton = True

....On va bien finir par trouver une solution, 🙄
enfin j'espere lol
 
Re : Insertion d'une image dans un Userform

Re,

Si je vous suis bien, il faudrait une ComboBox pour choisir laquelle des 10 ComboBox on veut utiliser... Un peu lourd, non ?

Le plus simple me paraît d'afficher la dernière image choisie dans une ComboBox. Pour cela pour chaque ComboBox écrire un code du genre :

Code:
Private Sub ComboBox1_Change()
Dim cheminA$
cheminA = "chemin d'accès répertoire A" 'à définir
Me.Picture = LoadPicture(cheminA & "\" & ComboBox1 & ".jpg")
End Sub

Je suppose que les listes des ComboBox contiennent les noms des fichiers images sans l'extension .jpg.

A+
 
Re : Insertion d'une image dans un Userform

Re,

Si je vous suis bien, il faudrait une ComboBox pour choisir laquelle des 10 ComboBox on veut utiliser... Un peu lourd, non ?

Le plus simple me paraît d'afficher la dernière image choisie dans une ComboBox. Pour cela pour chaque ComboBox écrire un code du genre :

Code:
Private Sub ComboBox1_Change()
Dim cheminA$
cheminA = "chemin d'accès répertoire A" 'à définir
Me.Picture = LoadPicture(cheminA & "\" & ComboBox1 & ".jpg")
End Sub

Je suppose que les listes des ComboBox contiennent les noms des fichiers images sans l'extension .jpg.

A+
Effectivement j'ai écrit ce code pour chaque combobox,
cela marche parfaitement,
seulement j'aimerai un moyen pour indiquer à quel combobox fait référence l'image
(par exemple quand on visualise l'image de la combobox1, il faudrait que l'on sache qu'il s'agit de la combobox1 car les autres combobox ont également une valeur)

Ps : les images sont des .jpg

A+
 
Re : Insertion d'une image dans un Userform

Bonjour joums, le forum,

seulement j'aimerai un moyen pour indiquer à quel combobox fait référence l'image

On a l'embarras du choix pour marquer la dernière ComboBox utilisée.

Par exemple mettre un Label avec le nom du répertoire sous chaque ComboBox. Le code suivant mettra en surbrillance le Label de la dernière (on suppose 10 Labels numérotés de 1 à 10) :

Code:
Private Sub ComboBox1_Change() 'idem pour chaque ComboBox
Dim cheminA$
[COLOR="Red"]If IsError(Application.Match(ComboBox1, ComboBox1.List, 0)) _
  Then ComboBox1 = "": ComboBox1.DropDown: Exit Sub[/COLOR]
Call MarqueLabel("Label1") 'le Label sous la ComboBox
cheminA = "chemin d'accès répertoire A" 'à définir
Me.Picture = LoadPicture(cheminA & "\" & ComboBox1 & ".jpg")
End Sub

Sub MarqueLabel(txt$)
Dim i As Byte
On Error Resume Next 'précaution
For i = 1 To 10 'si 10 Labels numérotés de 1 à 10
Me.Controls("Label" & i).ForeColor = &H80000012 'affichage normal
Next
Me.Controls(txt).ForeColor = &H8000000D 'en surbrillance
End Sub

Par ailleurs j'ai mis en rouge la ligne de code qui oblige à choisir un élément de la liste de la ComboBox.

A+
 
Dernière édition:
Re : Insertion d'une image dans un Userform

Re,

Une autre méthode, sans Labels, on efface simplement les autres ComboBox :

Code:
Private Sub ComboBox1_Change() 'idem pour chaque ComboBox
Dim cheminA$
If IsError(Application.Match(ComboBox1, ComboBox1.List, 0)) _
  Then ComboBox1 = "": ComboBox1.DropDown: Exit Sub
Call EffacePas("ComboBox1")
cheminA = "chemin d'accès répertoire A" 'à définir
Me.Picture = LoadPicture(cheminA & "\" & ComboBox1 & ".jpg")
End Sub

Sub EffacePas(txt$)
Dim i As Byte
On Error Resume Next 'précaution
Application.EnableEvents = False 'désactive l'action des évènements
For i = 1 To 10 'si 10 ComboBox numérotées de 1 à 10
If "ComboBox" & i <> txt Then Me.Controls("ComboBox" & i) = ""
Next
Application.EnableEvents = True
End Sub

A+
 
Dernière édition:
Re : Insertion d'une image dans un Userform

Bonjour Job75,
si j'ai bien compris, Le code suivant mettra en surbrillance le Label de la dernière combobox utilisée...
C'et également une solution qui me satisfait,
je vais tester ce bout de code ce matin et je vous tiens au courant
Encore merci
A+
 
Re : Insertion d'une image dans un Userform

Re,

Une autre méthode, sans Labels, on efface simplement les autres ComboBox :

Code:
Private Sub ComboBox1_Change() 'idem pour chaque ComboBox
Dim cheminA$
If IsError(Application.Match(ComboBox1, ComboBox1.List, 0)) _
  Then ComboBox1 = "": ComboBox1.DropDown: Exit Sub
Call EffacePas("ComboBox1")
cheminA = "chemin d'accès répertoire A" 'à définir
Me.Picture = LoadPicture(cheminA & "\" & ComboBox1 & ".jpg")
End Sub

Sub EffacePas(txt$)
Dim i As Byte
On Error Resume Next 'précaution
Application.EnableEvents = False 'désactive l'action des évènements
For i = 1 To 10 'si 10 ComboBox numérotées de 1 à 10
If "ComboBox" & i <> txt Then Me.Controls("ComboBox" & i) = ""
Next
Application.EnableEvents = True
End Sub

A+

Re,
Désolé mais je n'arrive pas à faire fonctionner cette marcro
Il me semble avoir compris le but, mais peut être que j'insère mal cette macro.
Je copie de le code sur chaque combobox
J'en ai 2, je change le nom des combobox et aussi l'incrémentation
Est la bonne méthode ?
 
Re : Insertion d'une image dans un Userform

Re,

Le plus simple est d'envoyer une copie allégée et/ou zippé de votre fichier avec ce que vous avez essayé de faire.

A+

Re,
voici le code que j'ai mis en place, il fonctionne apparemment
Ca pourra surement aider plusieurs personne
Private Sub ToggleButton2_Click()
If ToggleButton2 = True Then
ToggleButton1 = False
On Error GoTo bug
Dim lien As String
lien = "D:\Nom_dossier\Nom_dossier\" & Nom_ComboBox.Value & "\Nom_dossier\" & Nom_ComboBox.Value & ".jpg"
Controls("Image1").Picture = LoadPicture(Filename:=lien)

Exit Sub
bug:
MsgBox "Je n'ai pas trouvé l'image sur le lien : " & lien
End If
End Sub

A mettre également dans les autres "togglebutton".....

A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
869
Retour