TextBox dans un tableau Excel

Fermé
Saltimbanque77 Messages postés 4 Date d'inscription jeudi 14 juillet 2016 Statut Membre Dernière intervention 22 novembre 2016 - 21 nov. 2016 à 10:17
Saltimbanque77 Messages postés 4 Date d'inscription jeudi 14 juillet 2016 Statut Membre Dernière intervention 22 novembre 2016 - 22 nov. 2016 à 07:36
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 1925 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 18 décembre 2024 692
Modifié par thev le 21/11/2016 à 10:55
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 jeudi 14 juillet 2016 Statut Membre Dernière intervention 22 novembre 2016 2
21 nov. 2016 à 12:51
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 1925 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 18 décembre 2024 692 > Saltimbanque77 Messages postés 4 Date d'inscription jeudi 14 juillet 2016 Statut Membre Dernière intervention 22 novembre 2016
Modifié par thev le 21/11/2016 à 22:56
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 jeudi 14 juillet 2016 Statut Membre Dernière intervention 22 novembre 2016 2 > thev Messages postés 1925 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 18 décembre 2024
22 nov. 2016 à 07:36
Bonjour thev,

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

Bien cordialement.
0