Redimensionner une variable tableau créé à partir d'un TS de 2 colonnes

Bonjour à toutes et à tous,

Je ne comprends pas pourquoi ça ne veut pas fonctionner

J'ai un tableau structuré de 2 colonnes (Ref/Désignation)
Pour traitement plus rapide, je passe par une variable tableau et je souhaite ajouter des lignes à ce tableau

Private Sub MàJ()
  Dim Ind as long
  Dim MonTab As Variant
  With ThisWorkbook.Sheets("Données")
    MonTab = .Range("TSdon").Value
  End With
  Ind = Ubound(MonTab,2)
  ' Pour l'exemple
  ReDim Preserve MonTab(1 To 2, Ind to Ind + 1)
  MonTab(1, Ind) = "12345"
  MonTab(2, Ind) = "ma désignation"
End Sub

Et j'ai une erreur 9 sur la ligne "ReDim..."

Qu'est-ce que je ne fais pas correctement ?

Par avance merci

Bonjour,

Si tu regardes le tableau dans l'éditeur VB via "Fenêtre Espion", tu verras que la 1ère dimension du tableau représente les lignes et la deuxième les colonnes. Or avec Redim tu ne peux redimensionner que la dernière dimension d'un tableau donc les colonnes et donc pas ce que tu veux.

Pourquoi ne pas travailler directement avec le TS ?

  With ThisWorkbook.Sheets("Données").Listobjects("TSdon")
    .ListRows.Add    ' ajout d'une ligne
    nNumLigAjout = .ListRows.Count    ' N° de la ligne ajoutée
    .DataBodyRange(nNumLigAjout, 1).Value = "12345"
    .DataBodyRange(nNumLigAjout, 2).Value = "Ma désignation"
'ou
    .ListColumns("Nom de la colonne 1").DatabodyRange(nNumLigAjout).Value = "12345"
    .ListColumns("Nom de la colonne 2").DatabodyRange(nNumLigAjout).Value = "Ma désignation"
  End With

Cdlt,

Cylfo

Bonjour Cylfo et merci

Je viens de m'en rendre compte effectivement, que mon tableau était dans le mauvais sens

Pourquoi ne pas travailler directement avec le TS... parce que le code donné n'est que pour l'exemple, mais je suis amenée à traiter un très grand nombre de lignes

Problème résolu en faisant

Private Sub MàJ()
  Dim Ind as long
  Dim MonTab As Variant, NewTab()
  With ThisWorkbook.Sheets("Données")
    MonTab = .Range("TSdon").Value
  End With
  ' Dernier indice de mon tableau
  Ind = Ubound(MonTab,1)
  ' Mettre le tableau dans le bon sens
  NewTab = Application.Transpose(MonTab)
  ' Pour l'exemple
  Ind = Ind + 1
  ReDim Preserve NewTab(1 To 2, 1 to Ind)
  NewTab(1, Ind) = "12345"
  NewTab(2, Ind) = "ma désignation"
  With ThisWorkbook.Sheets("Données")
    .Range("TSdon").Resize(UBound(NewTab, 2), 2).Value = Application.Transpose(NewTab)
    ' Faire le tri avec les nouvelles lignes
  End With
End Sub

Sujet [RESOLU]

A+

Rechercher des sujets similaires à "redimensionner variable tableau cree partir colonnes"