Association d'une variable avec un mot pour donner une variable. Problème d'inco

Résolu
lyricshorus Messages postés 3 Date d'inscription jeudi 27 septembre 2007 Statut Membre Dernière intervention 26 septembre 2008 - 26 sept. 2008 à 08:14
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 - 26 sept. 2008 à 08:58
Salut,

Voilà j'ai un problème avec le code qui va suivre mais d'abord je m'explique. 
Je suis en train de faire un programme sous VBA qui va m'écrire automatiquement des lignes de commande AutoCAD dans un fichier *.scr. J'ouvrirai, dans un second temps, ce fichier via AutoCAD. Ceci me dessinera l'objet voulu.
Mon but est de créer une implantation de bâtiment. Pour cela, il me faut les coordonnées de chaque point afin d'implanter les poteaux.
La boucle For...Next me permet de déterminer la coordonnée Y où la est la largeur totale du bâtiment, la_1 est la largeur entre les deux premiers poteaux et la_n est la largeur des deux nième poteaux.
Mon problème se situe au niveau de la ligne écrite en rouge. A cette ligne, j'essaye de récupérer à chaque fois la valeur d'une variable. Pour cela, je fais varier le n. le problème est que, comme j'associe "la_" et la variable n, je me retrouve avec ("la_" & n) de type String. Or, la variable la est de type Integer. Donc je me retrouve avec une incompatibilité de type et je n'arrive pas à résoudre ce problème. J'ai essayé de convertir le type de donnée de ("la_" & n) mais sans succès.
Je vous remercie d'anvance pour votre aide.

_____________________________________________________________________________________________________________________
Private Sub CommandButton4_Click()


Dim n As Integer
Dim i As Integer
Dim la As Integer
Dim la_1 As Integer
Dim la_2 As Integer
Dim la_3 As Integer
Dim portée As String


    i = 1
    la_1 = 10
    la_2 = 20
    la_3 = 30
    
        Print #1, "clayer Epure"
       
        i = 1
       
        While i < (Nbre_nef + 1) + 1
           
            For n = 1 To i
                la = la + ("la_" & n)
            Next n
           
            Print #1, "ligne " & "-3000" & "," & la & " " & (lo_1 + 3000) & "," & la
            Print #1, ""
   
            i = i + 1
       
        Wend

End Sub

6 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
26 sept. 2008 à 08:19
Bonjour,

Ce que tu veux faire (te référer à une variable par une chaîne de caractères) n'est pas réalisable.
Utilise donc tous simplement un tableau d'ynamique donc chaque indice aura une valeur
3
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
26 sept. 2008 à 08:35
Bonjour
Utilise Cstr pour Forcer la conversion vers le type string
Print #1, "ligne " & "-3000" & "," & Cstr(la) & " " & (Cstr(lo_1) + 3000) & "," & Cstr(la)
0
lyricshorus Messages postés 3 Date d'inscription jeudi 27 septembre 2007 Statut Membre Dernière intervention 26 septembre 2008
26 sept. 2008 à 08:46
Ok! merci pour ta rapidité et ton conseil jmfmarques. et merci à toi aussi, loulou69 mais j'ai déjà essayé et ça ne fonctionne pas.
Je vais essayer le tableau croisé dynamique. Je vais regarder comment il faut faire sur le VB France.

Merci.
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
26 sept. 2008 à 08:50
Bonjour, loulou69,

Euh .... ceci est impossible avec la variable la_2 :
toto =  "la_" & "2"
donc également ceci :
la = la + ("la_" & n)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
26 sept. 2008 à 08:55
Exemple simple :
Dim letableau(3) As Integer
  letableau(0) = 1
  letableau(1) = 10
  letableau(2) = 20
  letableau(3) = 30
  MsgBox letableau(0) + letableau(3)

A toi de jouer
0
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
26 sept. 2008 à 08:58
dim la_(4) as integer
au lieu de dim la_1, la_2 , la_3
et
la = la + la_(n)
0
Rejoignez-nous