Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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...

Marc Vanlindt

XLDnaute Nouveau
Bonjour Sylvanu.
Je connais bien (et même très bien) Mp3Tag. C'est un logiciel surpuissant pour les tags et c'est avec lui que je mets à jours tous mes tags, y compris les pochettes) et j'exporte mes fichiers musicaux au format .csv pour les récupérer en Excel.
Pour les pochettes, il faut sélectionner l'ensemble des morceaux d'un même cd, coller ou charger le fichier image (click droit sur la zone image) et choisir l'option voulue.
Pour avoir le format jpg, click droit sur l'image, option "ajuster". Cela permet d'avoir réduire le volume si l'image est trop grand (et prend ainsi beaucoup de place au sein du mp3) et de choisir le format (de mémoire, c'est png, jpg ou bmp.
C'est un programme que j'utilise (presque) tous les jours.
Si tu as un besoin spécifique, n'hésite pas à me contacter.
Voici quelques liens pour des infos utiles :
 

patricktoulon

XLDnaute Barbatruc
ok celui là toute mes méthode marche

donc a mon avis le mp3 précédent a été mal tagué
d'ailleur j'ai regardé avec mes codes en binaire dans le red(1,2,3,4) le id3 et id4 il y a des morceaux d'image un peu partout
 

patricktoulon

XLDnaute Barbatruc
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 (*.jpg;*.mp3), *.jpg;*.mp3", 1, "ouvrir une image")
    If filetoopen = False Then Exit Sub
  
    Set OBJstream = CreateObject("ADODB.Stream")    'object utilisé ADODB stream
    OBJstream.Open: OBJstream.Type = 1    ' open with no arguments makes the stream an empty container
    OBJstream.LoadFromFile (filetoopen)    'on load le fichier dans l'object
    BB = OBJstream.Read()    ' on prend directement tout le paquet
    '**************************************
    ReDim tablo(UBound(BB))
    For i = 0 To UBound(BB): tablo(i) = BB(i): Next
    code = "255,216" & Split(Split(Join(tablo, ","), "255,216")(1), "255,217")(0) & "255,217"
   Debug.Print code
   tablo = Split(code, ",")
    jpegFile = FreeFile
    Open Environ("userprofile") & "\Desktop\imagetemp.jpg" For Binary Access Write Lock Write As jpegFile
    For i = 0 To UBound(tablo)
        If IsNumeric(tablo(i)) Then by = tablo(i): Put jpegFile, , by
    Next i
    Close jpegFile
End Sub
 

Marc Vanlindt

XLDnaute Nouveau
Je crois savoir pourquoi. Un Mp3 permet d'avoir plusieurs images (Front Cover, Back cover, other...)
Dans le fichier "Optimisme" il y avait 3 images. Je les ai supprimées et remplacée par une seule image. J'ai essayé avec ton code et... ça marche !
 

patricktoulon

XLDnaute Barbatruc
du genre comme ça par exemple
VB:
Sub extractImageTest()
    Dim by As Byte, jpegFile&, TbL
    Dim filetoopen As Variant
    filetoopen = Application.GetOpenFilename("jpeg Files (*.jpg;*.mp3), *.jpg;*.mp3", 1, "ouvrir une image")
    If filetoopen = False Then Exit Sub
    TbL = GetBinaryArrayJpg_OnFile(filetoopen)
    If Not IsArray(TbL) Then MsgBox "Un problème dans l'extraction c'est produit": Exit Sub
    jpegFile = FreeFile
    Open Environ("userprofile") & "\Desktop\imagetemp.jpg" For Binary Access Write Lock Write As jpegFile
    For i = 0 To UBound(TbL)
        If IsNumeric(TbL(i)) Then by = TbL(i): Put jpegFile, , by
    Next i
    Close jpegFile

End Sub

'cette fonction récupère juste l'array de bits concernant le jpg
Function GetBinaryArrayJpg_OnFile(Fichier)
    Dim OBJstream, BB() As Byte, b As Long, tablo
    Set OBJstream = CreateObject("ADODB.Stream")
    OBJstream.Open: OBJstream.Type = 1
    OBJstream.LoadFromFile (Fichier)
    BB = OBJstream.Read()
    ReDim tablo(UBound(BB))
    For i = 0 To UBound(BB): tablo(i) = BB(i): Next
    code = "255,216" & Split(Split(Join(tablo, ","), "255,216")(1), "255,217")(0) & ",255,217"
    GetBinaryArrayJpg_OnFile = Split(code, ",")
End Function
 

Marc Vanlindt

XLDnaute Nouveau
Grâce à ton code, j'ai enfin ce que je voulais. Je travaille maintenant à intégrer tout ça à mon programme de gestion de MP3. Je pense que, demain dans la journée, ce sera fait.
Je l'ai déjà intégrer dans feuille test et ça marche parfaitement.
Je la joint en annexe. Il suffit maintenant de mettre le chemin complet dans la cellule K1 et cliquer sur le bouton. L'image s'affiche dans une userform.
Encore merci car, sans toi, je n'y serais jamais arrivé.
Bonne soirée.
Marc
 

Pièces jointes

  • Read-Image-Mp3.xlsm
    25.8 KB · Affichages: 2

Marc Vanlindt

XLDnaute Nouveau
C'est exactement la même scénario que j'ai eu avec ChatGpt, des morceaux de code qui génèrent des erreur à n'en plus finir, des tentatives de corrections aussi lourdes les une que les autres mais qui jamais ne fonctionnent, etc.. Bon. Si on lui demande : X+X = 4 Que vaut X ? Il répondra correctement. (Voir image !)
Fortiche, hein ?
Là-dessus, je vais me coucher.
Bonne nuit!
 

Pièces jointes

  • 2x.png
    13.5 KB · Affichages: 5

Discussions similaires

Réponses
14
Affichages
357
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…