Chargement d'une ComboBox par tableau filtré grâce à autre ComboBox Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
p
pierrebastres
Membre habitué
Membre habitué
Messages : 66
Appréciation reçue : 1
Inscrit le : 14 octobre 2017
Version d'Excel : 2013 FRANCAIS

Message par pierrebastres » 11 juillet 2018, 16:39

Bonjour,
je souhaite charger la combo TabHoraires_Code_horaire en fonction de la valeur de la combo TabHoraires_Client. Je souhaite utiliser la méthode suivante:
la valeur de la première Combo est utilisée comme critère de filtre pour la table TabHoraires, et seules les lignes apparentes de celui-ci alimenteront la deuxième combo. J'ai essayé d'utiliser SpecialCells(xlCellTypeVisible), mais je n'arrive pas au résultat voulu:
voici le code et un classeur test:


Private Sub TabHoraires_Client_Change()

Dim iLigne As Integer
Dim n As Integer

If Me.TabHoraires_Client.ListIndex = -1 And IsError(Application.Match(Me.TabHoraires_Client, choix1, 0)) Then
Me.TabHoraires_Client.List = Filter(choix1, Me.TabHoraires_Client.Text, True, vbTextCompare)
Me.TabHoraires_Client.DropDown
Else
'salarie_a_modifier_click
End If

wksBDD_horaires.ListObjects("TabHoraires").Range.AutoFilter Field:=1
wksBDD_horaires.ListObjects("TabHoraires").Range.AutoFilter Field:=1, Criteria1 _
:=TabHoraires_Client.Value

n = wksBDD_horaires.Range("TabHoraires_Client").End(xlDown).Row - 1
For iLigne = 1 To n

Me.cTabHoraires_Code_horaire.AddItem wksBDD_horaires.Cells(iLigne + 1, Range("TabHoraires_Code_horaire").Column).Value
' c'est ici que j'ai essayé de positionner SpecialCells(xlCellTypeVisible)
Next iLigne


End Sub

merci d'avance
ESSAI_CGT_COMBO_LISTE_TRIEE.xlsm
(73.69 Kio) Téléchargé 75 fois
Avatar du membre
paritec
Passionné d'Excel
Passionné d'Excel
Messages : 4'154
Appréciations reçues : 466
Inscrit le : 7 juin 2011
Version d'Excel : W10 - 2003 FR - 2010 FR

Message par paritec » 21 juillet 2018, 08:20

Bonjour pierrebastres le forum
de quel userform ??? tu en as trois dans ton fichier
a+
Papou :)
Des bonnes explications et des petits fichiers représentatifs vont nous aider à vous aider !!!!
p
pierrebastres
Membre habitué
Membre habitué
Messages : 66
Appréciation reçue : 1
Inscrit le : 14 octobre 2017
Version d'Excel : 2013 FRANCAIS

Message par pierrebastres » 22 juillet 2018, 23:12

Bonsoir,
Il s'agit de la UF_modif_horaire.
Merci .

Pierre
g
gmb
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'668
Appréciations reçues : 346
Inscrit le : 4 avril 2013
Version d'Excel : 2016

Message par gmb » 23 juillet 2018, 08:15

Bonjour à tous

Un essai à tester.
Bye !
ESSAI_CGT_COMBO_LISTE_TRIEE v1.xlsm
(66.01 Kio) Téléchargé 86 fois
p
pierrebastres
Membre habitué
Membre habitué
Messages : 66
Appréciation reçue : 1
Inscrit le : 14 octobre 2017
Version d'Excel : 2013 FRANCAIS

Message par pierrebastres » 23 juillet 2018, 08:59

Bonjour le Forum, bonjour Gmb,
ça marche en effet, merci!
Quelle modif as-tu apporté s'il te plaît?
Merci d'avance!

Pierre
g
gmb
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'668
Appréciations reçues : 346
Inscrit le : 4 avril 2013
Version d'Excel : 2016

Message par gmb » 23 juillet 2018, 13:05

pierrebastres a écrit :
23 juillet 2018, 08:59
Quelle modif as-tu apporté s'il te plaît?
J’ai d’abord modifié le code attaché au bouton ‘’ Modifier un horaire‘’ de la feuille ‘’ bdd_horaires’’
pour n'y avoir qu'une instruction qui affiche l'Userform.
Puis, j’ai neutralisé cette partie de code, dans la macro initialize de l’Userfom ‘’UF_modif_horaire’’ :
'Chargement préférences horaires
Exit Sub

n = Application.CountA(wksBDD_horaires.Range("TabHoraires_Code_horaire").EntireColumn)
For iLigne = 1 To n
    'Me.cTabHoraires_Code_horaire.AddItem wksBDD_horaires.SpecialCells(xlCellTypeVisible).Cells(iLigne + 1, Range("TabHoraires_Code_horaire").Column)
    Me.cTabHoraires_Code_horaire.AddItem wksBDD_horaires.Cells(iLigne + 1, Range("TabHoraires_Code_horaire").Column)
Next iLigne
Et j’ai enfin ajouté ce code la macro attachée au ComboBox ‘’TabHoraires_Client’’ de l’Userform ‘’ ’UF_modif_horaire’’
'Chargement des code
    cTabHoraires_Code_horaire.Clear
    For iLigne = 2 To wksBDD_horaires.Range("A" & Rows.Count).End(xlUp).Row
        If wksBDD_horaires.Range("A" & iLigne) = TabHoraires_Client Then
            cTabHoraires_Code_horaire.AddItem wksBDD_horaires.Range("B" & iLigne)
    
        End If
    Next iLigne
Si je n'ai rien oublié, c''est tout.
OK ?
Bye !
p
pierrebastres
Membre habitué
Membre habitué
Messages : 66
Appréciation reçue : 1
Inscrit le : 14 octobre 2017
Version d'Excel : 2013 FRANCAIS

Message par pierrebastres » 23 juillet 2018, 16:09

gmb,
merci beaucoup, ça fonctionne parfaitement!

Pierre
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message