Photo dans un formulaire
Résolu
djodjo5700
Messages postés
64
Statut
Membre
-
djodjo5700 Messages postés 64 Statut Membre -
djodjo5700 Messages postés 64 Statut Membre -
Bonjour,
je suis en train d'élaboré un formulaire ressemblant à un formulaire de contact, dans lequel se trouve un cadre image "Image 1" et je voudrais y insérer une photo d'identité en fonction d'un nom se trouvant dans la "ComboBox 1" tout en sachant que plusieurs personne ayant le même patronyme peuvent se trouver dans ma BD. Mon fichier étant et sera toujours sur une clef USB, vaut-il mieux stocker les photos d'identités dans le fichier Excel ou alors dans un document sur ma clef?
Merci par avance
je suis en train d'élaboré un formulaire ressemblant à un formulaire de contact, dans lequel se trouve un cadre image "Image 1" et je voudrais y insérer une photo d'identité en fonction d'un nom se trouvant dans la "ComboBox 1" tout en sachant que plusieurs personne ayant le même patronyme peuvent se trouver dans ma BD. Mon fichier étant et sera toujours sur une clef USB, vaut-il mieux stocker les photos d'identités dans le fichier Excel ou alors dans un document sur ma clef?
Merci par avance
22 réponses
- 1
- 2
Suivant
Résumé de la discussion
Le problème porte sur le chargement dynamique d'une photo d'identité à partir d'un nom sélectionné dans une ComboBox d'un formulaire Excel VBA, en tenant compte d'un stockage sur clé USB. La meilleure réponse conseille de charger l'image lors d'un changement de valeur dans la ComboBox plutôt qu'au clic sur l'image, et de vérifier que le chemin d'accès soit correct et accessible. Plusieurs avertissent des pièges des chemins absolus sur clé USB et recommandent de construire le chemin avec ThisWorkbook.Path et d'un sous-dossier fiable, comme PhotosIdent ou Photos, afin d'éviter les erreurs LoadPicture.
-
Bonjour,
Mon fichier étant et sera toujours sur une clef USB, vaut-il mieux stocker les photos d'identités dans le fichier Excel ou alors dans un document sur ma clef?
Il vaut mieux placer toutes tes photos dans un répertoire de ta clé plutôt que dans le fichier Excel.
Pour les récupérer :Chemin = ThisWorkbook.Path & "\Mes Photos\" Img = "DUPONTVincent.jpg" Image1.Picture = LoadPicture(Chemin & Img)
tout en sachant que plusieurs personne ayant le même patronyme peuvent se trouver dans ma BD
Il te faudra donc trouver un subterfuge, VBA n'étant pas voyant.
-
Je te remercie pour ta réponse mais je viens seulement de débuter . alors si j'ai bien compris, je clique sur Image1 et je rentre ta formule, tout en changeant bien sur le chemin d'accès de mes photos
-
-
Peux-tu envoyer ton fichier via https://www.cjoint.com/ ?
-
-
Bonjour,
Sur ce site tu trouveras toutes les explications avec un exemple a télécharger
https://silkyroad.developpez.com/VBA/XlOrganigramme/
-
Ou La LA trop compliqué pour moi tout çà je viens de commencer l semaine dernière.
Merci tout de même
Jean-Marie -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Voir ceci plus simple:
http://www.cjoint.com/data3/3LlpzFAEZJy.htm
-
Alors, dans le module de l'Userform :
Private Sub ComboBox1_Change() If ComboBox1 = "" Then Exit Sub Chemin = ThisWorkbook.Path & "\Mes Photos\" Img = ComboBox1.Value & ".jpg" Image1.Picture = LoadPicture(Chemin & Img) End Sub
A adapter à ton jus bien sur.....
-
Je viens de le faire et il m'ecrit:
Erreur de compilation:
Nom ambigu détecté: ComboBox1_change
Private Sub ComboBox1_Change() Dim Ligne As Long Dim I As Integer If Me.ComboBox1.ListIndex = -1 Then Exit Sub Ligne = Me.ComboBox1.ListIndex + 2 For I = 1 To 25 Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 1) Next I End Sub -
-
-
-
Donc,
- Pour remplir ta combobox avec les données sans doublons :
Dans la procédure UserForm_Initialize, remplace la ligne :.AddItem Ws.Range("A" & J)
Par.AddItem Ws.Range("AQ" & J)
Pour obtenir :'Correspond au programme du FORULAIRE Private Sub UserForm_Initialize() Dim J As Long Dim I As Integer Set Ws = Sheets("SP") 'Attention ce nom doit correspondre au nom de votre ONGLET With Me.ComboBox1 For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row .AddItem Ws.Range("AQ" & J) Next J End With For I = 1 To 25 Me.Controls("TextBox" & I).Visible = True 'affiche les données dans les textbox Next I End Sub
Regarde comment s'affichent tes noms maintenant...
- Dans le répertoire qui contient ton fichier excel, créées un nouveau dossier, l'appeler "photos" et y enregistrer tes images en "formatant" leurs noms comme ceci : ID NOM Prénom. Exactement comme ce qui s'affiche dans la Combobox.
- Changer le code de la procédure ComboBox_Change() comme ceci :Private Sub ComboBox1_Change() Dim Ligne As Long Dim I As Integer Dim Chemin As String, Img As String If Me.ComboBox1.ListIndex = -1 Then Exit Sub Ligne = Me.ComboBox1.ListIndex + 2 For I = 1 To 25 Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 1) Next I Chemin = ThisWorkbook.Path & "\photos\" Img = ComboBox1.Value & ".jpg" Image1.Picture = LoadPicture(Chemin & Img) End Sub
-
Je vous remercie tous, mais là je vais exploser. je mélange tout. je vais recommencer mon fichier et reviens vers vous.
-
Je viens de refaire un fichier complétement basiq tout fonctionne correctement jusqu'au moment ou j'essaye de rentrer la photo en fonction de ma ComboBox1
Visiblement il ne trouve pas le chemin de mon fichier photo qui est:
G:\Base de donnée\Photos
Je reçois le message d'erreur '75':
Erreur d'accés Chemin/fichier
Option Explicit
Dim Ws As Worksheet
'Correspond au programme du bouton QUITTER
Private Sub CommandButton1_Click()
Unload Me
End Sub
Private Sub Image1_Click()
End Sub
Private Sub RefEdit4_BeforeDragOver(Cancel As Boolean, ByVal Data As MSForms.DataObject, ByVal x As stdole.OLE_XPOS_CONTAINER, ByVal y As stdole.OLE_YPOS_CONTAINER, ByVal DragState As MSForms.fmDragState, Effect As MSForms.fmDropEffect, ByVal Shift As Integer)
End Sub
'Correspond au programme du FORULAIRE
Private Sub UserForm_Initialize()
Dim J As Long
Dim I As Integer
Set Ws = Sheets("Feuil1") 'Attention ce nom doit correspondre au nom de votre ONGLET
With Me.ComboBox1
For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("A" & J)
Next J
End With
For I = 1 To 8
Me.Controls("TextBox" & I).Visible = True 'affiche les données dans les textbox
Next I
End Sub
'Correspond au programme du bouton MODIFIER
Private Sub CommandButton2_Click()
If MsgBox("Etes-vous certain de vouloir modifier ce produit ?", vbYesNo, "Demande de confirmation") = vbYes Then
Dim Ligne As Long
Dim I As Integer
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 2
For I = 1 To 8
If Me.Controls("TextBox" & I).Visible = True Then
Ws.Cells(Ligne, I + 1) = Me.Controls("TextBox" & I)
End If
Next I
End If
'Code permettant de modifier le format de la plage de cellule en format nombre
With Ws.Range("D2:d10")
.NumberFormat = "0"
.Value = .Value
End With
End Sub
'Correspond au programme de la LISTE DEROULANTE
Private Sub ComboBox1_Change()
Dim Ligne As Long
Dim I As Integer
Dim Chemin As String, Img As String
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 2
For I = 1 To 8
Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 1)
Next I
Chemin = ThisWorkbook.Path & "\G:\Base de donnée\Photos\"
Img = ComboBox1.Value & ".jpg"
Image1.Picture = LoadPicture(Chemin & Img)
End Sub

