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
Rechercher des sujets similaires à "rotation forme groupe 2010 via vba"