[RESOLU] quelle correction à apporter pour le traçage d'une rosace régulière

Roland_M

XLDnaute Barbatruc
Bien le bonjour à tous,

à cause de la résolution de l'écran je n'arrive pas à tracer une rosace régulièrement(voir image)
je ne retrouve plus la correction à apporter à mes calculs pour tracer cette rosace correctement ?
si quelqu'un a une idée elle sera bien venue ! Merci d'avance !

imag1.jpg


Ma routine:
Code:
Sub Rosace()
ActiveSheet.DrawingObjects.Delete
Xcentre = 350: Ycentre = 250: R = 240: Pas = 15
For P = 0 To 360 - Pas Step Pas
X0# = Xcentre + R * Sin(P)
Y0# = Ycentre + R * Cos(P)
For I = P + Pas To 360 - Pas Step Pas
X# = Xcentre + R * Sin(I)
Y# = Ycentre + R * Cos(I)
'ActiveSheet.Shapes.AddLine X0, Y0, X, Y
With ActiveSheet.Shapes.AddLine(X0, Y0, X, Y).Line
    .DashStyle = msoLineSolid
    .ForeColor.RGB = RGB(120, 0, 120)
End With
Next
Next
End Sub
 

Pièces jointes

  • imag1.jpg
    imag1.jpg
    96.5 KB · Affichages: 84
Dernière édition:

Roland_M

XLDnaute Barbatruc
Re : quelle correction à apporter pour le traçage d'une rosace régulière

re

bon, j'ai corrigé comme ceci est ça semble correcte ! mais quelque chose m'échappe !?

imag2.jpg

Code:
Sub Rosace()
ActiveSheet.DrawingObjects.Delete
Xcentre = 350: Ycentre = 250: R = 220: Pas = 0.3: Pmax = Pas * 20
For P = 0 To Pmax Step Pas
X0# = Xcentre + R * Sin(P)
Y0# = Ycentre + R * Cos(P)
For I = P + Pas To Pmax Step Pas
X# = Xcentre + R * Sin(I)
Y# = Ycentre + R * Cos(I)
'ActiveSheet.Shapes.AddLine X0, Y0, X, Y
With ActiveSheet.Shapes.AddLine(X0, Y0, X, Y).Line
    .DashStyle = msoLineSolid
    .ForeColor.RGB = RGB(120, 0, 120)
End With
Next
Next
End Sub
 

Pièces jointes

  • imag2.jpg
    imag2.jpg
    106.4 KB · Affichages: 77
Dernière édition:

Paf

XLDnaute Barbatruc
Re : quelle correction à apporter pour le traçage d'une rosace régulière

re,

pour la conversion , solutions possibles :

utiliser Pi avec Pi = 4 * Atn(1)

X0# = Xcentre + R * Sin(P * Pi)

ou la fonction Excel RADIANS

X0# = Xcentre + R * Sin(Application.Radians(P))

A+

EDIT: Oups !!! avec Pi il fallait écrire : X0# = Xcentre + R * Sin(P * Pi/180)
 
Dernière édition:

Roland_M

XLDnaute Barbatruc
Re : quelle correction à apporter pour le traçage d'une rosace régulière

re

encore merci Paf

j'utilisais justement > WorksheetFunction.Radians(Degre)

sinon j'avais > WorksheetFunction.Pi * Degre / 180

bonne journée !

ce qui donne:

Code:
Sub Rosace()
ActiveSheet.DrawingObjects.Delete
Xcentre = 750: Ycentre = 250: R = 220: Pas = 12
For I = 0 To 360 Step Pas
Rad# = WorksheetFunction.Radians(I): X0@ = Xcentre + R * Sin(Rad#): Y0@ = Ycentre + R * Cos(Rad#)
For I2 = I + Pas To 360 Step Pas
Rad# = WorksheetFunction.Radians(I2): X@ = Xcentre + R * Sin(Rad#): Y@ = Ycentre + R * Cos(Rad#)
With ActiveSheet.Shapes.AddLine(X0, Y0, X, Y).Line
 .DashStyle = msoLineSolid 'ligne
 .ForeColor.RGB = RGB(0, 140, 0) 'mauve=RGB(120, 0, 120) vert=RGB(0, 180, 0)
End With
Next: Next
End Sub
 
Dernière édition:

Statistiques des forums

Discussions
312 175
Messages
2 085 953
Membres
103 059
dernier inscrit
gib17