ListBox / Filtre Avancé

Résolu/Fermé
Roco - 6 mai 2020 à 15:02
 Roco - 7 mai 2020 à 08:47
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
A voir également:

3 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
6 mai 2020 à 16:19
Bonjour,

Revisionner la video et vous verrez tout de suite ce que vous avez zappe a 9:40 au niveau code
0
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...
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
7 mai 2020 à 07:15
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
0
Bonjour,
Merci pour cette réponse!
En vous souhaitant une bonne journée
0