Remplir userform avec les valeurs dune ligne d'une feuille
bonjour a tous,
je souhaiterais ajouter un bouton modifier enregistrement qui fera appel a un userfom afin de choisir l'enregistrement a modifier, une fois clique sur l'enregistrement a modifier, le userform (ajout enregistrement) devrait s'afficher avec modifier enregistrement en caption et rendre visible le bouton modifier dans ledit userform, avec les valeurs correpondantes de chaque cellule sur les differents controles du userform.
je vous joins mon fichier. merci de votre aide.
le mot de passe pour le code vba est marielle
- Messages
- 1'794
- Excel
- 2010
- Inscrit
- 25/08/2014
- Emploi
- Consultant VB6 / SQL / VBA / Excel / Access
Bonsoir,
Ci-joint une proposition à tester et à compléter.
Toutes les modifs sont mentionnées 'v0.1
Principe :
- même formulaire pour création ou modification
- affichage : passage en paramètre du n° de ligne (ou 0 en création)
Public Sub Afficher(piLI As Integer)
- en modification, on lit à partir du n° de ligne
Private Sub Lire(piLI)
- les zones obligatoires sont en rouge
vérification après chaque changement si valeur OK (rouge = non renseigné, orange = type incorrect : exemple date)
Private Sub Naissance_AfterUpdate()
VerifSaisie
End Sub
Private Function VerifSaisie() As Boolean
Bonne soirée
Bouben
bonjour Bouben,
merci pour tout cela, ça m'a vraiment aider, cela marche tres bien. je souhaiterais mieux comprendre le code, peux tu stp expliquer le code ci dessous
Private Sub Lire(piLI)
Dim oShBDD As Worksheet
Set oShBDD = Worksheets("Base_de_donnees")
miLigModif = piLI 'conserve la ligne
NumeroDemande.Text = oShBDD.Range("A" & piLI).Value
TextBox7.Text = oShBDD.Range("B" & piLI).Value 'date
Nom_proprietaire.Text = oShBDD.Range("C" & piLI).Value
If oShBDD.Range("D" & piLI).Value = "M." Then
OptionButton13.Value = True
ElseIf oShBDD.Range("D" & piLI).Value = "Mme" Then
OptionButton14.Value = True
ElseIf oShBDD.Range("D" & piLI).Value = "Mlle" Then
OptionButton15.Value = True
End If
Naissance.Text = oShBDD.Range("E" & piLI).Value
Lieu.Text = oShBDD.Range("F" & piLI).Value
Nationnalite.Text = oShBDD.Range("G" & piLI).Value
Adresse.Text = oShBDD.Range("H" & piLI).Value
TextBox2.Text = oShBDD.Range("I" & piLI).Value 'téléphone
Nom.Text = oShBDD.Range("J" & piLI).Value 'nom cartegrise
Immatriculation.Text = oShBDD.Range("K" & piLI).Value
chassis.Text = oShBDD.Range("L" & piLI).Value
vehicule.Text = oShBDD.Range("M" & piLI).Value 'Type
ComboBox1.Text = oShBDD.Range("S" & piLI).Value 'Type de véhicule
TextBox8.Text = oShBDD.Range("Y" & piLI).Value 'numéro de reçu de caisse
'********************
'A poursuivre ici
'********************
CommandButton4.Visible = False 'ajouter
CommandButton6.Visible = True 'modifier
Set oShBDD = Nothing
End Sub
aussi, il va falloir modifier le code pour le bouton modifier enregistrement de sorte qu'il recupere les donnees de la ligne correspondante pour remplir sur la feuille licence plutot que la derniere ligne comme le fait la fonction enregistrer,
je te reviens...
merci encore
c'est résolu, il suffisait simplement de mettre une variable a la fonction enregistrer de sorte que pour le bouton modifier nous defissons la variable
Private Sub CommandButton6_Click()
Dim V As Integer
V = miLigModif
'v0.1
'Ajout_enregistrement.Hide
'UserForm3.Show
Enregistrer (V)
'v0.1-fin
End Sub
et pour le bouton charger licence nous avons la variable = derniereligne