Association d'une variable avec un mot pour donner une variable. Problème d'inco [Résolu]

Signaler
Messages postés
3
Date d'inscription
jeudi 27 septembre 2007
Statut
Membre
Dernière intervention
26 septembre 2008
-
Messages postés
672
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
2 juin 2016
-
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

Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
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
Messages postés
672
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
2 juin 2016
1
Bonjour
Utilise Cstr pour Forcer la conversion vers le type string
Print #1, "ligne " & "-3000" & "," & Cstr(la) & " " & (Cstr(lo_1) + 3000) & "," & Cstr(la)
Messages postés
3
Date d'inscription
jeudi 27 septembre 2007
Statut
Membre
Dernière intervention
26 septembre 2008

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.
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Bonjour, loulou69,

Euh .... ceci est impossible avec la variable la_2 :
toto =  "la_" & "2"
donc également ceci :
la = la + ("la_" & n)
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
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
Messages postés
672
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
2 juin 2016
1
dim la_(4) as integer
au lieu de dim la_1, la_2 , la_3
et
la = la + la_(n)