Bonsoir à vous trois, au forum !
En prenant l'idée de waard, que j'ai mis en application dans ArkaLouReeD, je vous propose le fichier joint :
Ci-dessous le code VBA :
Sub ClicBtn()
Dim Btn As String, Coef As Integer
' on récupère le nom du bouton cliqué
Btn = Application.Caller
' ici on dimensionne l'image "crapée" mais une fois définie il n'est plus besoin de le répéter
ActiveSheet.Shapes(Btn).PictureFormat.Crop.PictureWidth = 600
' on scrolle de l'image à gauche de la bande à l'image à droite de la bande,
' sachant que le milieu de la bande correspond à la position 0, il suffit de tester si la position est négative pour savoir de quel côté
' on doit faire le scrol, c'est ce à quoi sert la variable Coef
If ActiveSheet.Shapes(Btn).PictureFormat.Crop.PictureOffsetX < 0 Then Coef = 1 Else Coef = -1
' l'animation est faite avec 19 images moins une (celle de départ), on boucle donc 18 fois
For i = 1 To 18
' à chaque rotation on décale la bande de l'image de 31.58 qui correspond à la largeur de chaque image : 600 / 19 = 31.58
ActiveSheet.Shapes(Btn).PictureFormat.Crop.PictureOffsetX = ActiveSheet.Shapes(Btn).PictureFormat.Crop.PictureOffsetX + (31.58 * Coef)
' on lance la temporisation pour voir l'animation, sinon c'est trop rapide
Temporisation
Next i
End Sub
Sub Temporisation()
' ici pour l'animation on temporise à 0.01 seconde
Dim Tempo As Double
Tempo = Timer
Do
' permet de rendre la main à l'utilisateur, évite qu'Excel se fige et en même temps permet la mise à jour de l'écran
DoEvents
' on boucle "sur place" tant que le centième de seconde ne s'est pas écoulé
Loop While Tempo + 0.01 > Timer
End Sub
Ici le lien du master class de waard sur le sujet : C'est ici !
Le principe : on charge une image, ici une bande horizontale avec 19 images pour créer une animation de bouton :
et on "rogne" cette image afin d'en montrer qu'1/19ième, donc une seule image de la bande, ici soit celle de gauche, soit celle de droite en fonction du ON ou du OFF.
Avec une boucle, on incrémente ou décrémente la position de la bande d'image dans le rognage d'Excel, c'est ce qui fait l'animation.
Plusieurs boutons, il suffit de copier/coller le bouton créé, puis de le renommer afin qu'ils soient gérés individuellement avec l'instruction Application.Caller
Un autre avantage, c'est que l'on ne passe pas par des "contrôles ActiveX", ceci donne une meilleur compatibilité...
@ bientôt
LouReeD