[RESOLU] Combobox + affichage d'un tableau filtré...

jozerebel

XLDnaute Occasionnel
Salut le Fofo,

En cette veille de fête nationale et en ce jour footballistique, je m'adonne à un peu de travail en VBA...

Voilà le pb :

J'ai un USF qui m'affiche par le biais d'un combobox une plage:

Private Sub UserForm_Initialize()
Sheets("Choix").Activate
' Au chargement de la page, récupère les valeurs qui se trouve sur la feuille Choix
' Cela correspond à toutes les lignes qui sont importantes pour la recherche.

Dim Sh As Worksheet
Set Sh = Sheets("Choix")
Dim nbUti As Integer
nbUti = 1
While Not IsEmpty(Sh.Cells(nbUti, 1))
nbUti = nbUti + 1
Wend
' Met les valeurs de la feuille "Choix" de A2,H-> la fin
Me.ML_Utilisateur.RowSource = "Choix!A2:H" & nbUti - 1

etc..

J'ai d'autres combo qui me permettent d'appliquer des filtres sur la feuille "Choix" et je souhaiterais que dans le premier Combo, ne s'affichent que les lignes filtrées...

Je tente :

Private Sub Valider_Click()
Dim c As Range
Me.ML_Utilisateur.RowSource = ""
With Worksheets("Choix")
For Each c In .Range("A2:H" & .Cells(.Rows.Count, 2).End(xlUp).Row).SpecialCells(xlCellTypeVisible)
Me.ML_Utilisateur.AddItem (c.Value)
Next
End With
End Sub



Mais le pb c'est que ça m'affiche toutes les valeurs les unes en dessous des autres et non pas en colonnes comme c'était le cas avec .RowSource. Je me retrouve donc avec une liste à une colonne avec des données mélangées...

Je ne peux pas poster le fichier car trop de données, y compris dans le code nécessitant un gros travail d'"RAZ" avant diffusion...

Une idée pour m'aider? Car ça fait au moins 1 semaine que je modifie mon code en vain... :confused:

Merci!
 
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : Combobox + affichage d'un tableau filtré...

Bonjour jozerebel,

... ça fait au moins 1 semaine que je modifie mon code en vain
c'est un peu comme aux Noces de Cana!?
D'aucuns te diraient que tu aurais donc eu tout le temps de créer un petit exemple simplifié à déposer ici :rolleyes:

Pour faire avancer le schmilblick d'une case (mais pas plus) ... si tu passes en revue toutes les cellules visibles (des colonnes A à H), c'est parce que ta ComboBox est multi-colonnes??
 

Modeste

XLDnaute Barbatruc
Re : Combobox + affichage d'un tableau filtré...

Re,

En partant de ton code, j'ai ajouté une petite boucle, pour compléter les colonnes ... On peut peut-être simplifier (pas testé non plus, of course!)
VB:
Private Sub UserForm_Initialize()
Dim c As Range
 Me.ML_Utilisateur.RowSource = ""
 With Worksheets("Choix")
 lig = 0
 For Each c In .Range("A2:A" & .Cells(.Rows.Count, 2).End(xlUp).Row).SpecialCells(xlCellTypeVisible) 'uniquement colonne A
 Me.ML_Utilisateur.AddItem (c.Value) 'ajout d'une ligne (colonne 0 de ML_Utilisateur)
    For col = 1 To 7 'ajout dans les colonnes
       Me.ML_Utilisateur.List(lig, col) = .Cells(c.Row, col + 1)
    Next col
    lig = lig + 1
 Next c
 End With
End Sub
 

jozerebel

XLDnaute Occasionnel
Re : Combobox + affichage d'un tableau filtré...

Re Modeste!

Extra! ça fonctionne!

J'en profite pour une autre question :

la feuille de travail est protégée mais permet les filtres automatiques sans nécessité de déprotéger.
Par contre, quand je tente d'appliquer le filtre par macro, ça plante car il considère que la feuille est protégée:

Sh.Range("$A$1:$AD$" & nbUtil + 1).AutoFilter Field:=6, Criteria1:=Me.hgt.Value

Suis-je obligé de déprotéger temporairement la feuille ou y -a-t-il une autrte manip?

Merci!
 

Modeste

XLDnaute Barbatruc
Re : Combobox + affichage d'un tableau filtré...

Re²,

Tu peux protéger ta feuille à l'ouverture du classeur (via VBA) en utilisant l'argument "UserInterfaceOnly:=True". De cette manière ta feuille est bien protégée des manipulations réalisées par les utilisateurs, mais pas contre les modifications apportées par le code.

Sinon, effectivement, ôter la protection avant de filtrer et re-protéger avant de sortir de la procédure.
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz