Beug avec redim preserve
Résolu
quent
-
quent -
quent -
bonjour, il y a une erreur que je ne comprends pas :
lorsque j'utilise redim preserve 2 fois, le programme plante la deuxieme fois.
exemple, si je met :
dim tableau() as variante
redim preserve tableau(1 to 2,1 to 2)
redim preserve tableau(1 to 3,1 to 2)
ca beugue a la derniere ligne.
savez-vous pourquoi ?
lorsque j'utilise redim preserve 2 fois, le programme plante la deuxieme fois.
exemple, si je met :
dim tableau() as variante
redim preserve tableau(1 to 2,1 to 2)
redim preserve tableau(1 to 3,1 to 2)
ca beugue a la derniere ligne.
savez-vous pourquoi ?
5 réponses
-
Bonjour,
Vous utilisez ReDim Preserve pour pouvoir créer un tableau dynamique. Il faut savoir que seule la seconde dimension du tableau peux être incrémentée.
Par conséquent :dim tableau() as Variant redim preserve tableau(1 to 2,1 to 2) redim preserve tableau(1 to 2,1 to 3)
Remarque : Tu peux redimensionner et préserver ton tableau en une fois, si tu connais ces bornes à l'avance.
Ainsi :Dim tableau() As Variant
ReDim Preserve tableau(1 To 13, 1 To 5)
Cordialement,
Franck -
Bonjour,
vous ne pouvez redimensionner que la derniere dimension:
redim preserve tableau(1 to 2,1 to 2)
redim preserve tableau(1 to 2,1 to 3) -
merci beaucoup, dans mon cas j'ai juste besoins d'inverser les dimensions mais imaginons que je veuille changer les deux dimension
par exemple :
dim tableau() as variante
redim preserve tableau (1 to 2,1 to 2)
redim preserve tableau (1 to 3,1 to 3)
comment devrai je faire ?-
Dans ce cas, la seule solution à ma connaissance est de passer par un tableau intermédiaire, d'effacer ton tableau et de le redimensionner.
Comme le montre cet exemple :Sub test() Dim tableau() As Variant, Temporaire() As Variant ReDim Preserve tableau(1 To 2, 1 To 3) For i = 1 To 2 For j = 1 To 3 tableau(i, j) = "Liste " & i & j Next j Next i ReDim Preserve Temporaire(1 To 2, 1 To 3) Temporaire = tableau Erase tableau ReDim Preserve tableau(1 To 3, 1 To 3) For i = 1 To 2 For j = 1 To 3 tableau(i, j) = Temporaire(i, j) Next j Next i Erase Temporaire tableau(3, 1) = "ajout1" tableau(3, 2) = "ajout2" tableau(3, 3) = "ajout3" Debug.Print tableau(1, 2) & " - " & tableau(2, 3) & "- " & tableau(3, 2) End Sub
-
-
Re,
mais imaginons que je veuille changer les deux dimension Pas possible -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
-
Peut être que tu n'as pas vu ma réponse : https://forums.commentcamarche.net/forum/affich-30657091-beug-avec-redim-preserve#6
-
-