Ne doit pas donner des informations à l'outils "Image1"?-
Chemin = ThisWorkbook.Path & "\G:\Base de donnée\Photos\"
En supposant que ton fichier Excel est dans G:\Base de donnée\, Chemin prendra la valeur
G:\Base de donnée\G:\Base de donnée\Photos\ (oui, je n'ai pas fait de fautes).
Mets plutôtChemin = ThisWorkbook.Path & "\Photos\"
, car G: ne correspondra pas toujours à ta clé USB.
A+ -
'Correspond au programme de la LISTE DEROULANTE
Private Sub ComboBox1_Change()
Dim Ligne As Long
Dim I As Integer
Dim Chemin As String, Img As String
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 2
For I = 1 To 8
Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 1)
Next I
Chemin = ThisWorkbook.Path & "\Photos\"
Img = ComboBox1.Value & ".jpg"
Image1.Picture = LoadPicture(Chemin & Img)
End Sub
Toujours une erreur dans
Image1.Picture = LoadPicture(Chemin & Img)
"CHEMIN D'ACCES INTROUVABLE"
@+ -
-
-
C'est dur dur à distance.
Tes images sont bien des jpg?
Si oui, que te dis ce code :
'Correspond au programme de la LISTE DEROULANTE Private Sub ComboBox1_Change() Dim Ligne As Long Dim I As Integer Dim Chemin As String, Img As String If Me.ComboBox1.ListIndex = -1 Then Exit Sub Ligne = Me.ComboBox1.ListIndex + 2 For I = 1 To 8 Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 1) Next I Chemin = ThisWorkbook.Path & "\Photos\" Img = ComboBox1.Value & ".jpg" MsgBox Img Image1.Picture = LoadPicture(Chemin & Img) End Sub
-
-
Oui mes images sont bien de JPG, exemple:

