Produit du jour : AvanQuest Sauvegarder et gérer mes données sous Windows XP à partir de 10.00 € (Logiciel)
14/07/2006 15:10 par Xavier | 4 réponse(s) | Signaler un contenu abusif ou erroné
Bonjour à tous,

Voilà mon problème.
- J’ai trois ListBox dans un Mutipage 3 pages : GroupeEntree,
GroupePlatPrincipal, GroupeDessert qui sont alimentées par les données d’une
seule feuille "Groupes", Colonne A = Entrée, Plat principal ou Dessert /
Colonne B = Mets
- la macro ci-dessous existe également pour le filtre plat principal et
filtre dessert, les seules données qui changent sont Criteria1 et le nom des
ListBox
- dans mon Userform j’ai la macro suivante :
Sub Userform_Initialize ()
filtre_groupe_entree00
filtre_groupe_platprincipal00
filtre_groupe_dessert
End Sub

ce qui alimente mes troix ListBox avec les données de la colonne B

- après chaque filtre, chaque ListBox respectives est alimentée en fonction
de chaque résultat de filtre pour chacun des trois critères (entrée, plat
principal et dessert).
- quand le resultat du filtre renvoi des données (lignes visibles) ou aucun
résultat, la macro marche à merveille

- le problème survient quand il n’y a qu’une seule ligne visible, ceci
occasionne que ma ListBox est alimentée par la donnée en question, ce qui est
normal mais suivi des 65000 lignes vides.

Comment faire pour que si le résultat du filtre = 1 ligne => qu’une seule
donnée soit répercutée dans le LisbBox et non pas la totalité de la colonne

Merci pour votre aide.


Sub filtre_groupe_entree00()
Dim i As Integer
Dim r As Range
Dim cell As Range
Dim temp() As String

With Worksheets("Groupes")
.Columns("A:A").AutoFilter Field:=1, Criteria1:="Entrée"
End With

If Application.Subtotal(3, Range("A2:A1000")) > 0 Then

Set r = Range("Groupes!B2:" &
Worksheets("Groupes").Range("B2").End(xlDown).Address)
Set r = r.SpecialCells(xlCellTypeVisible)

ReDim temp(100)
For Each cell In r
If IsError(Application.Match(cell, temp, 0)) Then
On Error Resume Next
temp(i) = cell
i = i + 1
End If
Next cell
ReDim Preserve temp(i - 1)
Groupes.GroupeEntrees.List = temp
Else
Exit Sub
End If
End Sub



Feuille:
Colonne A Colonne B
________ ________
Dessert Coupe Danemark
Dessert Sorbet vanille
Dessert Fruit frais
Entrée Consommé au Porto
Entrée Soupe paysanne
Entrée Potage aux légumes
Plat principal Cotelettes d'agneau
Plat principal Gratin de pommes de terre
etc..
etc..
Voir les 4 réponses - Poster une réponseCe sujet ne répond pas à vos besoins ? Posez votre question !
mots-clés : remplir, listbox, donnees, filtrees Catégories : Microsoft Office, Excel
 
Réseau - Données Externe - Requete
Enregistrer dans un dossier particulier
 

 

Téléchargements

Tous les téléchargements