ComboBox en fonction d'une autre dans Userform

Bonjour,

Je viens vers vous pour sollicitez votre aide, je débute en VBA et apprend au fur et mesure par de multiple petit projet que je me lance. Et je prendre pour un la réalisation d'une fonctionnalité d'un tableur de gestion de compte . Cette fonctionnalité me permet de catégoriser les transaction qui non pas été catégoriser automatiquement ( hors de la base de donnée que j'ai crée ) , et ainsi pouvoir les catégorisés et les ajoutés à cette dite base de donnée

Je souhaite que dans le choix de la comboBox sous_catégorie se fasse en fonction de celle des catégories, Mais pour l'instant je n'arrive à pas grand chose malgres mais multiple tentative (cf ci dessous l'userform en question)

capture excel 1

Mes donnée concernant les Catégories et sous catégorie :

excel 2

Et le code à présent réaliser pour ajouter les rowsources en fonction de la combobox catégorie :

Private Sub CB_cat_Change()

Cat_val = CB_cat.Value
lstcol_cat = Worksheets("donnee").Cells(1, Columns.Count).End(xlToLeft).Column

CB_sscat.RowSource.Clear

For p = 6 To lstcol_cat 'tableau catégorie/ss-cat commencant à la colonne 6
If Cells(1, p).Value = Cat_val Then

colonne = Cells(1, p).Column

lastrw_ss = Worksheets("donnee").Cells(Rows.Count, colonne).End(xlUp).Row

CB_sscat.RowSource = "donnee!" & colonne & "2:" & colonne & lstrw_ss

End If

Next

End Sub

En vous remerciant de votre aide, cordialement
un Jeune Padawan 

Bonjour

A choisir entre vous ou moi qui fait un fichier le choix est vite fait...

Un fichier est TOUJOURS le bienvenu

A+ François

Le soucis c'est que le fichier en question contient mes informations bancaire, la totalité de mes transaction , mes revenus ect....

Vous comprenez pouquoi ne pas vous le fournir

Salut,

Travailles avec un tableau structuré, cela t'évitera pas mal de travail.

Les catégories correspondront aux Entêtes du tableau et les sous catégories à chaque colonnes

Donc sur UserForm_Initialise tu charges la ComboBox1 et sur le Clic la Combobox2

Private Sub ComboBox1_Click()
    With ComboBox2
        .Clear
        .List = Range("Tableau1").ListObject.ListColumns(ComboBox1.Value).DataBodyRange.Value
    End With
End Sub

Private Sub UserForm_Initialize()
    ComboBox1.List = Application.Transpose(Range("Tableau1").ListObject.HeaderRowRange.Value)
End Sub

Seul petit bémol, cela charge les valeurs vides aussi. Mais ça c'est une autre histoire...

Merci de ta réponse Jean-Paul ;

Je ne passe pas par de tableau structuré parce que je n'arrive pas à gérer le VBA avec les tableau,

de plus j'ai beaucoup d'autre macro qui font référence à cette plage donc changer serai compliqué pour moi.

en tous cas je te remercie de ta réponse et de ton temps

Salut,

L'un n'empêche pas l'autre, tu peux passer avec des TS, garder ton code pour l'instant, et le mettre à jour petit à petit.

Ton code n'en sera que plus lisible et plus succinct.

Jean-Paul,

Merci de tes conseil, j'essaie de réaliser une version prototype avec mes faibles connaissances avec diverse fonctionnalité;

je sais que passé par des TS, permet de travailler plus efficacement mais aussi de diminuer considérablement la réactivité sur de grande base de donnée;

J'essaierai sur la version final de passe par des TS comme tu conseil.

Bonjour,

Je reviens vers vous pour vous donnez un code qui après de multiple tentative fonctionne.

Private Sub CB_cat_Change()

Cat_val = CB_cat.Value

lstcol_cat = Worksheets("donnee").Cells(1, Columns.Count).End(xlToLeft).Column

For p = 6 To lstcol_cat 'tableau catégorie/ss-cat commencant à  la colonne 6
If Worksheets("donnee").Cells(1, p).Value = Cat_val Then

colonne = Worksheets("donnee").Cells(1, p).Column
lastrw_ss = Worksheets("donnee").Cells(Rows.Count, colonne).End(xlUp).Row

letcol = Split(Cells(1, colonne).Address, "$")(1)

CB_sscat.RowSource = "donnee!" & letcol & "2:" & letcol & lastrw_ss

End If

Next

End Sub
Rechercher des sujets similaires à "combobox fonction userform"