Se connecter avec
S'enregistrer | Connectez-vous

Problème de Boucle et récupération de données dans un Userform

Dernière réponse : dans Programmation

Bonjour,
j'ai un petit problème pour faire une boucle.
Je programme avec leVisual Basic de CATIA V5 un logiciel de CAO.

Le code est le suivante :
  1. 'Création du texte
  2.  
  3. Dim iFontSize As Double
  4. Dim Compteur1 As Integer
  5. Dim Compteur2 As Integer
  6. iFontSize = 6
  7. For Compteur1 = 3 To 1 Step -1
  8. For Compteur2 = 10 To 30
  9. Set myText = myView.Texts.Add(TRef(Compteur1).Value, -50, Compteur2)
  10. Next Compteur2
  11. Next Compteur1


J'explique d'abord le fonctionnement de cette commande.
Par exemple : La commande Set myText = myView.Texts.Add(CATIA_V5, -50, 30) sert à mettre dans un dessin créé sous CATIA V5
le texte "CATIA_V5" au coordonnées -50mm sur X et 30mm sur Y.

Je veut donc créer du texte à différents endroits suivant une boite de dialogue qui apparaitra.
La boucle 1 prendra le texte dans les zones de texte (text box) apellées "TRef1", "TRef2" et "TRef3".
La boucle 2 fera varié l'emplacement du texte selon les coordonnées de Y.

Le problème est que je n'arrive pas à réaliser la boucle du Compteur1.
La référence Tref1, Tref2 et Tref3 ne sont pas prise en compte, par exemple au commencement de la 1ere boucle la commande prend donc cette forme :
  1. Set myText = myView.Texts.Add(TRef(3).Value, -50, 10)



Comment faire pour prendre la valeur de la zone de texte en compte pour quelle change à chaque boucle...??

Merci d'avance pour vos réponses.
Lassé par la pub ? Créez un compte

Citation :
Ce n'est pas possible.

Mais on peut ruser ... http://www.presence-pc.com/forum/ppc/Programmation/recu...



En fait si c'est possible, j'ai trouver une autre astuce assez plus simple.Ca marche nikel...

  1. 'Création du texte
  2.  
  3. Dim iFontSize As Double
  4. Dim Cpt1 As Integer
  5. Dim Cpt2 As Integer
  6. Dim liste(1 To 3) As String
  7.  
  8.  
  9.  
  10. iFontSize = 6
  11.  
  12. For Cpt1 = 3 To 1 Step -1
  13.  
  14. For Cpt2 = 10 To 30 Step 10
  15.  
  16. If Cpt1 = 1 And Cpt2 = 10 Then liste(Cpt1) = UserForm1.TRef3.Value
  17. If Cpt1 = 2 And Cpt2 = 20 Then liste(Cpt1) = UserForm1.TRef2.Value
  18. If Cpt1 = 3 And Cpt2 = 30 Then liste(Cpt1) = UserForm1.TRef1.Value
  19.  
  20. Set myText = myView.Texts.Add(liste(Cpt1), -50, Cpt2)
  21. myText.SetFontName 0, 0, "KOHG"
  22. myText.SetFontSize 0, 0, iFontSize
  23. myText.SetParameterOnSubString catCharRatio, 0, 0, 60
  24. myText.SetParameterOnSubString catCharSpacing, 0, 0, 35
  25. liste(1) = ""
  26. liste(2) = ""
  27. liste(3) = ""
  28.  
  29. Next Cpt2
  30.  
  31. Next Cpt1
  32.  
  33.  
  34. 'myText.ActivateFrame catRectangle
Expert Programmation

Oui, c'est normalement ce que tu aurais du trouver du premier coup.

La "ruse" de l'autre topic, c'est quand on a 1236554789 composants. Là ça devient vite très chiant !
Lassé par la pub ? Créez un compte