Transférer des images chargées dans un Userform
Bonjour le Forum.
Après maintes recherches un peu partout sur le Net, je n'arrive pas à trouver une solution et m'en remets au Forum.
J'aimerai transférer des images chargées dans mon Userform vers des cellules précises. J'ai trouvé le code pour aller récupérer l'image et l'insérer dans l'Userform. C'est l'envoi dans la feuille qui me bloque.
Mon application est pour la création de fiche de signalement d'anomalie mise à disposition de plusieurs utilisateurs. Il me faut y insérer des photos, c'est bien plus "parlant". Actuellement, tout est saisi manuellement, d'où la création de ce classeur.
Mon cahier des charges :
- Numérotation automatique des fiches : Réalisée.
- Saisie et transfert dans deux feuilles : Réalisé.
- Adapter l'Userform à la taille de l'écran ; En cours
- Transfert de(s) image(s) dans la feuille "Fiche" avec un format défini : Là, j'espère votre aide. Cette fiche ne prévoit que deux imports d'images. Cerise sur le gâteau si plus de deux images, la possibilité de les insérer à la suite des images 1 et 2,
Je vous remercie de l'aide qui pourrait m'être m'apportée.
Bonne journée.
Licaon
Bonjour,
Une piste avec un Shape !
Tout d'abords tu déclare ta variable "Photo" en tête du module du formulaire afin que sa portée soit de niveau formulaire :
Dim Photo As Variant
ensuite, dans ta procédure d'enregistrement tu colles le code ci-dessous en ayant au préalable adapter la cellule cible (ici, pour l'exemple, cellule C6) :
Dim Cel As Range
Set Cel = Range("C6")
Worksheets("Suivi").Shapes.AddPicture Photo, True, True, Cel.Left, Cel.Top, Cel.Width, Cel.Height
Bonsoir THEZE, bonsoir le Forum.
Merci THEZE pour ta réponse.
Je n'ai pas eu jusqu'à maintenant à utiliser les shapes, et je ne sais comment faire. De plus, je ne maîtrise pas suffisamment les termes techniques . Est-il possible de m'expliquer, façon pas à pas, si cela n'est pas trop demandé.
Cordialement?
Licaon
Bonsoir,
Tu peux également utiliser :
Worksheets("Fiche").Pictures.Insert photo
Ce pourquoi, dans tous les cas il te faut déclarer ta variable photo au niveau Module, de façon à pouvoir l'utiliser, ainsi que te l'a déjà indiqué Theze.
Elle te permettra d'ailleurs de tester si une photo est à insérer dans la feuille (si elle n'est pas vide).
Il te faudra ensuite la positionner et la dimensionner, d'où cette forme serait plus adéquate :
With Worksheets("Fiche").Pictures.Insert(photo)
.Left = ...
.Top = ...
.Height = ...
.Width = ...
End With
Cordialement.
Bonsoir MFerrand, bonsoir THEZE et bonsoir le Forum.
Comme je l'ai déjà mentionné, ne connaissant pas l'utilisation des shapes, je me suis mit en quête d'information sur le forum.
J'y ai découvert ce fil : https://forum.excel-pratique.com/post542133.html?hilit=ins%C3%A9rer%20une%20shape#p542133
Cela me permet de modifier mon projet en sélectionnant directement l'image à partir de ma feuille "Fiche" et simplifie grandement la saisie multi-utilisateurs.
Je n'ai pas encore compris le fonctionnement du code. Sur le classeur du fil cité, l'image s'insert et se redimensionne dans la shape. Ce n'est pas le cas sur mon fichier, l'image se charge sur ma feuille mais ne se place pas à l'endroit prévu,
Je ne sais quoi modifier pour y parvenir, malgré plusieurs tâtonnements.
Pouvez vous m'aider à corriger mes erreurs ?
Merci et bonne soirée,
Licaon
Aucune plage nommée "Courbe1" dans ton fichier...
Bonjour,
Comme tu utilises un objet "Image" pour ouvrir l'explorateur j'en déduis que tu souhaiterais que l'image choisie soit dans cet ActiveX !
J'ai un peu modifié le code en utilisant "FileDialog" :
Private Sub Image1_Click()
'ouvre une boite de dialogue pour le choix d'un fichier image
With Application.FileDialog(msoFileDialogFilePicker) 'fichier
.Filters.Clear
.Filters.Add "Fichier image", "*.gif; *.jpg"
.InitialFileName = MonDossier
.AllowMultiSelect = False '1 seul peut être choisi !
If .Show = 0 Then MsgBox "Insertion d'image interrompue.": Exit Sub
Image1.Picture = LoadPicture(.SelectedItems(1))
Image1.PictureSizeMode = fmPictureSizeModeStretch
End With
End Sub
Bonjour MFerrand, bonjour THEZE et bonsoir le Forum.
En fait, c'est la solution de THEZE que je retiens. Je l'ai inscrite dans mon projet et cela fonctionne bien.
Cette partie est terminée mais je vais ouvrir un autre post pour créer une continuité une "suite" pour pouvoir inclure des images supplémentaires si nécessaire.
Encore merci aux contributeurs.
Bonne journée.
Licaon
Bonsoir,
En fait, c'est la solution de THEZE que je retiens.
Que tu retiennes la mienne m'aurait bien surpris !
A cet égard d'ailleurs, le choix d'un contrôle Image dans la feuille permettait une simplication, par transfert direct de l'image du contrôle Image du formulaire au contrôle Image de la feuille...
Cordialement.
Bonsoir MFerrand, bonsoir le Forum.
Désolé de t'avoir surpris, mais j'ai changé d'orientation car il m'est apparu plus simple la proposition de THEZE, en rapport avec mes connaissances, mais aussi pour une utilisation multi-utilisateurs aisée.
Ton intervention sur ce fil m'a permis de découvrir les shapes, et je te remercie de m'avoir orienté sur le sujet. Eh oui, tu as aiguisé ma curiosité et après quelques recherches sur le Forum et la toile, je pense que je vais prochainement me lancer dans un projet pour approfondir l'utilisation des shapes.
Cordialement.
Licaon.