Salut à tous...

Je suis débutant en VB alors si les explications sont pas très clair ou s'il vous manque des infos, n'hésitez pas à me poser des questions.

Alors voilà, j'ai rencontré un problème et ça va faire un moment que je penche dessus. J'ai créé une classe Ligne avec 4 propriétées : les 4 coordonnées X1, Y1, X2, Y2 d'une ligne, et je souhaite passer ces valeurs par référence à une fonction Rotation_Point qui en modifira ces valeurs

J'ai simplifié volontairement le code pour cibler le problème.
Voilà le code que j'ai tapé et qui ne marche pas :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
' Obj est l'objet que je passe en paramètre (ici c'est une Ligne) 
' XO, YO est le point de rotation autour duquel va tourner la ligne 
' Angle_Rot est l'Angle de Rotation que va effectuer la ligne 
Private Sub Rotation_Forme(Obj As Object, ByVal XO As Single, ByVal YO As Single, ByVal Angle_Rot As Single) 
With Obj 
   If TypeOf Obj Is Ligne Then
      Rotation_Point .X1, .Y1, XO, YO, Angle_Rot 
      Rotation_Point .X2, .Y2, XO, YO, Angle_Rot 
   End If 
End With 
End Sub
Pour info, la fonction Rotation_Point recoit bien les valeurs des Points X1, Y1 et X2, Y2, elle les modifie mais une fois sorti de la fonction, les valeurs des 4 propriétées (X1, Y1, X2, Y2) reste inchangées.

Celui-là marche. Mais pour faire tourner une figure avec bcp de point, chose même pas imaginer le tps que ça va mettre s'il faut que je fasse à chaque fois 4 affectations par point. C'est pour ça que je souhaite faire à tout prix un passage par référence.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub Rotation_Forme(Obj As Object, ByVal XO As Single, ByVal YO As Single, ByVal Angle_Rot As Single) 
Dim X As Single 
Dim Y As Single 
With Obj 
If TypeOf Obj Is Ligne Then 
X = .X1 
Y = .Y1 
Rotation_Point X, Y, XO, YO, Angle_Rot 
.X1 = X 
.Y1 = Y 
X = .X2 
Y = .Y2 
Rotation_Point X, Y, XO, YO, Angle_Rot 
.X2 = X 
.Y2 = Y 
End If 
End With 
End Sub
Voilà c tout, j'espère que j'ai pas oublié d'explication.
Merci d'avance....