Photo dans un formulaire

Résolu/Fermé
djodjo5700 Messages postés 59 Date d'inscription vendredi 13 février 2009 Statut Membre Dernière intervention 27 mars 2016 - Modifié par djodjo5700 le 11/12/2014 à 14:04
djodjo5700 Messages postés 59 Date d'inscription vendredi 13 février 2009 Statut Membre Dernière intervention 27 mars 2016 - 13 déc. 2014 à 10:06
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
11 déc. 2014 à 14:26
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 vendredi 13 février 2009 Statut Membre Dernière intervention 27 mars 2016
11 déc. 2014 à 14:33
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
11 déc. 2014 à 14:36
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 vendredi 13 février 2009 Statut Membre Dernière intervention 27 mars 2016 > pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024
11 déc. 2014 à 14:43
Je voudrai que mon image change lorsque le nom se trouvant dans ma ComBox1 change
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
11 déc. 2014 à 15:18
Peux-tu envoyer ton fichier via https://www.cjoint.com/ ?
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
11 déc. 2014 à 14:40
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 vendredi 13 février 2009 Statut Membre Dernière intervention 27 mars 2016
11 déc. 2014 à 15:04
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 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
11 déc. 2014 à 15:19
Voir ceci plus simple:

http://www.cjoint.com/data3/3LlpzFAEZJy.htm
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
11 déc. 2014 à 15:21
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 vendredi 13 février 2009 Statut Membre Dernière intervention 27 mars 2016
Modifié par pijaku le 11/12/2014 à 15:39
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
11 déc. 2014 à 15:40
Je vais regarder avec ton fichier.
0
djodjo5700 Messages postés 59 Date d'inscription vendredi 13 février 2009 Statut Membre Dernière intervention 27 mars 2016
11 déc. 2014 à 15:35
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
11 déc. 2014 à 15:47
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 vendredi 13 février 2009 Statut Membre Dernière intervention 27 mars 2016 > pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024
11 déc. 2014 à 15:53
Que faire alors
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743 > djodjo5700 Messages postés 59 Date d'inscription vendredi 13 février 2009 Statut Membre Dernière intervention 27 mars 2016
11 déc. 2014 à 15:55
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743 > pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024
11 déc. 2014 à 15:56
Ah oui...
Et, du coup, tes photos seront à enregistrer sous : ID NOM Prénom.jpg
0
djodjo5700 Messages postés 59 Date d'inscription vendredi 13 février 2009 Statut Membre Dernière intervention 27 mars 2016 > pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024
11 déc. 2014 à 16:03
ok merci je cherche la signification de concaténation et fait un essai
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
11 déc. 2014 à 16:27
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 vendredi 13 février 2009 Statut Membre Dernière intervention 27 mars 2016
11 déc. 2014 à 16:54
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 vendredi 13 février 2009 Statut Membre Dernière intervention 27 mars 2016
Modifié par djodjo5700 le 11/12/2014 à 18:03
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 lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
11 déc. 2014 à 18:14
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 vendredi 13 février 2009 Statut Membre Dernière intervention 27 mars 2016 > Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023
11 déc. 2014 à 18:43
'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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743 > djodjo5700 Messages postés 59 Date d'inscription vendredi 13 février 2009 Statut Membre Dernière intervention 27 mars 2016
11 déc. 2014 à 20:10
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 vendredi 13 février 2009 Statut Membre Dernière intervention 27 mars 2016 > pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024
12 déc. 2014 à 09:47
C'est fait mais rien ne change
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743 > djodjo5700 Messages postés 59 Date d'inscription vendredi 13 février 2009 Statut Membre Dernière intervention 27 mars 2016
12 déc. 2014 à 10:00
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 vendredi 13 février 2009 Statut Membre Dernière intervention 27 mars 2016
12 déc. 2014 à 13:11
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
12 déc. 2014 à 14:23
Et tes photos sont bien nommées de cette façon?
Dans ce répertoire?
0
djodjo5700 Messages postés 59 Date d'inscription vendredi 13 février 2009 Statut Membre Dernière intervention 27 mars 2016
12 déc. 2014 à 14:53
Oui tout à fait Franck
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
12 déc. 2014 à 15:09
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 vendredi 13 février 2009 Statut Membre Dernière intervention 27 mars 2016
12 déc. 2014 à 15:23
Sans problème, si tu peux m'expliquer la manip
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
12 déc. 2014 à 15:26
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 lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
12 déc. 2014 à 15:30
C'est marrant, tu l'as fait hier à la même heure.
0
djodjo5700 Messages postés 59 Date d'inscription vendredi 13 février 2009 Statut Membre Dernière intervention 27 mars 2016 > Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023
12 déc. 2014 à 15:33
Déjà oublié(surement l'age)
0
djodjo5700 Messages postés 59 Date d'inscription vendredi 13 février 2009 Statut Membre Dernière intervention 27 mars 2016
12 déc. 2014 à 15:28
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
12 déc. 2014 à 15:35
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 vendredi 13 février 2009 Statut Membre Dernière intervention 27 mars 2016
12 déc. 2014 à 15:43
OUAH SUPER A FONCTIONNE!!!!!!

Un super grand merci à vous
0
djodjo5700 Messages postés 59 Date d'inscription vendredi 13 février 2009 Statut Membre Dernière intervention 27 mars 2016
12 déc. 2014 à 17:05
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
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 vendredi 13 février 2009 Statut Membre Dernière intervention 27 mars 2016
12 déc. 2014 à 18:18
Non cela ne fonctionne pas il marque :
Erreur d'éxécution '53'
Fichier introuvable

@+
Merci
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
12 déc. 2014 à 22:29
Parce que Maurice a mentionné un fichier Image1.jpg que tu n'as pas...
0
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