OVH Cloud OVH Cloud

redim preserve

3 réponses
Avatar
lo
Bonjour,

J'essaie vainement de créer un tableau dynamique de dimension 2 mais on
dirait qu'il y a un probleme de syntaxe. La première itération du code
ci-dessous fonctionne mais le programme se plante à la deuxième (message :
L'indice n'appartient pas a la selection)
Remarque la meme macro fonctionne avec un tableau a 1 dimension (1 to i)...
Pouvez-vous m'aider ? en + je suis sur que ca doit etre tout con ...

Merci beaucoup d'avance ;-)

Lo

Sub testRedim()
Dim tablo()
For i = 1 To 20
ReDim Preserve tablo(1 To i, 1 To 2)
tablo(i, 1) = i
tablo(i, 2) = "test"
Next
End Sub

3 réponses

Avatar
michdenis
Bonsoir Lo,

Tu peux utiliser ce qui suit :

Lorsque tu utilises le mot Preserve, seulement la deuxième dimension est redéfinissable !

'-------------------------
Sub testRedim()
Dim tablo()
For i = 1 To 20
ReDim Preserve tablo(1, 1 To i)
tablo(0, i) = i
tablo(1, i) = "test"
Next
End Sub
'-------------------------


Salutations!





"lo" a écrit dans le message de news:
Bonjour,

J'essaie vainement de créer un tableau dynamique de dimension 2 mais on
dirait qu'il y a un probleme de syntaxe. La première itération du code
ci-dessous fonctionne mais le programme se plante à la deuxième (message :
L'indice n'appartient pas a la selection)
Remarque la meme macro fonctionne avec un tableau a 1 dimension (1 to i)...
Pouvez-vous m'aider ? en + je suis sur que ca doit etre tout con ...

Merci beaucoup d'avance ;-)

Lo

Sub testRedim()
Dim tablo()
For i = 1 To 20
ReDim Preserve tablo(1 To i, 1 To 2)
tablo(i, 1) = i
tablo(i, 2) = "test"
Next
End Sub
Avatar
lo
D'accord ! Encore une fois, merci beaucoup michDenis :D

a+

Lo

"michdenis" wrote in message
news:
Bonsoir Lo,

Tu peux utiliser ce qui suit :

Lorsque tu utilises le mot Preserve, seulement la deuxième dimension est
redéfinissable !

'-------------------------
Sub testRedim()
Dim tablo()
For i = 1 To 20
ReDim Preserve tablo(1, 1 To i)
tablo(0, i) = i
tablo(1, i) = "test"
Next
End Sub
'-------------------------


Salutations!





"lo" a écrit dans le message de news:

Bonjour,

J'essaie vainement de créer un tableau dynamique de dimension 2 mais on
dirait qu'il y a un probleme de syntaxe. La première itération du code
ci-dessous fonctionne mais le programme se plante à la deuxième (message :
L'indice n'appartient pas a la selection)
Remarque la meme macro fonctionne avec un tableau a 1 dimension (1 to
i)...
Pouvez-vous m'aider ? en + je suis sur que ca doit etre tout con ...

Merci beaucoup d'avance ;-)

Lo

Sub testRedim()
Dim tablo()
For i = 1 To 20
ReDim Preserve tablo(1 To i, 1 To 2)
tablo(i, 1) = i
tablo(i, 2) = "test"
Next
End Sub





Avatar
Frédéric Sigonneau
Bonjour,

D'une manière générale, dans un tableau à plusieurs dimensions seule la dernière
est redimensionnable lorsqu'on utilise Preserve. Cf l'aide sur Redim :

"Si vous utilisez le mot clé Preserve, vous ne pouvez redimensionner que la
dernière dimension du tableau."

et

"De même, le mot clé Preserve ne permet de redimensionner un tableau qu'en
modifiant la limite supérieure ; toute modification de la limite inférieure
provoque une erreur."

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !

Bonjour,

J'essaie vainement de créer un tableau dynamique de dimension 2 mais on
dirait qu'il y a un probleme de syntaxe. La première itération du code
ci-dessous fonctionne mais le programme se plante à la deuxième (message :
L'indice n'appartient pas a la selection)
Remarque la meme macro fonctionne avec un tableau a 1 dimension (1 to i)...
Pouvez-vous m'aider ? en + je suis sur que ca doit etre tout con ...

Merci beaucoup d'avance ;-)

Lo

Sub testRedim()
Dim tablo()
For i = 1 To 20
ReDim Preserve tablo(1 To i, 1 To 2)
tablo(i, 1) = i
tablo(i, 2) = "test"
Next
End Sub