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