Chargement d'image dans un UserForm

breitzou

XLDnaute Occasionnel
Bonjour le Forum,

Après avoir crée un formulaire en ayant récupéré des exemples sur le Forum, je bloque sur l'insertion d'image dans le UserForm à partir d'un répertoire bien précis. Après de nombreuses recherches sur de précédentes discussions, je n'ai pas réussi à trouver la solution vraiment adaptée à mon fichier.
J'ai bien trouvé des exemples permettant de récupérer des photos dans un UserForm mais elle ne sont pas stockées ensuite dans une Base de données. :(
Ou bien encore j'ai trouvé un autre exemple récupérant des photos dans un répertoire précis mais ne les chargeant pas dans un UserForm. :(
:confused:Les deux points qui m'intéresseraient sont donc :
1-Lors d'une création de fiche, ce que je souhaiterais, c'est pouvoir charger les photos au format Jpeg dans le cadre image du formulaire, à partir du répertoire où elles sont stockées. Une fois la fiche enregistrée, la photo est placée tout comme les autres infos du formulaire dans l'onglet "Base" (dans l'exemple), dans la colonne correspondante "Photos".

2- Dans le UserForm, lorsque l'on clique sur "Recherche", il suffit de saisir un numéro de fiche pour voir les informations apparaître. Problème : je n'arrive pas à faire apparaître la photo dans le cadre prévu à cet effet, à partir de la colonne "Photos" de l'onglet "Base". Si je le souhaite, je ne peux donc pas la modifier en allant en charger une autre à partir du répertoire de stockage ci-dessus.
Désolé d'avoir été un peu long dans l'explication mais j'ai essayé d'être précis !;)
Merci de votre aide car je suis plus que novice en la matière.:D

Breitzou
 

Pièces jointes

  • Essai formulaire fiche.xlsm
    43.6 KB · Affichages: 93

Dranreb

XLDnaute Barbatruc
Re : Chargement d'image dans un UserForm

Bonjour.
Remplacez votre ListBox1 par un contrôle Image. Ce que vous devez mettre dans la colonne Photo de votre base c'est le nom du fichier jpeg, bien sûr, pas la photo elle même, de façon à pouvoir affecter un LoadPicture de ce nom à la propriété Picture de votre contrôle Image lorsque la ligne est sélectionnée. C'est la manœuvre équivalente à celle d'affecter la valeur à une TextBox, mais pour une image.
 

breitzou

XLDnaute Occasionnel
Re : Chargement d'image dans un UserForm

Bonsoir Dranreb, bonsoir le Forum,

Merci de m'avoir répondu et désolé pour ma réponse tardive.

j'ai bien essayé de mettre en place ce que vous m'avez conseillé mais cela ne fonctionne pas. Un message d'erreur apparait un peu comme si il y avait une incompatibilité entre les TextBox déjà en place, et l'Image. Je pense que je ne mets pas correctement mon LoadPicture.
Et vu mes connaissances, je galère !!!
Cordialement
Breitzou
 

breitzou

XLDnaute Occasionnel
Re : Chargement d'image dans un UserForm

La syntaxe, je l'avais vu effectivement écrite comme cela dans une précédente discussion. Mais là ou je coince, c'est que je ne sais pas où la placer, ni à quel moment dans le code du fichier en PJ ci-dessus. C'est à ce moment-là qu'il me met les messages d'erreur.
Cordialement
 

Dranreb

XLDnaute Barbatruc
Re : Chargement d'image dans un UserForm

C'est à mettre dans le ComboBox1_Change pour afficher un fichier image dont la référence est déjà récupérée de la colonne M.
Prévoyez peut être d'affecter aussi cette référence à une variable String déclarée en tête du module. Pour la changer, prévoyez peut être une Private Sub Image1_Click dans laquelle vous y mettez la valeur rendue par un GetOpenFilename, puis faites le aussi juste après. Et naturellement, lors de la modification ou de l'ajout de la fiche, enregistrez la dans la colonne M. Un Label ou une zone de texte sous l'image pourrait aussi faire l'affaire. L'idéal serait qu le nom du fichier puisse toujours être N°_Nom_Prénom.jpg !

Remarque si vous souhaitiez pouvoir rechercher par nom et prénom vous pourriez aussi prévoir des ComboBox pour ces infos, et utiliser un objet ComboBoxLiés de OutIdx pour gérer le tout.
 
Dernière édition:

Si...

XLDnaute Barbatruc
Re : Chargement d'image dans un UserForm

salut

2 exemples, le premier à partir des chemins connus, le second avec un contrôle ListImage (si disponible sur la machine avec le fichier MSCOMCTL.OCX) qui permet de charger les photos un fois pour toutes.
 

Pièces jointes

  • Images dans Usf.xlsm
    168.2 KB · Affichages: 134
  • Image dans Userform.xlsm
    39.7 KB · Affichages: 99
Dernière édition:

breitzou

XLDnaute Occasionnel
Re : Chargement d'image dans un UserForm

Bonjour Dranreb, Si... et le Forum,

merci à vous deux pour les infos et excusez-moi pour ma réponse tardive. J'ai des horaires un peu atypiques ! Désolé Dranreb, mais je n'arrive pas à mettre le code correctement car je ne comprends pas comment agencer tout cela, tout simplement ! Comme je vous l'ai dit, je suis vraiment néophyte en la matière !:p

