Rotation d'une forme ou d'un groupe de forme sur Excel 2010 via VBA
Bonjour à tous,
Je souhaiterais pour les besoins de ma licence, faire tourner une forme via VBA, c'est chose faite cependant je ne parviens pas à faire tourner la forme dans le sens souhaité
J'ai copié ce programme (trouvé sur un site) :
Sub Rotation()
Dim i%
With ActiveSheet.Shapes("Groupe 4")
For i = 360 To 0 Step -10
Application.Wait Time:=Now() + 0.000001
.Rotation = i
'Top = i + 50
'.Left = i + 50
Next
End With
End Sub
Je m'explique : si la forme serait dans un plan à 3 axes (X Y et Z) elle tournerait donc sur l'axe Y
Or je souhaiterais qu'elle tourne sur l'axe Z
Avez vous une solution ? Merci de votre aide
Je précise que je suis sur Excel 2010.
Bonjour,
Ici j'utilise "GetTickCount" pour avoir un pivotement plus rapide que OnTime. Pose un rectangle sur ta feuille nommé "Rectangle 1" et testes les deux Sub, une fait pivoter sur l'axe et l'autre sur le bord. Si tu as des connaissances en trigonométrie, adapte les valeurs si tu veux autre chose :
Declare Function GetTickCount Lib "Kernel32" () As Long
Sub Minuterie(Milliseconde As Long)
Dim Arret As Long
Arret = GetTickCount() + Milliseconde
Do While GetTickCount() < Arret: DoEvents: Loop
End Sub
Sub PivotBord()
Dim S As Shape
Dim Marge_Gauche As Single
Dim Marge_Haut As Single
Dim Y_S As Single
Dim X_S As Single
Dim Angle As Single
Dim I As Integer
Set S = ActiveSheet.Shapes("Rectangle 1")
Marge_Haut = 100
Marge_Gauche = 100
For I = 1 To 360
Angle = Application.Radians(I + 90)
X_S = Marge_Gauche - Marge_Gauche / 2 + Marge_Gauche
Y_S = Marge_Haut - Marge_Haut / 2 + Marge_Haut
With S
.Left = X_S + (Marge_Haut / 2 - 1) * Cos(-Angle)
.Top = Y_S + (Marge_Haut / 2 - 1) * Sin(Angle)
.Rotation = I
End With
'temporisation
Minuterie 50
Next I
End Sub
Sub PivotAxe()
Dim S As Shape
Dim I As Integer
Set S = ActiveSheet.Shapes("Rectangle 1")
For I = 1 To 360
S.Rotation = I
'temporisation
Minuterie 50
Next I
End Sub