Photo dans un formulaire

Résolu
djodjo5700 Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   -  
djodjo5700 Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   -
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



A voir également:

22 réponses

pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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.
0
djodjo5700 Messages postés 59 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Oula...
Non, tu n'y es pas.

Ton Image doit être chargée quand?
Lors d'un clic sur le contrôle Image ou lors d'un changement de valeur dans la Combobox noms?
0
djodjo5700 Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   > pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention  
 
Je voudrai que mon image change lorsque le nom se trouvant dans ma ComBox1 change
0
Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention   149
 
Peux-tu envoyer ton fichier via https://www.cjoint.com/ ?
0
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
Bonjour,

Sur ce site tu trouveras toutes les explications avec un exemple a télécharger


https://silkyroad.developpez.com/VBA/XlOrganigramme/
0
djodjo5700 Messages postés 59 Date d'inscription   Statut Membre Dernière intervention  
 
Ou La LA trop compliqué pour moi tout çà je viens de commencer l semaine dernière.

Merci tout de même

Jean-Marie
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
Voir ceci plus simple:

http://www.cjoint.com/data3/3LlpzFAEZJy.htm
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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.....
0
djodjo5700 Messages postés 59 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Je vais regarder avec ton fichier.
0
djodjo5700 Messages postés 59 Date d'inscription   Statut Membre Dernière intervention  
 
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Tu n'as pas géré les doublons de noms, je ne peut donc rien faire.
0
djodjo5700 Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   > pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention  
 
Que faire alors
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761 > djodjo5700 Messages postés 59 Date d'inscription   Statut Membre Dernière intervention  
 
Un exemple de ce qu'il est possible de faire :
Ajoute une colonne dans ta base de données
remplit là avec une concaténation de trois colonnes : ID + NOM + Prénom

Remplit ta combobox avec cette colonne, tu n'auras plus de doublons...
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761 > pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention  
 
Ah oui...
Et, du coup, tes photos seront à enregistrer sous : ID NOM Prénom.jpg
0
djodjo5700 Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   > pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention  
 
ok merci je cherche la signification de concaténation et fait un essai
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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

0
djodjo5700 Messages postés 59 Date d'inscription   Statut Membre Dernière intervention  
 
Je vous remercie tous, mais là je vais exploser. je mélange tout. je vais recommencer mon fichier et reviens vers vous.
0
djodjo5700 Messages postés 59 Date d'inscription   Statut Membre Dernière intervention  
 
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"?
0
Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention   149
 
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ôt
Chemin = ThisWorkbook.Path & "\Photos\" 
, car G: ne correspondra pas toujours à ta clé USB.

A+
0
djodjo5700 Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   > Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention  
 
'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"

@+
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761 > djodjo5700 Messages postés 59 Date d'inscription   Statut Membre Dernière intervention  
 
Maintenant il te faut faire correspondre les noms des images avec le contenu de ta combobox. Exactitude dans l'orthographe...
0
djodjo5700 Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   > pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention  
 
C'est fait mais rien ne change
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761 > djodjo5700 Messages postés 59 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
djodjo5700 Messages postés 59 Date d'inscription   Statut Membre Dernière intervention  
 
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)
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Et tes photos sont bien nommées de cette façon?
Dans ce répertoire?
0
djodjo5700 Messages postés 59 Date d'inscription   Statut Membre Dernière intervention  
 
Oui tout à fait Franck
0
Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention   149
 
Peux-tu transmettre un zip contenant :
- ton fichier Excel ;
- le dossier avec une ou deux photos
via cjoint ?
0
djodjo5700 Messages postés 59 Date d'inscription   Statut Membre Dernière intervention  
 
Sans problème, si tu peux m'expliquer la manip
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
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...
0
Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention   149
 
C'est marrant, tu l'as fait hier à la même heure.
0
djodjo5700 Messages postés 59 Date d'inscription   Statut Membre Dernière intervention   > Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention  
 
Déjà oublié(surement l'age)
0
djodjo5700 Messages postés 59 Date d'inscription   Statut Membre Dernière intervention  
 
0
Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention   149
 
Il manque "Base de donnée\" entre "G:\" et "PhotosIdent" ...

=>
Chemin = ThisWorkbook.Path & "\Base de donnée\PhotosIdent\" 
0
djodjo5700 Messages postés 59 Date d'inscription   Statut Membre Dernière intervention  
 
OUAH SUPER A FONCTIONNE!!!!!!

Un super grand merci à vous
0
djodjo5700 Messages postés 59 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
Maurice
 
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
0
djodjo5700 Messages postés 59 Date d'inscription   Statut Membre Dernière intervention  
 
Non cela ne fonctionne pas il marque :
Erreur d'éxécution '53'
Fichier introuvable

@+
Merci
0
Zoul67 Messages postés 1959 Date d'inscription   Statut Membre Dernière intervention   149
 
Parce que Maurice a mentionné un fichier Image1.jpg que tu n'as pas...
0
Maurice
 
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
0