Modifier une ligne BD
bonjour je suis bloquer sur la modification d'une ligne de ma base de donné
voici mon problème je souhaite modifier les information de l'un de mes client mais mon soucie est que cela ne s'enregistre pas
je vous joint mon dossier
merci d'avance pour l'aide
Bonsoir,
la lecture de la valeur de la combobox1 déclenche la sub Change de ce combobox, hors cette dernière permet de remplir les différent contrôles avec les données de la feuille, du coup le nom modifié du client est "re modifié" avec l'ancien... Rien a changé !
Une variable booléenne EnCours permet de sortir du Change du combobox prématurément et alors là les données ne sont plus modifiées et les nouvelles valeurs sont prises en compte.
Le début du code de votre USF :
Dim EnCours As Boolean
Private Sub ComboBox1_Change()
If EnCours Then Exit Sub
Set ws = Sheets("client")
Dim ligne As Long
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
ligne = Me.ComboBox1.ListIndex + 6
Me.cbx_civilite = ws.Cells(ligne, "C")
Me.txt_nom = ws.Cells(ligne, "D")
Me.txt_prénom = ws.Cells(ligne, "E")
Me.txt_nom_entreprise = ws.Cells(ligne, "F")
Me.txt_adresse = ws.Cells(ligne, "G")
Me.txt_cp = ws.Cells(ligne, "H")
Me.txt_ville = ws.Cells(ligne, "I")
Me.txt_tel = ws.Cells(ligne, "J")
Me.txt_mail = ws.Cells(ligne, "K")
Me.label_type = ws.Cells(ligne, "L")
If Me.label_type = "Pro" Then
Me.option_pro = True
Else
Me.option_prive = True
End If
End Sub
Private Sub CommandButton1_Click()
'Dim DL As Integer
Dim ligne As Long
'Sheets("client").ListObjects(1).ListRows.Add
'DL = Sheets("client").Range("B9999").End(xlUp).Row
ligne = Me.ComboBox1.ListIndex + 6
'Ajouter dans le tableau
EnCours = True
Sheets("client").Cells(ligne, "B") = Me.ComboBox1
Sheets("client").Cells(ligne, "C") = Me.cbx_civilite
Sheets("client").Cells(ligne, "D") = Me.txt_nom
Sheets("client").Cells(ligne, "E") = Me.txt_prénom
Sheets("client").Cells(ligne, "F") = Me.txt_nom_entreprise
Sheets("client").Cells(ligne, "G") = Me.txt_adresse
Sheets("client").Cells(ligne, "H") = Me.txt_cp
Sheets("client").Cells(ligne, "I") = Me.txt_ville
Sheets("client").Cells(ligne, "J") = Me.txt_tel
Sheets("client").Cells(ligne, "K") = Me.txt_mail
Sheets("client").Cells(ligne, "L") = Me.label_type
EnCours = False
ThisWorkbook.Save
Unload Me
End Sub@ bientôt
LouReeD
Bonjour,
je reviens sur ma réponse : en fait je ne comprend pas pourquoi la Sub Change du combobox est lancée lors de la lecture de sa donnée... Il y a un truc qui cloche
@ bientôt
LouReeD
Bonjour,
il faut supprimer la référence RowSource du ComboBox1 puis mettre ce code sur votre USF :
Private Sub UserForm_Initialize()
tablo = Sheets("client").Range("B6:B8").Value
ComboBox1.List = tablo
End SubIl est bien évident qu'il vous faudra rendre "variable" la plage Range("B6:B8") mais ceci n'est pas compliqué.
Je me disais aussi... La lecture d'un Combobox ne doit pas déclencher le "Change" associé !
Comme dirait certain ici : RowSource c'est de la M...
@ bientôt
LouReeD
bonjour,
@LouReed, un petit détail mais on peut écrire cela en une ligne, donc c'est plus vite
Sheets("client").Cells(ligne, "B") = Me.ComboBox1
Sheets("client").Cells(ligne, "C") = Me.cbx_civilite
Sheets("client").Cells(ligne, "D") = Me.txt_nom
Sheets("client").Cells(ligne, "E") = Me.txt_prénom
Sheets("client").Cells(ligne, "F") = Me.txt_nom_entreprise
Sheets("client").Cells(ligne, "G") = Me.txt_adresse
Sheets("client").Cells(ligne, "H") = Me.txt_cp
Sheets("client").Cells(ligne, "I") = Me.txt_ville
Sheets("client").Cells(ligne, "J") = Me.txt_tel
Sheets("client").Cells(ligne, "K") = Me.txt_mail
Sheets("client").Cells(ligne, "L") = Me.label_type
Sheets("client").Cells(ligne, "B").Resize(, 11).Value = Array(Me.ComboBox1, Me.cbx_civilite, Me.txt_nom, Me.txt_prénom, Me.txt_nom_entreprise, Me.txt_adresse, Me.txt_cp, Me.txt_ville, Me.txt_tel, Me.txt_mail, Me.label_type)