Placer les informations du formulaire dans le tableau
Bonjour,
Je suis nouvelle dans le forum et dans l'utilisation des codes vba sur excel.
J'ai un doute de comment placer les informations du formulaire dans le tableau.
J'ai un tableau excel avec plusieurs onglets, l'onglet en deuxième place s'appelle "2022", et c'est cela que j'envisage d'alimenter avec les informations saisies dans le formulaire, j'ai réussi à créer le formulaire, le bouton pour ce formulaire et il manque seulement que les informations soient placées dans le bon endroit: à partir de la cellule A5, mais cela ne marche pas
Est-ce-que quelqu’un peut m'aider?
Voici le code vba pour ce bouton:
Private Sub CommandButton1_Click()
If ComboBox1 = “” Or TextBox4 = “” Or ComboBox2 = “” Then
MsgBox "Veuillez remplir les infos avec la mention * ", , "SERAM AEROMAT"
Else
If Sheets("2022").Range("B5") = "" Then 'Si la cellule A5 est vide alors compléter
Sheets("2022").Range("B5") = ComboBox1
Else
Sheets("2022").ListObjects(1).ListRows.Add 'Sinon ajouter une ligne à la suite du tableau --> le problème se pose ici
End If
dlt = Sheets("2022").Range("d1048576").End(xlUp).Row
' Remplissage des colonnes en fonctions des zones de saisies
Sheets("2022").Range("a" & dlt) = Now ' Date
Sheets("2022").Range("b" & dlt) = ComboBox1 ' Technicien
Sheets("2022").Range("c" & dlt) = TextBox2 + Label12 + TextBox9 'Immat
Sheets("2022").Range("d" & dlt) = TextBox3 ' N° dossier
Sheets("2022").Range("e" & dlt) = TextBox6 ' Quantité
Sheets("2022").Range("f" & dlt) = ComboBox2 ' Unités
Sheets("2022").Range("g" & dlt) = TextBox5 ' P/N
Sheets("2022").Range("h" & dlt) = TextBox4 ' Désignation
Sheets("2022").Range("i" & dlt) = TextBox10 ' Alternate
Sheets("2022").Range("j" & dlt) = TextBox7 ' Fournisseurs
Sheets("2022").Range("k" & dlt) = TextBox8 ' Notes
Unload UserForm1 ' Remplir les infos et fermer le forumulaire
End If
End Sub
Private Sub TextBox2_Enter() 'Montrer le format de la zone de saisie
If TextBox2 = "X" Then
TextBox2 = ""
End If
End Sub
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean) 'Cacher le format de la zone de saisie quand on clique dedans
If TextBox2 = "" Then
TextBox2 = "X"
End If
End Sub
Private Sub Textbox6_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'Nombre obligatoire
If Not ((KeyAscii > 47 And KeyAscii < 59)) Then
KeyAscii = 0
End If
End Sub
Private Sub TextBox9_Enter() 'Montrer le format de la zone de saisie
If TextBox9 = "XXXX" Then
TextBox9 = ""
End If
End Sub
Private Sub TextBox9_Exit(ByVal Cancel As MSForms.ReturnBoolean) 'Cacher le format de la zone de saisie quand on clique dedans
If TextBox9 = "" Then
TextBox9 = "XXXX"
End If
End Sub
Private Sub TextBox3_Enter()
TextBox3 = TextBox9
End Sub
Private Sub UserForm_Initialize()
TextBox2.Text = "X"
TextBox9.Text = "XXXX"
With ComboBox1 'Listes des techniciens
.AddItem "ALEXANDRE"
.AddItem "ANDRE"
.AddItem "ANNE"
.AddItem "CAMILLA"
.AddItem "LAËTITIA"
.AddItem "LAURINE"
.AddItem "LUDWIG"
.AddItem "PIERRE"
.AddItem "PIERROT"
.AddItem "STAGIAIRES"
.AddItem "THIERRY"
.AddItem "AUTRES"
End With
With ComboBox2 ' Liste des unités
.AddItem "Unité(s)"
.AddItem "Paquet(s) / Lot(s)"
.AddItem "Mètre(s)"
.AddItem "Centimètres"
.AddItem "Inch"
.AddItem "Litre(s)"
.AddItem "Gallons US"
.AddItem "Kg"
.AddItem "Grammes"
End With
End Sub
Merci beaucoup pour votre aide.
Bonne journée.
Bonjour,
Il faut vous servir d'un objet ListRow correspondant à une ligne de votre tableau structuré. Par ailleurs, coder en dur le nom de votre onglet dans le userform n'est pas une bonne idée.
Private Sub CommandButton1_Click()
Dim LigneTableau As ListRow
If ComboBox1 = “” Or TextBox4 = “” Or ComboBox2 = “” Then
MsgBox "Veuillez remplir les infos avec la mention * ", , "SERAM AEROMAT"
Else
If Sheets("2022").Range("B5") = "" Then 'Si la cellule A5 est vide alors compléter
Sheets("2022").Range("B5") = ComboBox1
Else
Set LigneTableau = Sheets("2022").ListObjects(1).ListRows.Add 'Sinon ajouter une ligne à la suite du tableau --> le problème se pose ici
With LigneTableau
' Remplissage des colonnes en fonctions des zones de saisies
.Range(1, 1) = Now ' Date
.Range(1, 2) = ComboBox1 ' Technicien
.Range(1, 3) = TextBox2 + Label12 + TextBox9 'Immat
.Range(1, 4) = TextBox3 ' N° dossier
.Range(1, 5) = TextBox6 ' Quantité
.Range(1, 6) = ComboBox2 ' Unités
.Range(1, 7) = TextBox5 ' P/N
.Range(1, 8) = TextBox4 ' Désignation
.Range(1, 9) = TextBox10 ' Alternate
.Range(1, 10) = TextBox7 ' Fournisseurs
.Range(1, 11) = TextBox8 ' Notes
End With
Set LigneTableau = Nothing
End If
Unload UserForm1 ' Remplir les infos et fermer le forumulaire
End If
End Sub