Alimenter une combobox selon la valeur d'une autre

Bonjour Forum,

Ceci fait suite à un autre sujet que j'ai lancé il y a quelques jours.

BrunoM45 m'a beaucoup aidé et je l'en remerci.

Par contre à fin de recherche futur pour d'autre utilisateur je pense qu'il serait bon de lancer un nouveau sujet pour ma prochaine question car je cherche moi même sans rien trouver

donc voici:

J'aimerais alimenter la combobox (Cbx_nomClt) en fonction de l'année choisi dans la combobox(Cbx_Année).

J'aimerais que lorsqu'on choisi une année, ca nous retourne le nom du client en colonne BG.

Bonsoir Crackwood, bonsoir le forum,

Est c'est, bien évidemment, à nous d'aller chercher où se trouvent les combobox citées parmi 3 userforms... Pfff ! J'suis fatigué ce soir.

Bonsoir,

Ca ne vous en prends pas beaucoup pour vous choquer ll faut croire.. peut-être ai-je seulement OUBLIÉ de préciser...

Merci de vous intéresser à mon probleme

Dans le Usf_Saisie,

Les 2 combobox sont dans le coin inferieur gauche

Re,

Ça me prend autant qu'à toi pour réfléchir avant de demander de l'aide...

Tres aimable à vous de pourrir mon sujet.

J'imagine que vous êtes parfait, je m'excuse mon seigneur totem

Oui merci, je voulais créer un sujet pour futurs recherches.

Je suis actuellement sur mon iPhone mais j'y retourne bientot, merci encore

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...

Salut ThauThème

1. Inutile de vider des Comboboxes ou ListBoxes, elles seront normalement vides à l'initialisation

Malheureusement, c'est utile

Lors de la sauvegarde d'une fiche on rappel l'initialisation du formulaire, tu comprendras alors pourquoi c'est utile

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...

C'est corrigé depuis

Bruno, toujours égal à lui même...

Heuuu je ne vois pas je suis resté très soft sur ce coût là

Merci de votre réponse c'est très apprécié.

J'ai beaucoup appris de vous deux au fil du temps, non seulement sur mon sujet, mais aussi à force de vous lire dans d'autres.

Le fichier a évolué beaucoup en peu de temps, du coup certaines parties inutiles du code comme l'initialisation des année au démarage devient en effet obsolete et a été retiré dans la dernière version.

Disons que j'apprenais en méme temps de construire le userform.

Rechercher des sujets similaires à "alimenter combobox valeur"