Erreur initialisation tableau [Résolu]

Signaler
-
 lapinou -
Bonjour,

J'ai un petit souci de : "l'indice n'appartient pas à la sélection"
- J'ai un tableau dynamique :
Dim elid()

J'ai une boucle qui va remplir ce tableau. De sorte, que je ne suis pas capable de dire combien de valeurs seront contenues dans le tableau. Je ne peux donc pas utiliser ReDim. Mais du coup il lui manque une dimension dès que i=1. Comment puis-je m'en sortir ?

Dim i as integer
Dim j as integer
Dim k as integer
Dim elid()

i = 0
For k = 1 To nbpts - 1
For j = 1 To 3
elid(i) = 30016021 + (j - 1) + (k - 1) * 40
MsgBox (elid(i))
i = i + 1
Next j

En espérant avoir un peu d'aide

2 réponses

Messages postés
1868
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020

Bonjour,

Il faut faire le ReDim dans la boucle comme ceci :

Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim elid()
i = 0

For k = 1 To nbpts - 1
    For j = 1 To 3
        ReDim elid(i)
        elid(i) = 30016021 + (j - 1) + (k - 1) * 40
        MsgBox (elid(i))
        i = i + 1        
    Next j
Next k


Juste une précision le ReDim efface les données du tableau au fur et à mesure.
Si on souhaite conserver les données du tableau (ce qui est le plus souvent le cas) voici la syntaxe :

ReDim Preserve elid(i)


A+
Cordialement,
Merci beaucoup !

J'ai 1 question qui se rajoute.
La boucle que j'utilise pour remplir le tableau fait partie d'une procédure que je vais répêter à plusieurs reprise.
Je dois donc mettre le Preserve dans la boucle mais une fois cette première boucle terminée, comment puis-je réinitialiser mon tableau ?

Redim elid(0) ??

merci pour vos réponses
Messages postés
1868
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020

Oui, si c'est dans la même procédure pas de problème le premier ReDim sans "Preserve" efface les données.
Impec'
Merci beaucoup !