XL 2019 Coller une image dans une UserForm

Marc Vanlindt

XLDnaute Nouveau
Bonjour à tous.
Dans ma feuille excel, j'ai une image que je voudrais copier dans ma Userform1.Image1.
Comment puis-je réaliser cela en VBA ?
Merci d'avance pour vos réponses.
Marc
 

Pièces jointes

  • CollerImageUSF.xlsm
    47.4 KB · Affichages: 10
Solution
Désolé. J'ai sans doute mal utilisé cjoint... Mais sur tu fais un click droit sur le le nom du ficher (juste après "Document joint :", tu choisis l'option "Enregistrer la cible du lien" et il sera télécharger.
oui j'ai vu après
mais comme j'ai bloqué certaines partie de ce menu j'ai du le remettre pour le faire
et après test ce fichier comme je te l'ai dis l'image a bien été extraite
avec mon code de base et tout mes autres méthodes fonctionnent aussi
ce code date d'il y a 7 ans il ne m'a jamais fait défaut
VB:
Sub extract_image_In_File()
    Dim OBJstream, BB() As Byte, b As Long, bytTemp(0 To 1) As Byte, tablo, by As Byte
    Dim filetoopen As Variant
     filetoopen = Application.GetOpenFilename("jpeg Files...

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Marc, JM,
Essayez comme ceci :
VB:
Sub InsererImage()
    FichierImage = "g:\Users\PC_PAPA\Pictures\______GIFS\Bonhomme\Im (1).jpg"   ' Chemin du fichier image
    UserForm1.Image1.Picture = LoadPicture(FichierImage)                        ' Insertion dans l'userform
    UserForm1.Show                                                              ' Affichage de l'userform.
End Sub
 

patricktoulon

XLDnaute Barbatruc
Bonsoir
tu prend mon module WMF3
et dans le userform dans le activate

VB:
Private Sub UserForm_Activate()
Me.Image1.Picture = copyxlPicture(Feuil1.Shapes("Image 1"))
End Sub
a l'ouverture de ton userform l'image va se copier dans le userform
;)
 

Pièces jointes

  • CollerImageUSF.xlsm
    54.9 KB · Affichages: 9

Marc Vanlindt

XLDnaute Nouveau

Pièces jointes

  • err1.png
    err1.png
    4.6 KB · Affichages: 11
  • err2.png
    err2.png
    12.9 KB · Affichages: 9

Marc Vanlindt

XLDnaute Nouveau
Bonsoir Marc, JM,
Essayez comme ceci :
VB:
Sub InsererImage()
    FichierImage = "g:\Users\PC_PAPA\Pictures\______GIFS\Bonhomme\Im (1).jpg"   ' Chemin du fichier image
    UserForm1.Image1.Picture = LoadPicture(FichierImage)                        ' Insertion dans l'userform
    UserForm1.Show                                                              ' Affichage de l'userform.
End Sub
Merci Sylvanu.
Avec la fonction LoadPicture() j'ai souvent des erreur. Avec un même fichier .JPG parfois ça passe et parfois j'ai une erreur :
Erreur d'exécution '-21447467259 (80004005)':
Erreur automation
Erreur non spécifiée
Je cherche donc une autre façon de procéder.
 

Marc Vanlindt

XLDnaute Nouveau
Bonsoir
tu prend mon module WMF3
et dans le userform dans le activate

VB:
Private Sub UserForm_Activate()
Me.Image1.Picture = copyxlPicture(Feuil1.Shapes("Image 1"))
End Sub
a l'ouverture de ton userform l'image va se copier dans le userform
;)
Merci beaucoup Patrick ! Je vais essayer d'intégrer cela dans mon application et te ferai part des résultats.
A bientôt
Marc
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour tout le monde,
Erreur d'exécution '-21447467259 (80004005)':
Erreur automation
Erreur non spécifiée
1- Si l'erreur est erratique il est possible que ce soit un problème de temps de chargement de l'image;
Si ce temps est trop long et si l'userform est affiché avant la fin du chargement image alors il y aura erreur.
2- Cela peut être dû aussi à une erreur de version Framework : Lien ou Lien

Pouvez vous tester cette PJ.
On charge le dossier image avec le premier bouton, puis les deux autres font soit un Slide Show soit un défilement par clic.
J'ai pris ceinture et bretelles avec de DoEvents et des attentes de 1 seconde pour laisser le système charger les images tranquillement.
J'ai testé sur mon vieux XL2007 sans jamais rencontré de soucis, mais j'ai un SSD véloce, peut être que ça résout le problème. :)
 

Pièces jointes

  • ImageDansUserform.xlsm
    23.2 KB · Affichages: 5

Marc Vanlindt

XLDnaute Nouveau
Bonjour tout le monde,

1- Si l'erreur est erratique il est possible que ce soit un problème de temps de chargement de l'image;
Si ce temps est trop long et si l'userform est affiché avant la fin du chargement image alors il y aura erreur.
2- Cela peut être dû aussi à une erreur de version Framework : Lien ou Lien

