ListBox / Filtre Avancé [Résolu]

Signaler
-
 Roco -
Hello la communauté,
Une petite question pour vous:
J'ai créé un filtre avancé en VBA qui me renvoie mon tableau filtré en copie sur une feuille Excel : Le but, affecter ce nouveau "tableau" à une ListBox pour permettre à l'utilisateur de visualiser ce "tableau"filtré dans un userform. Vous pouvez voir un exemple en cliquant sur le lien suivant et en vous positionnant à 8min55:
https://www.youtube.com/watch?v=pUkV5lMFWL8&t=529s

Problème : Le "tableau" créé en copie n'est pas un véritable tableau (d'où mes guillemets). Mon objectif est donc de trouver une méthode permettant de nommer ce "tableau" afin de pouvoir l'affecter en temps que RowSource pour ma ListBox. Pour revenir à mon exemple en vidéo : Placez vous à 8min00 vous pourrez lire dans les lignes de code "ListeExtraction". C'est cette "ListeExtraction" que je souhaite créer.

Première technique testée : Je crée un nouveau tableau en sélectionnant les données filtrées en copie. Bilan : Visiblement c'est plutôt gourmand en mémoire et mon ordi galère...

Deuxième technique testée : Passer par une sorte de sélection nommée qu'on affecterait à la ListBox. Pour le moment j'ai un message d'erreur...

Voici mon code :

FiltreAvanceCopieAilleur 'J'applique mon filtre sur mon tableau initial
'On crée une sélection pour pouvoir exploiter les données filtrées
Dim selec As Range
'On sélectionne ce nouveau "tableau" qui n'en est pas un
Set selec = Feuil5.Range("A1").CurrentRegion
'On affecte cette sélection à la ListBox de mon UserForm
ListBox1.RowSource = selec 'Retourne un message d'erreur (idem si on note "selec")


D'avance merci pour votre aide/idées! :-)



Configuration: Windows / Chrome 81.0.4044.129

3 réponses

Messages postés
15391
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
25 octobre 2020
1 383
Bonjour,

Revisionner la video et vous verrez tout de suite ce que vous avez zappe a 9:40 au niveau code
En modifiant la ligne de code de la manière suivante:
ListBox1.RowSource = Range("selec").Address(external:=True)

J'obtiens malheureusement un nouveau message d'erreur...
Messages postés
15391
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
25 octobre 2020
1 383
Bonjour,
select n'est une plage nommee.
une facon de faire: ici deux colonnes
    Set plage = Feuil1.Range("A1:B" & Feuil1.Range("B" & Rows.Count).End(xlUp).Row)     'plage de cellules trouvees
    ListBox1.RowSource = "=feuil1!" & plage.Address
Bonjour,
Merci pour cette réponse!
En vous souhaitant une bonne journée