Filtre et listbox en fonction des filtre

n3Twork

XLDnaute Occasionnel
bonjour

apres une recherche sur le forum je suis contraint de vous demander si il est possible de remplir un listbox avec une colonne ou les valeur on été filtré ?

var je voudrai faire apparaitre dans mon listbox de mon userform que les valeur apres le filtre ... actuellement ma methode pour remplir mon listbox est celle ci

Rows(FrmMenu.cbxreffiltreC.ListIndex + 2).EntireRow.Select

Merci
 

Kobaya

XLDnaute Occasionnel
Re : Filtre et listbox en fonction des filtre

salut n3Twork,

en supposant que tes données sont dans la colonne A de la feuille appelée "Data" :
Code:
Private Sub UserForm_Initialize()
    Dim rngPlage As Range
    
    For Each rngPlage In Sheets("Data").Columns(1).Cells
        If Not IsEmpty(rngPlage) Then
            Me.ListBox1.AddItem rngPlage.Value
        End If
    Next
End Sub
 

ChTi160

XLDnaute Barbatruc
Re : Filtre et listbox en fonction des filtre

salut n3Twork
bonjour le fil
il faut pour cela utilisé

[FONT=&quot]Sélection des cellules visibles[/FONT][FONT=&quot] : activesheet.cells.specialcells(xlcelltypeVisible).select

je n'ai pas fait d'essai n'ayant pas suffisamment d'éléments
[/FONT]Private Sub UserForm_Initialize()
Dim rngPlage As Range

For Each rngPlage In Sheets("Data").Columns(1).Cells[FONT=&quot].specialcells(xlcelltypeVisible)[/FONT]
If Not IsEmpty(rngPlage) Then
Me.ListBox1.AddItem rngPlage.Value
End If
Next
End Sub
[FONT=&quot]
[/FONT]
 

ChTi160

XLDnaute Barbatruc
Re : Filtre et listbox en fonction des filtre

re je te joins
une procèdure de Myta ,trouvée sur le Forum
ADDITEM LISTBOX - 10/05/2005 19:55 ‘ Mytå
Code:
[/COLOR][B]Private Sub UserForm_Initialize ()[/B]
   
  Dim myVisibleRng As Range
  Dim myFilterRng As Range
  Dim myCell As Range
  Dim cCtr As Long
   
  Set myFilterRng = Range ("a1:j" & Range("J65536").End(xlUp).Row)
   
  myFilterRng.AutoFilter Field:=10, Criteria1:="<>" 'Filtre sur Colonne J cellule non-vide
   
  If myFilterRng.Columns (1).SpecialCells (xlCellTypeVisible).Cells.Count = 1 Then GoTo Fin
   
  With myFilterRng
      Set myVisibleRng = .Resize (.Rows.Count - 1, 1) _
      .Offset (1, 0).Cells.SpecialCells<(xlCellTypeVisible)
  End With
   
  With ListBox1
      .ColumnCount = 10
      .ColumnWidths = "80;80;160;135;0;0;0;0;0;60"
  For Each myCell In myVisibleRng.Cells
      .AddItem myCell.Value
  For cCtr = 2 To 10 'Colonne B à J
      .List (.ListCount - 1, cCtr - 1) = myCell.Offset (0, cCtr - 1).Value
  Next cCtr
  Next myCell
  End With
   
  Fin:
  Selection.AutoFilter
   
  [B]End Sub
[/B]
cela pourra peut être te servir

Bonne fin de Journée :D
 

n3Twork

XLDnaute Occasionnel
Re : Filtre et listbox en fonction des filtre

j'ai repri la méthode a chti160

sa marche a peu pret mais j'ai un autre probleme !

est t'il possible de faire en sorte d'ecrire sa comme ceci ?

cbxreffiltreC.List = Me.cbxreffiltreC.AddItem rngPlage.Value

car mon cbxreffiltreC.List est reprit pour autre chose

car dans mon USF j'ai ce code

Rows(FrmMenu.cbxreffiltreC.ListIndex + 2).EntireRow.Select

qui me permet de selectionné la ligne entiere de la selection du combobox ... mais sa ne gere pas le filtre sa me decalle tous ... ;s
 
Dernière édition:

n3Twork

XLDnaute Occasionnel
Re : Filtre et listbox en fonction des filtre

