Bonjour,
Exemple d'un code pour réaliser un trombinoscope :
Soit le tableau structuré "t_Images".
Sub ImporterLesImages()
Dim ListeDesImages As Range, CelluleImage As Range, CelluleDestination As Range
Dim Img As Object 'WIA.ImageFile
Dim ImageLargeur As Single, ImageRatio As Single
Dim MonImage As Shape
Dim RepertoireImage As String
Dim ShImage As Worksheet
Set ListeDesImages = Range("t_Images[Images]")
Set ShImage = Sheets(Range("OngletDestination").Value)
With ShImage
' Suppression des images existantes
'----------------------------------
If .Shapes.Count > 0 Then
For Each MonImage In .Shapes
If MonImage.Name = "ImageFeuille" Then MonImage.Delete
Next MonImage
End If
Set Img = CreateObject("WIA.ImageFile")
For Each CelluleImage In ListeDesImages
RepertoireImage = CelluleImage.Offset(0, 1)
' Recherche des proportions de l'image
'-------------------------------------
With Img
.LoadFile RepertoireImage & "\" & CelluleImage
ImageRatio = .Width / .Height
End With
If CelluleImage.Offset(0, 2) <> "" Then ' Adresse cellule exemple : C7
Set CelluleDestination = ShImage.Range(CelluleImage.Offset(0, 2))
ImageLargeur = CelluleDestination.Width ' Pour fixer la largeur de l'image à la largeur de la colonne prévue
' Insertion de l'image
'---------------------
Set MonImage = .Shapes.AddShape(msoShapeRectangle, CelluleDestination.Left, CelluleDestination.Top, ImageLargeur, ImageLargeur / ImageRatio)
With MonImage
.Name = "ImageFeuille" ' permet d'identifier une shape contenant une image
With .Fill
.Visible = msoTrue
.UserPicture RepertoireImage & "\" & CelluleImage
End With
With .Line
.Visible = msoTrue
.Weight = 1
End With
End With
Set MonImage = Nothing
Set CelluleDestination = Nothing
End If
Next CelluleImage
.Activate
MsgBox "Fin du chargement !", vbInformation, "Chargement des images"
End With
Set Img = Nothing
Set ListeDesImages = Nothing
Set ShImage = Nothing
End Sub