Pouvez vous tester cette PJ.
On charge le dossier image avec le premier bouton, puis les deux autres font soit un Slide Show soit un défilement par clic.
J'ai pris ceinture et bretelles avec de DoEvents et des attentes de 1 seconde pour laisser le système charger les images tranquillement.
J'ai testé sur mon vieux XL2007 sans jamais rencontré de soucis, mais j'ai un SSD véloce, peut être que ça résout le problème. :)
Merci Sylvanu. Ton programme marche à merveille. Aucun problème.
J'ai essayé plusieurs solutions proposées dans tes liens (notamment une restauration système) mais aunce n'a marché.
Maintenant, il faut dire que l'image que je veux charger a été créée par Excel lui-même.
J'explique.
J'ai trouvé une solution en VBA pour extraire l'image enregistrée dans un fichier Mp3. Cette image est sauvegardée sur le disque. Je peux l'afficher avec la visionneuse Windows sans problème, mais c'est lorsque je veux la charger avec LoadPicture("Image") que ça coince parfois (mais pas toujours !)
En annexe, le programme test.
Bien à toi,
Marc
PS : Je viens d'essayer d'ouvrir cette image avec ton programme, il y a la même erreur. Je suppose donc que c'est l'image qui, d'une façon ou d'un autre, n'est pas correctement sauvée par excel.
Je continue de chercher...
 

Pièces jointes

  • TestImgMp3.xlsm
    38.9 KB · Affichages: 5
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
J'ai fait quelques tests et j'ai les mêmes résultats que vous.
En déroulant les macros, j'arrive à un moment dans LoadPictureFromArray à :
VB:
Set MS = LoadPicture(TempFilePath)
TempFilePath vaut chez moi G:\TEmp\temp_image.jpg
Ce fichier existe bien et a bien l'icone d'un jpg, mais quand je veux l'ouvrir j'ai un souci quelque soit l'outil utilisé, voir les messages d'erreur des 5 visionneuses utilisées :

1711986239137.png

1711986268904.png

1711986390011.png

Photos :
1711986310798.png

Visionneuse de Windows :
1711986350766.png


Donc effectivement il semble que ce soit la construction du fichier qui ne soit pas correcte.
Mais là, je ne peux être d'aucune utilité, j'y connais rien.:rolleyes:
 

Marc Vanlindt

XLDnaute Nouveau
Merci Sylvanu. Ton programme marche à merveille. Aucun problème.
J'ai essayé plusieurs solutions proposées dans tes liens (notamment une restauration système) mais aunce n'a marché.
Maintenant, il faut dire que l'image que je veux charger a été créée par Excel lui-même.
J'explique.
J'ai trouvé une solution en VBA pour extraire l'image enregistrée dans un fichier Mp3. Cette image est sauvegardée sur le disque. Je peux l'afficher avec la visionneuse Windows sans problème, mais c'est lorsque je veux la charger avec LoadPicture("Image") que ça coince parfois (mais pas toujours !)
En annexe, le programme test.
Bien à toi,
Marc

Bonsoir,
J'ai fait quelques tests et j'ai les mêmes résultats que vous.
En déroulant les macros, j'arrive à un moment dans LoadPictureFromArray à :
VB:
Set MS = LoadPicture(TempFilePath)
TempFilePath vaut chez moi G:\TEmp\temp_image.jpg
Ce fichier existe bien et a bien l'icone d'un jpg, mais quand je veux l'ouvrir j'ai un souci quelque soit l'outil utilisé, voir les messages d'erreur des 5 visionneuses utilisées :

Regarde la pièce jointe 1194038
Regarde la pièce jointe 1194039
Regarde la pièce jointe 1194042
Photos :
Regarde la pièce jointe 1194040
Visionneuse de Windows :
Regarde la pièce jointe 1194041

Donc effectivement il semble que ce soit la construction du fichier qui ne soit pas correcte.
Mais là, je ne peux être d'aucune utilité, j'y connais rien.:rolleyes:
Merci d'avoir pris de ton temps pour examiner ça.
Le plus bizarre, c'est qu'il arrive qu'un fichier "correct" soit généré, qu'on peut ouvrir avec la visionneuse de Windows, mais qui provoque malgré tout une erreur lors du chargement par LoadPicture.
Je n'y comprends plus rien !!!
Mais je ne me décourage pas...
Bien à toi,
Marc
 

patricktoulon

XLDnaute Barbatruc
re
en fait c'est tout simple
l'image extraite du mp3 n'est pas du format compatible avec les ActivX dans userform

tu peux mettre l'extension".jpg" a un fichier tant que tu veux si c'est pas un fichier jpg ça marchera pas
les controls images dans userform acceptent :
  1. les jpg/jpeg
  2. les gif plats
  3. les Tiff
  4. les Wmf
  5. les bipmap
 

Marc Vanlindt

XLDnaute Nouveau
re
en fait c'est tout simple
l'image extraite du mp3 n'est pas du format compatible avec les ActivX dans userform

tu peux mettre l'extension".jpg" a un fichier tant que tu veux si c'est pas un fichier jpg ça marchera pas
les controls images dans userform acceptent :
  1. les jpg/jpeg
  2. les gif plats
  3. les Tiff
  4. les Wmf
  5. les bipmap
Merci.
Pour info, TOUS mes mp3 ont une image au format JPG
Lors de l'extraction, parfois un fichier Jpg est généré qui fonctionne très bien mais parfois aussi, ce fichier est incorrect et ça peut arriver avec le même fichier Mp3.
Le programme que j'ai détermine l'emplacement du début des données image ainsi que sa longueur grâce à la balise APIC se trouvant dans le MP3. Ensuite, ces données sont lue byte par byte et sauvées dans une fichier JPG.
Ce sont ces fichiers JPG qui sont parfois erronément encodés, mais pas systématiquement.
 

Discussions similaires

Statistiques des forums

Discussions
313 309
Messages
2 097 033
Membres
106 812
dernier inscrit
Excellou74