Formulaire VBA
Bonjour à tous,
J'ai fais un fichier excel avec des formulaire qui remplissent les lignes sur les feuilles quand je clique sur le bouton nouveau. Cependant j'aimerais que lorsque je clique sur ce dernier et en plus d'ajouter les infos remplies dans le formulaire, cela ajoute sur la ligne correspondante a la colonne A un numéro automatique. j'ai cherche sur differents sites et forum mais rien de precis. Je fais donc appel a des connaisseurs.
Voici le code de mon bouton:
Private Sub CommandButton3_Click()
Dim L As Integer
If MsgBox("Etes-vous certain de vouloir INSERER ce nouveau contact ?", vbYesNo, "Demande de confirmation") = vbYes Then 'condition : si oui au message
L = Sheets("Suivi2").Range("a65536").End(xlUp).Row + 1 'Permet de se positionner sur la dernière ligne de tableau NON VIDE
Sheets("Suivi2").Range("B" & L).Value = ComboBox1 'Insère la donnée de la liste déroulante dans la colonne A
Sheets("Suivi2").Range("C" & L).Value = TextBox1 'Insère la donnée de la textbox1 dans la colonne B
'et à suivre....
Sheets("Suivi2").Range("D" & L).Value = TextBox2
Sheets("Suivi2").Range("E" & L).Value = TextBox3
Sheets("Suivi2").Range("F" & L).Value = TextBox4
Sheets("Suivi2").Range("H" & L).Value = TextBox5
Sheets("Suivi2").Range("I" & L).Value = TextBox6
Sheets("Suivi2").Range("K" & L).Value = TextBox7
Sheets("Suivi2").Range("L" & L).Value = TextBox8
Sheets("Suivi2").Range("M" & L).Value = TextBox9
Sheets("Suivi2").Range("N" & L).Value = TextBox10
End If
' Affiche une boîte de message
MsgBox ("Conducteur inséré dans fichier sélectionné") 'Vous informant que le présent contact est insérer dans votre tableau Excel.
Unload Me ' Vide et ferme l'Userform ( formulaire)
UserForm2.Show 'Affiche le formulaire
End Sub
Si la ligne précédente est déjà rempli tu peux faire un truc du style
Sheets("Suivi2").Range("A" & L).Value = Sheets("Suivi2").Range("A" & L-1).Value + 1Et si tu n'as rien sur la première ligne tu rajoute un petit test pour être sur que ca marche tout le temps du style
If L = 2 then 'J'imagine que ta première ligne est une ligne de titre
Sheets("Suivi2").Range("A" & L).Value = 1
else
Sheets("Suivi2").Range("A" & L).Value = Sheets("Suivi2").Range("A" & L-1).Value + 1
End If Et quand tu publie un code dans un message utilise la balise code, ca permet d'avoir un code plus facile à lire
A part ça y a moyen d'alleger ton code ! en utilisant Cells au lieu de range dans une boucle for
bonjour
avec numérotation
A+
Maurice
Private Sub CommandButton3_Click()
Dim L As Integer
If MsgBox("Etes-vous certain de vouloir INSERER ce nouveau contact ?", vbYesNo, "Demande de confirmation") = vbYes Then 'condition : si oui au message
With Sheets("Suivi2")
L = .Range("a65536").End(xlUp).Row + 1 'Permet de se positionner sur la dernière ligne de tableau NON VIDE
.Range("A" & L).Value = Application.Max(.Columns(1)) + 1
.Range("B" & L).Value = ComboBox1 'Insère la donnée de la liste déroulante dans la colonne A
.Range("C" & L).Value = TextBox1 'Insère la donnée de la textbox1 dans la colonne B
'et à suivre....
.Range("D" & L).Value = TextBox2
.Range("E" & L).Value = TextBox3
.Range("F" & L).Value = TextBox4
.Range("H" & L).Value = TextBox5
.Range("I" & L).Value = TextBox6
.Range("K" & L).Value = TextBox7
.Range("L" & L).Value = TextBox8
.Range("M" & L).Value = TextBox9
.Range("N" & L).Value = TextBox10
End If
End With
' Affiche une boîte de message
MsgBox ("Conducteur inséré dans fichier sélectionné") 'Vous informant que le présent contact est insérer dans votre tableau Excel.
Unload Me ' Vide et ferme l'Userform ( formulaire)
UserForm2.Show 'Affiche le formulaire
End Subre
a oui pour le nombre de ligne pour être compatible sur toutes les version mettre:
L = .Range("A" & Rows.Count).End(xlUp).Row + 1
A+
Maurice
Ça fonctionne. Merci a tous depuis le temps que je galère avec ça.
Ok je cela va être fais. Merci encore