Salut.
Perso, avec les tableaux, j'utilise beaucoup les plages nommées.
Sur base du tableau suivant, on peut utiliser un code de remplissage qui n'utilise pratiquement pas le listobject (juste pour tester s'il est vide ou pas)
Voici un code qui remplit le tableau en testant qu'il est vide ou pas.
1 2 3 4 5 6 7 8 9 10 11
| Sub AddContact(FirstName As String, LastName As String)
Dim RowIndex As Long
If Range("t_contacts").ListObject.DataBodyRange Is Nothing Then
RowIndex = 1
Else
RowIndex = Range("t_Contacts").Rows.Count + 1
End If
Range("t_contacts[prénom]")(RowIndex).Value = FirstName
Range("t_contacts[nom]")(RowIndex).Value = LastName
End Sub |
Sur un tableau vide, tu peux tester et entrer les deux contacts suivants:
1 2 3 4
| Sub Test()
AddContact "Pierre", "Durand"
AddContact "Martine", "Dupont"
End Sub |
Personnellement, je trouve que c'est plus simple que de travailler avec les listobject.
De plus, j'essaie de ne jamais effectuer les traitements directement dans les userform. Je préfère découpler et utiliser le userform pour ce qu'il est, à savoir un auxiliaire de saisie. Lorsque les données sont saisies, on les passe en paramètres à une fonction
hors userform qui réalise le process. On utilise cette méthode tant pour l'ajout que pour la suppression. Ca permet de tester chaque fonctionnalité en dehors d'un contexte où elle utilise peut-être des mauvaises valeurs de variables (cas typique d'une ligne supprimée qui décale un objet Range). Tu supprimes une ligne en lui passant son numéro, et tu ajoutes sur une ligne en lui passant des données
via une autre fonction. Les fonctions utilisant chacune leurs propres variables, aucun risque de se mélanger les pinceaux... (C'est ma façon psychorigide de coder

)
Partager