Inverser selection filtre [RÉSOLU]

FOURNIAL

XLDnaute Nouveau
Bonjour tout le monde,

Je me tourne vers vous après moultes recherches sur le net car jusqu'à présent j'avais la flemme de poser la question et espérais trouver le post où quelqu'un s'en était chargé à ma place mais que nenni...

Donc je souhaite faire un filtre sur une colonne, tout ce qu'il y a de plus basique. Admettons les cellules contiennent des chiffres de 1 à 100. Je sélectionne dans mon filtre 15 chiffres. Et bien maintenant avec une commande (surement à créer en macro ou autre) je souhaiterais inverser la sélection du filtre pour avoir les 85 autres cellules sans avoir a tout décocher / recocher.

Merci par avance pour le temps que vous prendrez et pour les solutions que vous pourrez m'apporter.
 

FOURNIAL

XLDnaute Nouveau
C'est au top un grand merci Philippe !

J'ai mis 10 000 dans ta macro histoire d'être tranquille.

J'en profite pour abuser : en bas à gauche, le petit calcul dû au filtre, chez moi : "889 enregistrement(s) trouvé(s) sur 4403". C'est possible qu'il se mette à jour ou pas ? car il bouge pas. Il s'agit du chiffre suite au filtre original. Il devrait mettre : "3514 sur 4403" logiquement.
 
Dernière édition:

phlaurent55

XLDnaute Barbatruc
Re,

J'ai mis 10 000 dans ta macro histoire d'être tranquille.
Plutôt que faire tourner la boucle 5597 fois pour rien si il y a seulement 4403 données en colonne A
remplace le code par celui-ci:

Code:
Sub Bouton1_Clic()
Application.ScreenUpdating = False
For i = 2 To WorksheetFunction.CountA(Range("A:A"), "<> """)-1
Rows(i).Hidden = Not Rows(i).Hidden
Next i
Application.ScreenUpdating = True
End Sub

'en profite pour abuser : en bas à gauche, le petit calcul dû au filtre, chez moi : "889 enregistrement(s) trouvé(s) sur 4403". C'est possible qu'il se mette à jour ou pas ? car il bouge pas. Il s'agit du chiffre suite au filtre original. Il devrait mettre : "3514 sur 4403" logiquement.
Sans voir le fichier il ne m'est pas possible de répondre à la question.


à+
Philippe
 

Fichiers joints

phlaurent55

XLDnaute Barbatruc
Re,

avec ceci peut-être:

Code:
Sub Bouton1_Clic()
compteur = 0
Application.ScreenUpdating = False
For i = 2 To WorksheetFunction.CountA(Range("A:A"), "<> """) - 1
Rows(i).Hidden = Not Rows(i).Hidden
If Rows(i).Hidden = False Then compteur = compteur + 1
Next i
Application.ScreenUpdating = True
MsgBox (compteur & " enregistrements trouvés")
End Sub
à+
Philippe
 

FOURNIAL

XLDnaute Nouveau
Ok je vais essayer tout ça.
Par contre, si le filtre n'est pas en colonne A, je pense que ça ne marchera pas.

J'ai une quarantaine de colonnes et environ 4000 lignes. L'idée serait de pouvoir le faire dans n'importe quelle colonne. Dans ton premier code c'est le cas, donc au pire je vais le laisser et tant pis pour la mise à jour du compteur en bas. Et je vais régler sur 5000 au lieu de 10000 car effectivement j'ai vu un peu grand.
 

FOURNIAL

XLDnaute Nouveau
Ok je me réponds à moi-même. J'ai testé le dernier code et ça fonctionne même quand le choix du filtre se fait en colonne X, Z ou AK...
Donc parfait, Merci à toi !
 

phlaurent55

XLDnaute Barbatruc
Re,

Et je vais régler sur 5000 au lieu de 10000 car effectivement j'ai vu un peu grand.
il n'est pas nécessaire d'imposer le nombre de ligne car la ligne suivante calcule le nombre de lignes utilisées en colonne A en ne tenant pas compte du titre en ligne 1
For i = 2 To WorksheetFunction.CountA(Range("A:A"), "<> """) - 1

si tu veux compter dans une autre colonne, il suffit de remplacer Range("A:A") par la lettre de la colonne concernée.
par exemple pour compter les données en colonne Z:
For i = 2 To WorksheetFunction.CountA(Range("Z:Z"), "<> """) - 1

ATTENTION toutefois, il ne peut pas y avoir de cellules vides dans la colonne sur laquelle le comptage sera fait

à+
Philippe
 

FOURNIAL

XLDnaute Nouveau
Ha très bien j'ai compris. Donc je confirme c'est parfait, la colonne A contient les identifiants et ne sera jamais vide.
Merci encore.
 

Discussions similaires


Haut Bas