Beug avec redim preserve

Résolu
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 ?

5 réponses

  1. Re,

    mais imaginons que je veuille changer les deux dimension Pas possible
    0
    1. 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 ?
      0
      1. Modérateur
        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
        0
    2. 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)
      0
      1. Modérateur
        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
        0