J'ai donc essayé de mettre en place le premier exemple de Si... car c'est je pense la solution la plus adaptée à mon problème. Je vois effectivement , maintenant à quel endroit il faut positionner le code. Il suffira que je mette à jour la base de données des photos dans la colonne correspondante. J'ai donc mis en place cette solution mais cela ne fonctionne pas malgré le chemin d'accès précisé en colonne "M". Je vous joints le fichier mais la seule chose qui varie avec le précédent, c'est le chemin d'accès que j'ai précisé et qui me semble correct malgré tout (sur ma machine bien évidemment !).

Cordialement

Breitzou

PS : Et je ne vois pas ce qui coince car j'ai travaillé sur le fichier en PJ.
 

breitzou

XLDnaute Occasionnel
Re : Chargement d'image dans un UserForm

Merci beaucoup Si... d'avoir pris le temps de m'expliquer. J'ai mis le code dans le fichier de base sur lequel je travaille réellement. Au début il y avait des bugs car les n° d'appel dans le UserForm n'étaient pas triés dans l'ordre croissant dans l'onglet "Base". En les triant, tout est rentré dans l'ordre. Et c'est super, tout fonctionne.
Merci encore pour tout.

J'aurai juste une autre question relative au même fichier. Est-il possible, lorsque l'on crée une fiche (et non pas quand on la modifie) de mettre en place une liste déroulante, par exemple, pour la case "nombre d'enfants" ? Ce qui permettrait de sélectionner un nombre d'enfants dans une liste. J'ai essayé de le faire mais lorsque j'intègre cette donnée, elle n'est pas prise en compte par la suite lorsque je recherche une personne par n°.

Merci encore.

Breitzou

PS : si cela pose un problème par rapport au sujet initial du Post, je peux créer une nouvelle discussion.
 

Dranreb

XLDnaute Barbatruc
Re : Chargement d'image dans un UserForm

Bonjour.
je ne comprends pas comment agencer tout cela
Je vous écrirais bien le tout, mais je ne suis pas adepte des classements à postériori de tables à destination de ComboBox car on y perd en passant la trace des numéros des lignes d'origine les contenant, ce qui oblige à aller les rechercher, comme vous le faites, lors d'un choix. S'il y avait plusieurs ComboBox, ce serait un excellent prétexte pour y invoquer un dispositif qui s'occuperait de tout, serait plus performant, et aboutirait à une programmation somme toutes plus simple de l'Userform. Mais il faudrait me répondre à 2 questions :
1) - Préférez vous n'avoir dans votre classeur que les modules applicatifs et non les outils ? Si oui, il suffit de cocher "OutIdx" dans la liste "Références disponibles", menus Outils, Références… de VBE. OutIdx.xls doit être préalablement ouvert pour ce faire. Sinon je vous équipe votre classeur des 3 modules de classes et 2 module ordinaires spécialisés nécessaires.
2) - Serait il possible que les noms des fichiers jpg soient formés à partir d'informations existantes ? Ça simplifierait tout, et ça n'impliquerait que de renommer les photos, quand elles arrivent, dans le dossier trombinoscope. En plus on y saurait ensuite qui c'est pour chacune.
 

breitzou

XLDnaute Occasionnel
Re : Chargement d'image dans un UserForm

Bonjour Dranreb,

merci tout d'abord de me répondre.
L'idée d'avoir plusieurs ComboBox me plait bien. Cela laisse une laxité dans les choix et je suppose dans ce cas qu'il faut préciser où aller chercher les infos dans la case "RowSource" des propriétés de chaque ComboBox.
Pour répondre à la première question, équiper le classeur des 3 modules de classe et des 2 modules ordinaires spécialisés me semble plus simple.
Pour répondre à la deuxième question, on peut tout à fait imaginer que les noms des fichiers jpg soient formés par exemple, du nom suivi du n° de la fiche de la personne (au cas où il y ait des homonymes).

Cordialement

Breitzou
 

Dranreb

XLDnaute Barbatruc
Re : Chargement d'image dans un UserForm

Voici le premier jet.
D'habitude je fais en sorte que la procédure HabiliterBoutons soit exécutée dès qu'un TextBox change et j'en déduis des habilitations plus fines pour les boutons. Je peux vous le faire si vous voulez, mais ça implique un tout petit module de classe supplémentaire qui ne fait pas partie de OutIdx.
J'ai choisi d'intégrer le prénom au lieu du numéro dans le nom du fichier. Ça laisse une chance de repérer la photo préexistante avant que l'enregistrement ne soit ajouté et que la personne en possède un.
Dites déjà ce que vous en pensez, testez, j'avoue ne l'avoir fait jusqu'au bout.
 

Pièces jointes

  • CbxLiésBreitzou.xls
    262.5 KB · Affichages: 117
  • CbxLiésBreitzou.xls
    262.5 KB · Affichages: 91
  • CbxLiésBreitzou.xls
    262.5 KB · Affichages: 104

breitzou

XLDnaute Occasionnel
Re : Chargement d'image dans un UserForm

Bonsoir Dranreb,

tout d'abord un grand merci d'avoir planché sur mon fichier. Effectivement, l'utilisation du fichier revu comme cela est plutôt très bien et très confortable d' utilisation. J'ai bien vu dans le code que les photos étaient chargées à partir du répertoire dans lesquelles elles étaient stockées. Mais quels noms (et quelles extensions) dois-je leur donner pour qu'elles soient prises en compte.
Cordialement

Breitzou
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 326
Membres
103 180
dernier inscrit
Vcr