Redimensionner tableau VBA

Bonjour,

Je souhaite redimentionner un tableau existant à partir de deux variables X et Y, qui définisent le nombre de ligne et colonnes.

Je souhaite que les formules existantes dans le tableau soient conservées, j'ai donc utilisé la formule "ReDim Preserve" sans sucès.

Sub Rectangle1_Clic()
    'redim tableau
    Dim X As Byte, Y As Byte
    Dim tableau() As String
    X = Feuil1.Range("AZ4").End(xlToLeft).Column
    Y = Feuil1.Range("B" & Rows.Count).End(xlUp).Row
    ReDim Preserve tableau(X, Y)
    Range(Feuil1.Cells(4, 2), Feuil1.Cells(4, X)).Sort Key1:=Range("B4"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal

End Sub

Est ce que la méthode utilisé est la bonne? et si non quelle est la bonne démarche?

Merci

147redim-tableau.xlsm (15.91 Ko)

Bonjour,

Sauf cas très exceptionnel (à réserver à des utilisateurs confirmés) ce genre de tableau Excel devrait toujours commencer à la cellule A1 (pas de lignes vides en haut et pas de colonne vide à gauche)

Hum... Ce n'est pas une obligation stricte : Juste une vive recommandation personnelle !

Redim ne s'applique qu'aux tableaux (Array) de VBA. Pas aux tableau d'Excel.

De toute façon Redim ne s'applique qu'à la dernière dimension d'un Array.

Si on voulait vraiment procéder de cette façon on écrirait :

ActiveSheet.ListObjects("Tableau1").Resize Range("$A$1:$G$10") 'par exemple

Mais, à ce stade, je doute fort que cela soit utile : En pratique quand on veut agrandir ce type de tableau, il suffit de rajouter un en-tête supplémentaire ou/et un nom supplémentaire dans la première colonne...

Autre manière de voir les choses : (Pour ajouter 5 colonnes et 5 lignes)

Sub test()
Dim i, x

For i = 1 To 5 'Par exemple
x = [Tableau1].Columns.Count
Cells(1, x + 1) = "date"
Next

For i = 1 To 5 'Par exemple
x = [Tableau1].Rows.Count
Cells(x + 2, 1) = x + 1
Next

End Sub

A+

Rechercher des sujets similaires à "redimensionner tableau vba"