Photo dans un UserForm

G

G'Claire

Guest
Salut le forum,

J'ai un UserForm dans lequel je saisie des données dans des textbox qui une fois valider alimente ma feuille.

Dans ce UserForm, j'aimerai ajouter une photo (Dans un label, ou autre moyen ) montrant le produit qui serait un fichier JPEG enregistré dans un dossier, en validant en même temps que les autres données.

Une fois la validation faite j'ai possibiliter de faire une recherche, par un autre UserFom.

Serait-il possible d'avoir la synthaxe du code,

Je ne sais pas si cela est claire.

Je vous remercie par avance, G'Claire
 
M

michel

Guest
Bonsoir GClaire

ci joint un exemple qui j'espere pourra t'aider :
dans le premier userform tu renseignes le tableau
( un combobox liste toutes les images JPG du repertoire ou se trouve le classeur . tu selectionnes le nom du fichier qui t'interesse pour le lier aux autres données )
dans le deuxieme userform , quand tu selectionnes un libellé , les infos et l'image associée s'affichent à l'écran


bonne soirée
michel
lapin4.gif
 

Pièces jointes

  • PhotoUserform.zip
    45.6 KB · Affichages: 97
G

G'Claire

Guest
Michel, le forum,

C'est le principe excta de ce que je recherche, je vais décortiquer un peu tout cela car, je ne peu pas faire une recherche par ComboBox en raison d'un nombre de fiche important et la recherche dans la comboBox serait fastidieuse.

J'essaye de modifier ton code car je pensait a un numéro qui est en colonne A,

Es-ce qu'il serai possible d'utiliser ce numéro et en rajoutant ".jpeg" au moment de la sélection dans la ListBox, car j'enregistrerai cette photo dans le dossier par rapport a ce numéro.

Merci pour ton aide, G'Claire
 
M

Michel

Guest
Bonjour G'Claire

je ne suis pas sur d'avoir bien compris ta demande
dans cette nouvelle version les images associées doivent etre nommées de la meme façon que les references de la colonne A , et toujours stockés dans le meme repertoire que le classeur . il y a possibilité de l'adapter à un autre repertoire si tu preferes .

bonne journée à toi et au forum
michel
lapin4.gif
 

Pièces jointes

  • PhotoUserformv02.zip
    44.8 KB · Affichages: 66
G

G'Claire

Guest
Michel, le forum,

Merci, pour ta réponse, je comprends a peu prés le principe, mais je n'arrive pas a faire afficher dans la listBox la colonne référence, es-ce qu'il y a autre chose que les macro VBA?

Merci G'Claire
 
M

Michel

Guest
rebonjour G'Claire

il n'y a que la procedure ci dessous pour alimenter la listbox

Private Sub UserForm_Initialize()
Dim Cible As Range
For Each Cible In Range("B2:B" & Range("B65536").End(xlUp).Row)
ListBox1.AddItem Cible
Next
End Sub

si tu veux récuperer les references de la colonne A , il faut écrire

For Each Cible In Range("A2:A" & Range("A65536").End(xlUp).Row)
ListBox1.AddItem Cible

et ensuite adapter la procedure Listbox_Click
j'ai apporté les modifications dans le classeur joint


bonne soirée
michel
lapin4.gif
 

Pièces jointes

  • PhotoUserformV03.zip
    16.7 KB · Affichages: 81
G

G'Claire

Guest
Michel, le forum

Merci pour ton aide, j'utilise en faite ton code que tu as mis dans le TextBox, en mettant a la place de ListBox , TextBox, comme ceci.

Private Sub ListBox1_Click()
Dim Cell As Object

On Error GoTo gestion

With Range("A2:A" & Range("A65536").End(xlUp).Row)
Set Cell = .Find(ListBox1, LookIn:=xlValues)
Label1 = Cell.Offset(0, 1)
Label2 = Cell.Offset(0, 2)
Image1.Picture = LoadPicture(ThisWorkbook.Path & "\" & Cell & ".jpg")
End With
Exit Sub

gestion: 'si pas d'image disponible pour chargement
If Err.Number = 53 Then
Label1.Caption = ""
Image1.Picture = LoadPicture()
End If
End Sub

Et je met a la place :

Private Sub TextBox1_Change()
Dim Cell As Object

On Error GoTo gestion

With Range("A8:A" & Range("A65536").End(xlUp).Row)
Set Cell = .Find(TextBox1, LookIn:=xlValues)

Image1.Picture = LoadPicture(ThisWorkbook.Path & "\" & Cell & ".jpg")
End With
Exit Sub

gestion: 'si pas d'image disponible pour chargement
If Err.Number = 53 Then
Label1.Caption = ""
Image1.Picture = LoadPicture()
End If
End Sub

Par contre je n'arrive pas a faire fonctionner le test, pour le cas ou il n'y a pas d'image disponible pour une référence.


Je te remercie, pour ton aide, G'Claire
 
M

michel

Guest
rebonsoir G'Claire

désolé mais je ne comprends plus trop ce que tu veux faire : je ne vois pas le resultat que tu cherches à obtenir

en attendant , la seule chose que je peux te proposer
c'est au lieu d'utiliser Private Sub TextBox1_Change() ( qui te lance la procedure à chaque saisie d'un caractere ) , ce serait plutot de saisir la reference dans le textbox et ensuite d'avoir un bouton de validation

Private Sub CommandButton1_Click()
Dim Cell As Object

On Error GoTo gestion

With Range("A2:A" & Range("A65536").End(xlUp).Row)
Set Cell = .Find(TextBox1, LookIn:=xlValues)
Label1 = Cell.Offset(0, 1)
Label2 = Cell.Offset(0, 2)
Image1.Picture = LoadPicture(ThisWorkbook.Path & "\" & Cell & ".jpg")
End With
Exit Sub

gestion: 'si pas d'image disponible pour chargement
If Err.Number = 53 Then
Image1.Picture = LoadPicture()
End If
End Sub




bonne soirée
michel
lapin4.gif
 
G

G'Claire

Guest
Michel, le forum

En faite j'utilise le résultat d'une recherche pour des référence produits, pour le rangement de dossier.

Ces produits sont référencer dans une feuille.

Et lors de la recherche cette référence est chargée dans un TextBox (Avec d'autres renseignements), donc je n'ai plus rien a saisir pour faire apparaitre cette image, c'est pour cela que je n'ai besoin que du code que tu avait mis dans la listBox et de le remplacer pour l'utiliser dans un TextBox.

J'espère que cela explique ce que je veux faire, j'aurais bien mis un fichier joint mais il dépasse énormément les 50 Ko.

Mais si tu veux une fois que cela sera fini (Car il me reste une ou deux bricole a paufiner), je te l'enverrai.

Merci pour ton aide, et super bonne nuit, G'Claire
 
M

michel

Guest
rebonsoir G'claire

je n'ai pas fait de tests mais dans ce cas tu dois pouvoir charger l'image en meme temps que tu alimentes ton textbox

par exemple si tu as dans ta procedure
Textbox1= range('"A8")
dans la ligne en dessous tu peux ecrire simplement
Image1.Picture = LoadPicture(ThisWorkbook.Path & "\" & range("A8") & ".jpg")

et il te reste à ajouter si necessaire le gestionnaire d'erreur
On Error GoTo gestion en debut de procedure

et à la fin
...................
Exit Sub
gestion: 'si pas d'image disponible pour chargement
If Err.Number = 53 Then
Image1.Picture = LoadPicture()
End If
End Sub


bonne soirée et bonne nuit
Michel
lapin4.gif
 

Discussions similaires

Réponses
16
Affichages
494

Statistiques des forums

Discussions
313 913
Messages
2 103 511
Membres
108 684
dernier inscrit
Laetoun