hELP !

Je n'arrive pas a avoir dans la list box seulement les reference filtre et quand le clique dessus que sa me selectionne la ligne entiere de cette meme reference !

merci de votre aide.
 

ChTi160

XLDnaute Barbatruc
Re : Filtre et listbox en fonction des filtre

Arfff re
la je ne comprends pas lol
que veux tu dire par cbxreffiltreC.List est reprit pour autre chose
cela ne me parrait pas bon tu veux faire quoi ????
cbxreffiltreC.List = Me.cbxreffiltreC.AddItem rngPlage.Value
pour ton histoire de
Rows(FrmMenu.cbxreffiltreC.ListIndex + 2).EntireRow.Select
tu peux aussi récupérer la valeur de lindex via une variable
ex maRow =FrmMenu.cbxreffiltreC.ListIndex + 2
Rows(maRow).EntireRow.Select
arff je n'ai pas tout compris lol mais insiste et tu vas obtenir des réponses lol
bonne fin de Journée
 

Kobaya

XLDnaute Occasionnel
Re : Filtre et listbox en fonction des filtre

en rajoutant "And rngPlage.Hidden = False", ça devrait fonctionner :
Code:
[LEFT]Private Sub UserForm_Initialize()
    Dim rngPlage As Range
    
    For Each rngPlage In Sheets("Data").Columns(1).Cells
        If Not IsEmpty(rngPlage) And rngPlage.Hidden = False Then
            Me.ListBox1.AddItem rngPlage.Value
        End If
    Next
End Sub[/LEFT]
 

n3Twork

XLDnaute Occasionnel
Re : Filtre et listbox en fonction des filtre

bonjour

Je viens d'essayer ... marche pas !


Message d'erreur impossible de lire la proprité ... de And rngPlage.Hidden = False


je vais recapitulé ...

dans mon userform activate j'ai ce code

cbxreffiltreC.List = Range("BP2", Range("BP2").End(xlDown)).Value

mais je voudrai que avec mes macro de filtre automatique mon combobox se remplisse uniquement avec les valeur filtré ....

donc pour ceci j'ai mi ce code qui marche ...

Dim rngPlage As Range

For Each rngPlage In Sheets("En cours").Columns(68).Cells.SpecialCells(xlCellTypeVisible)
If Not IsEmpty(rngPlage) Then
Me.cbxreffiltreC.AddItem rngPlage.Value
End If
Next


Ensuite dans le meme Userform jai un

Private Sub cbxreffiltreC_click()
Rows(FrmMenu.cbxreffiltreC.ListIndex + 2).EntireRow.Select
end sub

et quand je clik dessus sa me selectionne la ligne entiere qui corespond au choix dans la combobox ... mais sa ne marche pas sa ne selectionne pas la bonne ligne ....

merci pour votre aide
 

ChTi160

XLDnaute Barbatruc
Re : Filtre et listbox en fonction des filtre

Salut n3Twork
bonjour le fil
bonjour le Forum
arff je pense qu'il faut lors de du remplissage deton combobox que tu mets dans une deuxieme colonne le numéro de la ligne de l'élément entré
donc il faut que que tudéfinisse ton combobox
Me.cbxreffiltreC.ColumnCount= 2
Me.cbxreffiltreC.ColumnWidths="60;00" par exemple

For Each rngPlage In Sheets("En cours").Columns(68).Cells.SpecialCells(xlCellTypeV isible)
If Not IsEmpty(rngPlage) Then
With Me.cbxreffiltreC
.AddItem rngPlage.Value
.Column(1, .ListCount-1)= rngPlage.Row 'ici on aura la vrai ligne
End With
End if
Next

Private Sub cbxreffiltreC_click()
Rows(FrmMenu.cbxreffiltreC.Column _(1,FrmMenu.cbxreffiltreC.ListIndex )).EntireRow.Select 'ici tu Sélectionnes la bonne ligne
ou
Rows(FrmMenu.cbxreffiltreC.List _(FrmMenu.cbxreffiltreC.ListIndex,1 )).EntireRow.Select 'ou .Delete pour supprimer
End sub
Non testé
Bonne journée
 

Discussions similaires

Réponses
18
Affichages
811

Statistiques des forums

Discussions
312 677
Messages
2 090 832
Membres
104 677
dernier inscrit
soufiane12