Vider userform si référence inconnue
Bonjour, j'ai un userform (formulaire lié à une BDD) dans lequel j'ai une combobox (Référence) de saisie intuitive dont découle le remplissage des textbox du formulaire. Lorsque je tape les premières lettres le formulaire commence à se remplir mais lorsque je saisi une nouvelle référence il se rempli également avec les premières lettres et je souhaiterai que si la référence n'existe pas les textbox se mettent à "vide". J'ai bricolé ce code VBA en allant sur internet, il marche bien mais j'aimerais le peaufiner. Merci à vous pour vos conseils. Cordialement, Stéphane
Je ne sais pas comment joindre un fichier alors le vous envoie le code. Merci de votre compréhension. Je vais chercher comment faire pour joindre le fichier.
Function copy_from_form()
Dim LastRow As Long
ActiveSheet.Unprotect
LastRow = ActiveWorkbook.Sheets("BDD").Range("A1000000").End(xlUp).Row
LastRow = LastRow + 1
With ActiveWorkbook.Sheets("BDD")
.Range("A" & LastRow).Value = ComboBox3.Value
.Range("B" & LastRow).Value = TextBox2.Value
.Range("C" & LastRow).Value = ComboBox1.Value
.Range("D" & LastRow).Value = ComboBox2.Value
.Range("E" & LastRow).Value = TextBox5.Value
.Range("F" & LastRow).Value = TextBox6.Value
.Range("G" & LastRow).Value = TextBox7.Value
.Range("H" & LastRow).Value = TextBox8.Value
.Range("I" & LastRow).Value = TextBox9.Value
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
End With
End Function
Function reset_all_controls()
Dim ctl As MSForms.Control
ActiveSheet.Unprotect
For Each ctl In Me.Controls
Select Case TypeName(ctl)
Case "TextBox"
ctl.Text = ""
Case "CheckBox", "OptionButton", "ToggleButton"
ctl.Value = False
Case "ComboBox", "ListBox"
ctl.ListIndex = -1
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
End Select
Next ctl
End Function
Function delete_from_form_with_confirmation()
Dim answer As Integer
ActiveSheet.Unprotect
answer = MsgBox("Voulez-vous supprimer cette référence de la base de données ?", vbQuestion + vbYesNo + vbDefaultButton2, "Confirmation")
If answer = vbYes Then
Dim rng1 As Range
Dim str_search As String
str_search = ComboBox3.Value
ActiveWorkbook.Sheets("BDD").Activate
Set rng1 = Sheets("BDD").Range("A:A").Find(str_search, , xlValues, xlWhole)
If Not rng1 Is Nothing Then
rng1.Select
Dim row_number As Long
row_number = ActiveCell.Row
ActiveWorkbook.Sheets("BDD").Rows(row_number).EntireRow.Delete
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
Else
End If
End If
End Function
Function search_from_form()
Dim rng1 As Range
Dim str_search As String
ActiveSheet.Unprotect
str_search = ComboBox3.Value
ActiveWorkbook.Sheets("BDD").Activate
Set rng1 = Sheets("BDD").Range("A:A").Find(str_search, , xlValues, xlWhole)
If Not rng1 Is Nothing Then
rng1.Select
Dim row_number As Long
row_number = ActiveCell.Row
ComboBox3.Value = Sheets("BDD").Range("A" & row_number).Value
TextBox2.Value = Sheets("BDD").Range("B" & row_number).Value
ComboBox1.Value = Sheets("BDD").Range("C" & row_number).Value
ComboBox2.Value = Sheets("BDD").Range("D" & row_number).Value
TextBox5.Value = Sheets("BDD").Range("E" & row_number).Value
TextBox6.Value = Sheets("BDD").Range("F" & row_number).Value
TextBox7.Value = Sheets("BDD").Range("G" & row_number).Value
TextBox8.Value = Sheets("BDD").Range("H" & row_number).Value
TextBox9.Value = Sheets("BDD").Range("I" & row_number).Value
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
Else
'MsgBox "Cette référencen'existe pas"
End If
End Function
Function edit_from_form()
Dim rng1 As Range
Dim str_search As String
ActiveSheet.Unprotect
str_search = ComboBox3.Value
ActiveWorkbook.Sheets("BDD").Activate
Set rng1 = Sheets("BDD").Range("A:A").Find(str_search, , xlValues, xlWhole)
If Not rng1 Is Nothing Then
rng1.Select
Dim row_number As Long
row_number = ActiveCell.Row
With ActiveWorkbook.Sheets("BDD")
.Range("A" & row_number).Value = ComboBox3.Value
.Range("B" & row_number).Value = TextBox2.Value
.Range("C" & row_number).Value = ComboBox1.Value
.Range("D" & row_number).Value = ComboBox2.Value
.Range("E" & row_number).Value = TextBox5.Value
.Range("F" & row_number).Value = TextBox6.Value
.Range("G" & row_number).Value = TextBox7.Value
.Range("H" & row_number).Value = TextBox8.Value
.Range("I" & row_number).Value = TextBox9.Value
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
ActiveSheet.Unprotect
Range("TBDD[[#Headers],[Référence]]").Select
Selection.AutoFilter
Selection.AutoFilter
Range("J20:L20").Select
Selection.AutoFill Destination:=Range("TBDD[[A distribuer]:[NB POINTS]]"), _
Type:=xlFillDefault
Range("TBDD[[A distribuer]:[NB POINTS]]").Select
Range("A4").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
End With
Else
'MsgBox str_search & "Not Found"
End If
End Function
Function items_from_database_to_combobox()
Sheets("BDD").Activate
Dim LastRow As Long
ActiveSheet.Unprotect
LastRow = Cells(Rows.Count, "I").End(xlUp).Row
ComboBox1.List = Range("I2:I" & LastRow).Value
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
End Function
Function items_from_database_to_combobox1()
Sheets("BDD").Activate
Dim LastRow As Long
ActiveSheet.Unprotect
LastRow = Cells(Rows.Count, "H").End(xlUp).Row
ComboBox2.List = Range("H2:H" & LastRow).Value
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
End Function
Function items_from_database_to_combobox3()
Sheets("BDD").Activate
Dim LastRow As Long
ActiveSheet.Unprotect
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
ComboBox3.List = Range("A20:A" & LastRow).Value
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
End Function
Private Sub CommandButton1_Click()
Call copy_from_form
Call reset_all_controls
End Sub
Private Sub CommandButton2_Click()
Call edit_from_form
Call reset_all_controls
End Sub
Private Sub CommandButton3_Click()
Call reset_all_controls
End Sub
Private Sub CommandButton4_Click()
Call delete_from_form_with_confirmation
Call reset_all_controls
End Sub
Private Sub CommandButton6_Click()
Unload Me
End Sub
'Private Sub CommandButton5_Click()
'Call search_from_form
'End Sub
Private Sub ComboBox3_Change()
Call search_from_form
End Sub
Private Sub CommandButton7_Click()
'
' essai Macro
'
'
Sheets("ACCOMPAGNEMENT").Select
ActiveSheet.Unprotect ""
Sheets("COMPLEMENT").Select
ActiveSheet.Unprotect ""
Sheets("DESSERT").Select
ActiveSheet.Unprotect ""
Sheets("HYGIENE").Select
ActiveSheet.Unprotect ""
Sheets("LAITAGE").Select
ActiveSheet.Unprotect ""
Sheets("MIXTE").Select
ActiveSheet.Unprotect ""
Sheets("PROTEINE").Select
ActiveSheet.Unprotect ""
Sheets("Récap").Select
ActiveSheet.Unprotect ""
Sheets("LAIT").Select
ActiveSheet.Unprotect ""
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("A distribuer" _
).CurrentPage = "(All)"
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
"A distribuer")
.PivotItems("0").Visible = False
End With
Sheets("ACCOMPAGNEMENT").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
Sheets("COMPLEMENT").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
Sheets("DESSERT").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
Sheets("HYGIENE").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
Sheets("LAITAGE").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
Sheets("MIXTE").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
Sheets("PROTEINE").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
Sheets("Récap").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
Sheets("LAIT").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
Range("H13").Select
End Sub
Private Sub Frame1_Click()
End Sub
Private Sub Image1_BeforeDragOver(ByVal Cancel As MSForms.ReturnBoolean, ByVal Data As MSForms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal DragState As MSForms.fmDragState, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As Integer)
End Sub
Private Sub UserForm_Initialize()
Me.ComboBox3.SetFocus
Call items_from_database_to_combobox3
Call items_from_database_to_combobox1
Call items_from_database_to_combobox
End SubRe...Voici le fichier. Merci
Bonjour Legreffier
Je serais toujours intrigué par les gens comme vous qui savez remplir des contrôles mais pas les vider
Function search_from_form()
Dim rng1 As Range
Dim str_search As String
ActiveSheet.Unprotect
str_search = ComboBox3.Value
ActiveWorkbook.Sheets("BDD").Activate
Set rng1 = Sheets("BDD").Range("A:A").Find(str_search, , xlValues, xlWhole)
If Not rng1 Is Nothing Then
rng1.Select
Dim row_number As Long
row_number = ActiveCell.Row
ComboBox3.Value = Sheets("BDD").Range("A" & row_number).Value
TextBox2.Value = Sheets("BDD").Range("B" & row_number).Value
ComboBox1.Value = Sheets("BDD").Range("C" & row_number).Value
ComboBox2.Value = Sheets("BDD").Range("D" & row_number).Value
TextBox5.Value = Sheets("BDD").Range("E" & row_number).Value
TextBox6.Value = Sheets("BDD").Range("F" & row_number).Value
TextBox7.Value = Sheets("BDD").Range("G" & row_number).Value
TextBox8.Value = Sheets("BDD").Range("H" & row_number).Value
TextBox9.Value = Sheets("BDD").Range("I" & row_number).Value
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFiltering:=True
Else
TextBox2.Value = ""
ComboBox1.Value = ""
ComboBox2.Value = ""
TextBox5.Value = ""
TextBox6.Value = ""
TextBox7.Value = ""
TextBox8.Value = ""
TextBox9.Value = ""
'MsgBox "Cette référencen'existe pas"
End If
End FunctionBref, voilà
Bonjour BrunoM45, merci beaucoup, ça fonctionne du tonnerre ! Si ça peut vous rassurer ça m'intrigue aussi