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 SubEst ce que la méthode utilisé est la bonne? et si non quelle est la bonne démarche?
Merci
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 exempleMais, à 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 SubA+