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

33fiche-licaon.zip (28.37 Ko)

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

62fiche-licaon-v2.zip (37.31 Ko)

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 ! Je n'ai pas proposé de solution, juste indiqué une méthode utilisable, greffée sur celle indiquée préalablement par Theze... J'attendais la suite, mais j'ai été un peu surpris par le changement de méthode : le chargement de l'image dans le Userform n'a pas d'utilité en soi, certes, cela ne se justifiait que par la procédure de saisie, éléments définis dans le formulaire, puis affectés... Il me semble que là tu perds un peu cette homogénéité de saisie...

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.

Rechercher des sujets similaires à "transferer images chargees userform"