Rotation image dans un userform
Bonjour à tous,
Je cherche à faire fonctionner une animation dans un userform.
L'animation fonctionne correctement sur une feuille, voir le fichier joint Cadenas.
Mais je ne parviens pas à la faire fonctionner dans un userform. Le mouvement de la clé vers le cadenas se produit avec le code ci-dessous, mais pour faire le groupement et la rotation, ça ne fonctionne pas, et je ne sais pas comment procéder. (Attention, je suis un débutant en VBA)
Cadenas_fermé.Left = 390
Cadenas_fermé.Top = 18
Cadenas_fermé.Height = 66
Cadenas_fermé.Width = 36
Cadenas_ouvert.Left = 384
Cadenas_ouvert.Top = 6
Cadenas_ouvert.Height = 96
Cadenas_ouvert.Width = 48
Clé.Left = 396
Clé.Top = 90
Clé.Height = 48
Clé.Width = 24
Cadenas_fermé.Visible = True
Cadenas_ouvert.Visible = False
Clé.Visible = True
secondes = 0.01
For i = 1 To 36 Step 0.5
timer_avant = Timer 'Variable timer_avant calée sur le Timer
Do While Timer < timer_avant + secondes 'Permet d'attendre la durée secondes renseignée au-dessus
DoEvents 'Permet d'attendre la durée secondes renseignée au-dessus
Loop 'Permet d'attendre la durée secondes renseignée au-dessus
Clé.Top = 90 - i 'Déplace la flèche par micro-modification de la position
Next
For i = 1 To 4
timer_avant = Timer 'Variable timer_avant calée sur le Timer
Do While Timer < timer_avant + secondes 'Permet d'attendre la durée secondes renseignée au-dessus
DoEvents 'Permet d'attendre la durée secondes renseignée au-dessus
Loop 'Permet d'attendre la durée secondes renseignée au-dessus
Cadenas_fermé = oGdi.Rotate(0 + i)
Next
For j = 1 To 3
For i = 1 To 8
timer_avant = Timer 'Variable timer_avant calée sur le Timer
Do While Timer < timer_avant + secondes 'Permet d'attendre la durée secondes renseignée au-dessus
DoEvents 'Permet d'attendre la durée secondes renseignée au-dessus
Loop 'Permet d'attendre la durée secondes renseignée au-dessus
Cadenas_fermé = oGdi.Rotate(0 - i)
Next
For i = 1 To 8
timer_avant = Timer 'Variable timer_avant calée sur le Timer
Do While Timer < timer_avant + secondes 'Permet d'attendre la durée secondes renseignée au-dessus
DoEvents 'Permet d'attendre la durée secondes renseignée au-dessus
Loop 'Permet d'attendre la durée secondes renseignée au-dessus
Cadenas_fermé = oGdi.Rotate(0 + i)
Next
Next
For i = 1 To 4
timer_avant = Timer 'Variable timer_avant calée sur le Timer
Do While Timer < timer_avant + secondes 'Permet d'attendre la durée secondes renseignée au-dessus
DoEvents 'Permet d'attendre la durée secondes renseignée au-dessus
Loop 'Permet d'attendre la durée secondes renseignée au-dessus
Cadenas_fermé = oGdi.Rotate(0 - i)
Next
Cadenas_fermé.Visible = False
Cadenas_ouvert.Visible = True
Clé.Visible = False
Application.Wait Now + TimeValue("00:00:02") '2 secondes
Unload MePouvez-vous m'aider à faire fonctionner ma petite animation dans un userform ?
Merci
Bonjour skyliniste,
il faut utilisé une librairie graphique GDI,
je ne l'ai jamais utilisé mais j'ai lu de bon commentaire au sujet de cette classe.
Oui merci, mais je n'arrive pas à mettre ça en place ! Quelqu'un peut-il m'expliquer car je ne comprends pas tout ce qu'il faut faire pour obtenir une bête rotation ?!
Toujours personne pour m'aider ?
J'ai solutionné mon problème en créant de multiples images que je fais apparaître et disparaître pour donner l’illusion d'une rotation comme je n'ai pas su retranscrire mon code qui fonctionnait bien sur une feuille à un userform.
Bonjour,
Je viens de voir ton sujet .... qui est intéressant ...
Ce serait sympa de partager ta solution avec le Forum pour tous les futurs lecteurs ...
Par avance, merci ...
Bonjour James,
C'était peut-être long, mais là au moins je savais ce que je faisais !
Enregistrement de mon image avec une rotation, d'un degré par degré via Photofiltre.
Je me retrouve avec l'image originale, 10 images de +1 à +10 degrés, et 10 images de -1 à -10 degrés.
Ensuite, comme la fonction Rotation (0 + i) en boucle ne passe pas sur l'userform, j'ai donc paramétré chacune des images à coup de .Visible = False, .Visible = True, coupé par des Sleep, et agrémenté d'une boucle pour les allers-retours.
Voilà
Salut,
Merci ... :smile :