Bonsoir,
mon idée vu que je ne comprend pas tout :
je laisse votre code de récupération de données sur les différentes journées, je laisse votre code de tri, mais ensuite sous contrôle des erreurs, je lance une boucle sur les shapes de la feuille, si son nom commence par Logo_ alors je le supprime. Ensuite je lance une deuxième boucle allant de la ligne 3 à 83, je récupère le nom en colonne G afin de télécharger l'image correspondant que je "colle" dans la cellule de gauche en colonne F en la réduisant afin qu'elle soit plus petite que la cellule et en la centrant, tout ceci en modifiant son aspect. pour ne pas avoir cette modification de largeur hauteur il faut mettre en commentaire la ligne de code :
.ShapeRange.LockAspectRatio = msoFalse
alors il ne faudra mettre que le Height ou le Width dans les lignes suivantes, sinon c'est la dernière dimension qui sera prise en compte pour afficher l'image.
Le code :
Private Sub CommandButton1_Click()
Dim Sh As Shape
Worksheets("Classement Général").Unprotect "joco"
copieclasstgénéral
Call trigen
' on gère les éventuelles erreurs
On Error Resume Next
' on supprime les logos
For Each Sh In Shapes
If Left(Sh.Name, 5) = "Logo_" Then Sh.Delete
Next Sh
' on les recré
For i = 1 To 83
Image Cells(i, 6), ThisWorkbook.Path & "\" & Cells(i, 6).Offset(, 1).Value & ".png", "Logo_" & Cells(i, 6).Offset(, 1).Value
Next i
On Error GoTo 0
Worksheets("Classement Général").Range("A1").Select
Worksheets("Classement Général").Protect "joco"
End Sub
Sub Image(ByVal RgImage As Range, ByVal NomImage As String, N_Img As String)
Dim Rg As Range, Image As Picture
Set Rg = ActiveSheet.Range(RgImage.Address)
With Rg
Set Image = ActiveSheet.Pictures.Insert(NomImage)
End With
With Image
.Name = N_Img
.ShapeRange.LockAspectRatio = msoFalse
.Width = Rg.Width - 6
.Height = Rg.Height - 6
.Left = Rg.Left + 3
.Top = Rg.Top + 3
End With
Set Rg = Nothing
End Sub
@ bientôt
LouReeD