TextBox dans un tableau Excel

Saltimbanque77 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
Saltimbanque77 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

J'ai consulter pas mal de forum sans succès à mon sujet.
J'utilise un userform pour ajouter des enregistrements à ma liste, mais comment inclure chaque ligne en vba dans le tableau ?
Voici le bout de code qui fonctionne actuellement (j'ai volontairement exclu les autres champs que celui du Nom, la mécanique est la même) :

Private Sub Validation()
Dim L As Integer
L = Sheets("Opérateurs").Range("A1048576").End(xlUp).Row + 1 'Placer le nouvel enregistrement à la première ligne non vide
If UserForm1.TextBox1.Value = "" Then 'Champs Nom obligatoire
s = MsgBox("Le champ : " & Label1 & " est obligatoire", vbCritical, "Erreur de saisie")
UserForm1.TextBox1.SetFocus
Exit Sub
End If
Sheets("Opérateurs").Range("A" & L).Value = UCase(TextBox1.Text) 'Attribution des colones
End Sub

Ci-joint, une image du résultat actuel.

J


Merci pour vos réponses,
A voir également:

1 réponse

thev Messages postés 1987 Date d'inscription   Statut Membre Dernière intervention   715
 
Bonjour,

Il faut utiliser les propriétés et méthodes associées à ton objet Tableau.
Si le nom de ton tableau est "tableau1" et se trouve dans la feuille Opérateurs, voici le code pour ajouter et remplir une ligne :

With Sheets("Opérateurs").ListObjects("tableau1")
'ajout d'une ligne vierge à la fin du tableau
.ListRows.Add
'indice dans la feuille, de la ligne correspondant à la première cellule vide du champ "Nom"
i = .ListColumns("Nom").Range.Find("", SearchDirection:=xlNext).Row
'indice relatif dans l'objet tableau1, de la ligne correspondant à la première cellule vide du champ "Nom"
i = i - .HeaderRowRange.Row
'remplissage lignes
.ListColumns("Nom").DataBodyRange.Rows(i).Value = UCase(TextBox1.Text)
.ListColumns("Prénom").DataBodyRange.Rows(i).Value = TextBox2.Value
.ListColumns("Date de naissance").DataBodyRange.Rows(i).Value = TextBox3.Value
.ListColumns("Téléphone").DataBodyRange.Rows(i).Value = TextBox4.Value
.ListColumns("Courriel").DataBodyRange.Rows(i).Value = TextBox5.Value
End With



Pour obtenir le nombre de lignes du tableau

With Sheets("Opérateurs").ListObjects("tableau1")
'nombre de lignes du tableau
nb_lignes = .ListRows.Count 
End With
0
Saltimbanque77 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   2
 
Bonjour thev,

Merci pour ta réponse.
Après essai, j’obtiens un blocage à cette ligne :

i = .ListColumns(inv_domaine).Range.Find("", SearchDirection:=xlNext).Row
(Erreur "9" l'indice n'appartient pas à la sélection)

N'étant pas suffisamment caler sur le sujet, je dois admettre que je n'ai pas saisie l'utilité du terme (inv_domaine).

Merci pour tes lumières,

Cordialement,
0
thev Messages postés 1987 Date d'inscription   Statut Membre Dernière intervention   715 > Saltimbanque77 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Bonsoir,

Erreur de transposition du code qui fonctionne dans une de mes applications que j'ai corrigée ultérieurement (voir rectification du code ci-dessus)
i = .ListColumns("Nom").Range.Find("", SearchDirection:=xlNext).Row
0
Saltimbanque77 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   2 > thev Messages postés 1987 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour thev,

Ton correctif fonctionne parfaitement, un grand MERCI pour ton aide.

Bien cordialement.
0