Re,
Ha le manque d'humour !...
Je te réponds donc : Presque, à part quelques milliers d'imperfections. Ma principale qualité c'est d'ouvrir ma g***le...
Mis à part cela quelques modifs dans ton code d'initialisation :
1. Inutile de vider des Comboboxes ou ListBoxes, elles seront normalement vides à l'initialisation
2. Pourquoi faire la liste des clients de l'année à l'initialisation ?! Ça n'a pas de sens puisque c'est le changement d'année qui va déterminer... Ton code modifié :
Private Sub UserForm_Initialize()
Dim Ind As Long
Dim I As Byte
Me.Tbx_Date.Value = Format(Date, "yyyy/mm/dd")
With Sheets("Data")
.Range("Q2", .Range("Q" & Rows.Count).End(xlUp)).Name = "Modeles"
Me.ComboBox10.RowSource = "Modeles"
.Range("R2", .Range("R" & Rows.Count).End(xlUp)).Name = "Conseiller"
End With
Me.ComboBox11.RowSource = "Conseiller"
Me.TextBox13.Value = "450"
Me.TextBox14.Value = "1300"
Me.TextBox15.Value = "1300"
Me.TextBox16.Value = "1300"
Me.TextBox17.Value = "2375"
Me.Fenetres_TextBox.Value = "4"
Me.TextBox7.Value = "20"
With ComboBox1
.AddItem "BLANC"
.AddItem "COULEURS"
End With
For I = 3 To 4
With Me.Controls("ComboBox" & I)
.AddItem "1"
.AddItem "2"
.AddItem "3"
End With
Next I
For I = 6 To 8
With Me.Controls("ComboBox" & I)
.AddItem "FLOTTANT"
.AddItem "BOIS-FRANC"
End With
Next I
With ComboBox9
.AddItem "BÉTON ARMÉ"
.AddItem "RDJ-BÉTON"
.AddItem "RDJ-BOIS"
End With
Me.TextBox47.Value = Sheets("Data").Range("O1").Text
' Inscrire les années dans la COMBO Cbx_Année
Dim OE As Worksheet
Dim TV As Variant
Dim D As Object
Dim J As Long
Set OE = Worksheets("EnrUSF")
TV = OE.Range("A1").CurrentRegion
Set D = CreateObject("Scripting.Dictionary")
For J = 3 To UBound(TV, 1)
D(TV(J, 105)) = ""
Next J
Me.Cbx_Année.List = Application.Transpose(D.Keys)
'Flag de Modification à FAUX
FlgModif = False
End Sub
Ensuite, le code au changement d'année :
Private Sub Cbx_Année_Change()
Dim OE As Worksheet
Dim TV As Variant
Dim I As Integer
Me.Cbx_NomClt.Clear
Set OE = Worksheets("EnrUSF")
TV = OE.Range("A1").CurrentRegion
For I = 3 To UBound(TV, 1)
If CStr(TV(I, 105)) = Me.Cbx_Année Then Me.Cbx_NomClt.AddItem TV(I, 59)
Next I
End Sub
Mais il subsiste un problème. Comme tu peux avoir un même client plusieurs fois la même année, je vois mal comment tu vas pourvoir retrouver la bonne ligne... Par conséquent je n'ai pas touché au code : Private Sub Cbn_Récup_Click() car pour moi il faudrait passer par un dictionary et rajouter une ListBox (ou Combobox) supplémentaire qui permettrait de choisir (mais quel serait le critère ?!...) la bonne ligne.
Bruno, toujours égal à lui même...