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

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

  • test liste deroulante cascade.xlsm
    28.2 KB · Affichages: 5

JM27

XLDnaute Barbatruc
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

  • test liste deroulante cascade.xlsm
    21.4 KB · Affichages: 7
  • test liste deroulante cascade JM.xlsm
    23.1 KB · Affichages: 7
Dernière édition:

Jacky67

XLDnaute Barbatruc
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

  • test liste deroulante cascade.xlsm
    22 KB · Affichages: 4

Robert

XLDnaute Barbatruc
Repose en paix
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

  • Nico_ED_v01.xlsm
    21.7 KB · Affichages: 3

Discussions similaires

Statistiques des forums

Discussions
312 101
Messages
2 085 297
Membres
102 855
dernier inscrit
creed