XL 2021 insertion d'image provenant d'unecellule dans un userform

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

jere12nba

XLDnaute Nouveau
Bonjour,
J'ai un fichier Excel avec des noms de pièces et la quantité requise pour un assemblage. À côté de cela, j'ai une image de chaque pièce qui n'a pas de chemin défini. Les images sont simplement insérées dans le classeur, et elles sont stockées dans la colonne D.
Lorsque je lance le UserForm, il y a une sorte de liste de contrôle où il faut vérifier si la quantité de chaque pièce requise est présente. Ensuite, je dois entrer "oui" ou "non", et cela passe à la pièce suivante à vérifier.
Pour cela, il faudrait que l'image correspondant à la pièce dans la colonne D apparaisse. J'ai un code pour cela, mais il n'arrive pas à récupérer l'image.
Merci d'avance pour votre aide.

Private Sub ChargerImage()
Dim ws As Worksheet
Dim img As Shape
Dim cell As Range
Dim chartObj As ChartObject
Dim tempFilePath As String
Dim currentRow As Long

' Définir la ligne actuelle (exemple : ligne 2)
currentRow = 2 ' Vous pouvez remplacer par la logique appropriée pour obtenir la ligne actuelle

' Référence à la feuille contenant l'image
Set ws = ThisWorkbook.Sheets("Outillage") ' Assurez-vous que "Outillage" est bien la feuille correcte
Set cell = ws.Cells(currentRow, 4) ' Colonne D pour l'exemple (modifiez si nécessaire)

' Parcourir les formes de la feuille
For Each img In ws.Shapes
' Vérifier si l'image se trouve dans la cellule D (en fonction de la ligne actuelle)
If Not Intersect(img.TopLeftCell, cell) Is Nothing Then
' Copier l'image en tant qu'image bitmap
img.CopyPicture Appearance:=xlScreen, Format:=xlPicture

' Créer un graphique temporaire pour coller l'image
Set chartObj = ws.ChartObjects.Add(Left:=0, Top:=0, Width:=img.Width, Height:=img.Height)
chartObj.Chart.Paste

' Définir un chemin temporaire pour le fichier image
tempFilePath = Environ("TEMP") & "\temp_image.jpg"
chartObj.Chart.Export Filename:=tempFilePath

' Supprimer le graphique temporaire
chartObj.Delete

' Charger l'image dans le contrôle Image1
Me.Image1.PictureSizeMode = fmPictureSizeModeZoom ' Ajuste la taille de l'image
Me.Image1.Picture = LoadPicture(tempFilePath) ' Charge l'image depuis le fichier temporaire

' Supprimer le fichier temporaire après le chargement
Kill tempFilePath

' Rendre l'image visible
Me.Image1.Visible = True

Exit For ' Sortir de la boucle après avoir trouvé l'image
End If
Next img
End Sub
 
Solution
Re

Voici une version plus propre à mon sens..

pour ne pas supprimer ton code, j'ai juste créé un formulaire Unique que tu peux lancer avec le bouton "Lancer USF"
regarde le code, j'y ai mis plein d'explication en commentaires

j'ai ajouté une feuille "Modèle de commande"
Re

Voici une version plus propre à mon sens..

pour ne pas supprimer ton code, j'ai juste créé un formulaire Unique que tu peux lancer avec le bouton "Lancer USF"
regarde le code, j'y ai mis plein d'explication en commentaires

j'ai ajouté une feuille "Modèle de commande"
 

Pièces jointes

Re

Voici une version plus propre à mon sens..

pour ne pas supprimer ton code, j'ai juste créé un formulaire Unique que tu peux lancer avec le bouton "Lancer USF"
regarde le code, j'y ai mis plein d'explication en commentaires

j'ai ajouté une feuille "Modèle de commande"
Je rencontre juste un petit sucis avec votre code, c'est qu'il ne prend en compte que la Désignation et donc si par exemple j'ai 2 pièces "DIN912" et une cofiguration active different "M12x40" et "M12x45". La macro "saute" la 2e pièce car pour la macro c'est la meme pièce alors que non..
 
Voir PJ
j'ai repris le code et la façon de naviguer entre les pièces

J'ai ajouté un texbox qui indique le numéro de la pièce sur les X pièces de l'outil
les boutons suivant et précédent incrémentent ce numéro
et c'est ce numéro qui déclenche le remplissage des combo et affichage de l'image

ce qui manque, c'est de pouvoir selectionner directement dans les combo une désignation et/ou une config et que ca bascule automatiquement sur le bon numéro de pièce..
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
466
Réponses
0
Affichages
378
Réponses
3
Affichages
415
Réponses
3
Affichages
905
Retour