Autres Comment récupérer les propositions d'un filtre en VBA ?

EnoraD

XLDnaute Nouveau
Bonjour,

Je suis débutante en VBA. J'ai crée un filtre sur une colonne qui comporte différents noms, en VBA grâce à autofilter.

Je souhaiterai récupérer toutes les propositions de ce filtre pour ensuite les mettre dans un autre tableau.

Exemple pour que ce soit un peu plus clair :

Colonne A
Nom/Prénom
Martin Charles
Dupont André
Martin Charles
Martin Charles
Hélène Ferreira
...

A cette colonne j'ai associé un filtre pour filtrer les prénoms.

Je souhaiterai ici récupérer chacun des noms figurant dans le filtre (sans doublons donc) pour réutiliser ces noms par la suite dans une autre cellule du tableau.

Merci d'avance pour votre aide :)
 

jmlucien

XLDnaute Nouveau
Il faut que tu les charges dans un tableau virtuel style :
Dim Tablo
Dim Al As Object
Dim i, j As Long


'Met les noms en m?moire dans un tableau

Tablo = Range("A:A").Value

'Crée un objet de type ArrayList
Set AL = CreateObject("System.Collections.ArrayList")
With AL
For i = 2 To UBound(Tablo, 1)
If Tablo(i, 1) <> "" Then
If Not .contains(Tablo(i, 1)) Then .Add Tablo(i, 1) 'ajout au ArrayList
End If
Next i
.Sort 'Tri alphabétique
Me.cbSalarie.List = .toarray 'envoie la liste dans un combobox
End With
If Me.cbSalarie.ListCount > 0 Then Me.cbSalarie.ListIndex = 0
i = 0
A adapter à ton cas...
 

EnoraD

XLDnaute Nouveau
Merci pour vos réponses !
@jmlucien, si je comprends bien, ton tableau me permet de mettre uniquement les noms filtrés en mémoire c'est bien ça ? Car les filtres étant variables (ils dépendent des noms qui sont mis dans la colonne A), les valeurs mises en mémoire vont bien se modifier à chaque fois ?

@patricktoulon, c'est une bonne idée mais comme je viens de l'écrire, les noms peuvent varier selon comment on remplit le tableau donc j'aimerai peu importe les noms pouvoir récupérer les critères de la liste filtrante. Je n'ai jamais utilisé le .specialcells(xlvisible) ...
L'utilisateur doit donc selectionner son critère (Dupont André par exemple), les lignes contenant uniquement ce critère restent affichées, et ensuite avec la commande que vous me proposez, je vais pouvoir selectionner toutes les lignes associés uniquement à Dupont André c'est bien ça ?

Désolée, comme je suis débutant je ne connais pas encore toute les notations et logiques en VBA :/
 

EnoraD

XLDnaute Nouveau
Etant un sujet confidentiel je ne peux malheureusement pas vous envoyer mon Excel, mais pour résumer, j'ai un tableau avec des nombres associés à des clients (peu de clients mais beaucoup de répétition). Mon but est d'avoir le total de la colonne contenant des nombre donc sa somme par personne donc j'aimerai fiare un petit tableau récapitulatif du grand tableau avec pour chaque personnes son total. Les filtres permettent surtout à l'utilisateur d'avoir une vue globale mais le plus important est le total par personne.
 

EnoraD

XLDnaute Nouveau
NomNombre de bananeVisite
Dupont Michel23Marché
Martin Robert12Magasin
Michel André3Magasin
Martin Robert54Marché

Voila par exemple le tableau que j'ai en entrée, avec un filtre en haut de chaque colonne. Les données viennent d'une base de données qui se modifie au cours du temps donc le tableau évolue.

Et le tableau que je voudrai
NomTotal bananeTotal Visite
Dupont Michel231
Martin Robert 662
Michel André 31

Ca sera beaucoup plus clair comme ça je pense. J'avais l'idée de récupérer les différents noms du premier tableau avec la liste filtrante qui existe déjà mais je suis preneuse si vous avez d'autres idées qui seraient plus simples ou plus légères à me suggérer.

Merci d'avance pour votre aide :)
 

jmlucien

XLDnaute Nouveau
Merci pour vos réponses !
@jmlucien, si je comprends bien, ton tableau me permet de mettre uniquement les noms filtrés en mémoire c'est bien ça ? Car les filtres étant variables (ils dépendent des noms qui sont mis dans la colonne A), les valeurs mises en mémoire vont bien se modifier à chaque fois ?

@patricktoulon, c'est une bonne idée mais comme je viens de l'écrire, les noms peuvent varier selon comment on remplit le tableau donc j'aimerai peu importe les noms pouvoir récupérer les critères de la liste filtrante. Je n'ai jamais utilisé le .specialcells(xlvisible) ...
L'utilisateur doit donc selectionner son critère (Dupont André par exemple), les lignes contenant uniquement ce critère restent affichées, et ensuite avec la commande que vous me proposez, je vais pouvoir selectionner toutes les lignes associés uniquement à Dupont André c'est bien ça ?

Désolée, comme je suis débutant je ne connais pas encore toute les notations et logiques en VBA :/
 

jmlucien

XLDnaute Nouveau
Perso, j'ai une table, avec des enregistrements qui s'ajoutent en permanence et j'ai besoin dans ma liste déroulante d'une seule entrée par nom figurant dans la colonne A de ma table. A chaque fois que je mets à jour ma liste je relis cette colonne A et le ne garde qu'une entrée par nom. Ensuite quand je sélectionne cette entrée, je récupère tous les enregistrements qui ont cette entrée en colonne A...Jean-Marc
 

Discussions similaires