voilaà ce qui ce passe lorsque je rentre maintenant ton code:
Puis "ERREUR D'EXECUTION '76'
Chemin introuvable.
'Correspond au programme de la LISTE DEROULANTE
Private Sub ComboBox1_Change()
Dim Ligne As Long
Dim I As Integer
Dim Chemin As String, Img As String
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 2
For I = 1 To 8
Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 1)
Next I
Chemin = ThisWorkbook.Path & "\PhotosIdent\"
Img = ComboBox1.Value & ".jpg"
MsgBox Chemin & Img
Image1.Picture = LoadPicture(Chemin & Img)
End Sub
Avec toujours une flèche jaune en face de:
Image1.Picture = LoadPicture(Chemin & Img) -
Et tes photos sont bien nommées de cette façon?
Dans ce répertoire?
-
-
-
Pour transmettre un fichier, il faut passer par un site de pièce jointe tel que cjoint.com
Va sur ce site : https://www.cjoint.com/
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse... -
-
-
-
OUAH SUPER A FONCTIONNE!!!!!!
Un super grand merci à vous -
Peur être encore une question
Si dans ma base de donnée la photo correspondant à un nom est absente, je reçois le message d'erreur suivant:
Erreur d'2écution '53'
Fichier introuvable
Avec bien sur le choix FERMER , DÉBOGAGE
Quoi que je fasse, je ne peux pas continuer ma saisie. Y a t-il une solution?
Pareil auparavant j'avais des CheckBox qui me remplissait automatiquement une TextBox en fonction que la CheckBox soit coché ou pas
Exemple:
Une checkBox coché remplissait un TextBox par VL(la personne concernée est donc un possession du permis de conduire VL).
J'ai donc ajouté à tous cela une case image pour avoir l'image du permis
En utilisant les codes que vous m'avez donnés précédemment. Tout fonctionne parfaitement, sauf que maintenant l'indication VL ne s'affiche plus dans la TextBox concernée.
Est-il possible de faire quelque chose.?
Merci, par avance -
Bonjour
Voila' Chemin du repertoire Image Chemin = ThisWorkbook.Path & "\Base de donnée\PhotosIdent\" Img = ComboBox1.Value & ".jpg" ' Test le repertoire ou se trouve la photo If Dir(Chemin & Img) = "" Then Image1.Picture = LoadPicture(Chemin & "Image1.jpg") Else Me.Image1.PictureSizeMode = fmPictureSizeModeStretch Image1.Picture = LoadPicture(Chemin & Img) End If
A+
Maurice -
Non cela ne fonctionne pas il marque :
Erreur d'éxécution '53'
Fichier introuvable
@+
Merci -
Re
le debut de la combobox je prefere ca
Private Sub UserForm_Initialize() Dim L As Long With Sheets(Feuil1.Name) ' mettre le codeName comme ca tu peux Changer le nom de l'onglet ComboBox1.Clear For L = 2 To .Range("A" & Rows.Count).End(xlUp).Row ComboBox1.AddItem .Range("A" & L) Next End With End Sub
A+
Maurice
- 1
- 2
Suivant