Bonjour,
Comme dit Galopin, cette ligne de code n'a pas vraiment de sens car quand on utilise ce type d'instruction :
Range("Tableau5")(Index).Propriété voulue
en fait, on fait référence à la cellule ordinale donc, si par exemple le tableau contient 5 colonnes, cette instruction :
Range("Tableau5")(7).Value
va retourner la valeur de la cellule colonne 2 ligne 2 donc 7éme cellule en partant du haut vers le bas et de la gauche vers la droite un peu comme dans cet exemple avec des tableaux :
Sub Test()
Dim Tbl1(1 To 2)
Dim Tbl2(1 To 2) As String
Dim Tbl3(1 To 2) As String
Tbl2(1) = "Valeur 1"
Tbl2(2) = "Valeur 2"
Tbl3(1) = "Valeur 3"
Tbl3(2) = "Valeur 4"
Tbl1(1) = Tbl2
Tbl1(2) = Tbl3
MsgBox Tbl1(1)(1) '---> Valeur 1
MsgBox Tbl1(2)(2) '---> Valeur 4
End Sub
Ce qu'on utilise assez souvent avec la fonction Split() !
Donc, pour avoir le numéro de la ligne libre sous le tableau, utiliser simplement :
dlg = Range("Tableau5").Rows.Count + 1
Comme c'est un tableau structuré (ListObject) je pense qu'il estg préférable d'utiliser les outils dédiés comme par exemple ce groupe d'instructions :
Dim Lig As ListRow
Set Lig = ActiveSheet.ListObjects("Tableau5").ListRows.Add
Lig.Range(1).Value = "Valeurt en colonne 1"
Lig.Range(2).Value = "Valeurt en colonne 2"
Lig.Range(3).Value = "Valeurt en colonne 3"
Avec ceci, pas besoin de chercher la dernière ligne du tableau incrémentée de 1 pour ajouter le nouvel enregistrement !