Microsoft 365 Combobox cascade pb pour chargement donné selon onglet.

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

nico224

XLDnaute Nouveau
Bonjour,

Je suis entrain de m'entrainer sur les combobox en cascade, j'ai suivi un model pour réaliser mon test. Mon formulaire marche quand le bouton (rouge) du formulaire est sur la page de La source, mais le combobox ne charge pas les données quand je le met sur l'onglet région (bouton bleu).
Que faut'il modifier? ^^

Je vous remercie par avance.^^
 

Pièces jointes

Bonjour
En gardant ta méthode.( qui n'est pas la mienne)

Il faut faire référence à la feuille source.
Le point devant cells veut dire sheets("Source")
Regardes du coté des with / end with

Le deuxième fichier ma méthode

Edit j'avais oublié de poster mon fichier
 

Pièces jointes

Dernière édition:
Bonjour,

Je suis entrain de m'entrainer sur les combobox en cascade, j'ai suivi un model pour réaliser mon test. Mon formulaire marche quand le bouton (rouge) du formulaire est sur la page de La source, mais le combobox ne charge pas les données quand je le met sur l'onglet région (bouton bleu).
Que faut'il modifier? ^^

Je vous remercie par avance.^^
Bonjour à tous
Autre exemple, sans boucle
VB:
Private Sub ComboBox1_Change()
    Dim colonne&, Derlg&
    fmrville.ComboBox2.Clear
    With Sheets("source")
        [B2:H2].Interior.ColorIndex = xlNone
        colonne = Application.Match(ComboBox1.Value, .[2:2], 0)
        .Cells(2, colonne).Interior.ColorIndex = 32
        Derlg = .Cells(.Rows.Count, colonne).End(xlUp).Row
        fmrville.ComboBox2.List = .Range(.Cells(3, colonne), .Cells(Derlg, colonne)).Value
    End With
    ComboBox2.ListIndex = 0
End Sub

Private Sub UserForm_Initialize()
Dim col&
    With Sheets("source")
        col = .Cells(2, .Columns.Count).End(xlToLeft).Column
        .[B2:f2].Interior.ColorIndex = 32
        fmrville.ComboBox1.List = Application.Transpose(.Range(.Cells(2, 2), .Cells(2, col)).Value)
    End With
End Sub
Il serait sage de déclarer les variables
 

Pièces jointes

Bonjour le fil, bonjour le forum,

Une autre proposition en pièce jointe. J'utilise les plages nommées dynamiques avec la formule DECALER dans le Gestionnaire de noms du ruban Formules. Puis ce code :

VB:
Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm
Dim OS As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (tableau des valeurs)

Set OS = Worksheets("source") 'définit l'onglet O
TV = OS.Range("B2").CurrentRegion 'définit la tabelau des valeurs TV
Me.ComboBox1.List = Application.Transpose(Application.Index(TV, , , 1)) 'alimente la ComboBox1
End Sub

Private Sub ComboBox1_Change() 'au changement dans la ComboBox1
Dim PL As String 'déclare la variable PL (PLage)

Me.ComboBox2.Clear 'vide la ComboBox2
PL = Replace(Me.ComboBox1.Value, " ", "_") 'définit la plage PL (les noms dans le gestionnaire de noms n'ont, non, pas d'espace)
Me.ComboBox2.List = Range(PL).Value 'alimente la ComboBox2
End Sub
Le Fichier :
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Liste cascade
Réponses
6
Affichages
1 K
Retour