Filtres Avancés, Filtres inverses, retirer données de base

Y compris Power BI, Power Query et toute autre question en lien avec Excel
d
dvdlrx
Nouveau venu
Nouveau venu
Messages : 4
Inscrit le : 27 juillet 2016
Version d'Excel : 2013 FR

Message par dvdlrx » 27 juillet 2016, 23:01

Alors voici ma situation,

J'ai une base de données sur les commerces d'une villes, donc environ 40 feuilles (chaque arrondissement) contenant environ 3000 données chacunes (les magasins).

Comme chaque ''type'' de magasin est identifié par un code, je suis capable de creer un filtre avancé pour conserver certains magasins. Mais ce que je veux faire, c'est l'inverse. Je veux entrer les codes des magasins que je ne veux PAS conserver. Il s'agirait donc en fait d'un filtre inverse... Analogie : J'ai une boite (grosse boite) de Smarties, je veux conserver toutes les couleurs, sauf les rouges et les bleus !

Merci de bien pouvoir m'aider !

David

P.S. Je vais envoyer une fichier exemple bientôt ainsi que le code avec lequel je travail.
g
gmb
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'684
Appréciations reçues : 343
Inscrit le : 4 avril 2013
Version d'Excel : 2016

Message par gmb » 27 juillet 2016, 23:27

Bonjour et bienvenue sur le forum

Si ton fichier est trop gros ( > 300k) passe par http://www.cjoint.com
Bye !
f
frangy
Passionné d'Excel
Passionné d'Excel
Messages : 4'342
Appréciation reçue : 1
Inscrit le : 19 novembre 2012
Version d'Excel : 2007 FR

Message par frangy » 27 juillet 2016, 23:41

Bonjour,

Avec un filtre avancé, tu peux filtrer les données "différentes de ..." avec des critères du type
<>Code_Truc

A+
d
dvdlrx
Nouveau venu
Nouveau venu
Messages : 4
Inscrit le : 27 juillet 2016
Version d'Excel : 2013 FR

Message par dvdlrx » 29 juillet 2016, 00:10

Exemple Filtre.xlsm
(213.12 Kio) Téléchargé 41 fois
Alors voici un exemple de fichier avec lequel je travail.
Je veux filtrer sur places les données, car le fichier original est très lourd, donc copier sur de nouvelles feuilles ne serait pas très efficace selon moi. Les filtres s'effectuent sur chaque feuille en utilisant les boutons de la feuille «critères».

Pour l'instant, mon filtre conserve seulement les données associées aux codes SCIAN des critères .Je tente cependant de conserver seulement les données qui ne sont PAS associées aux codes SCIAN (voir feuille «critères»), puis filtrer ces données (celles qui sont conservés) selon un nombre d'employés, avec un deuxième filtre, pour le deuxième ça va.

Pour le truc <> j'ai essayé, mais comme je travail avec de codes de 6 chiffres, Excel les vois comme des nombres alors toutes les donnés ne sont pas filtrés...

Merci beaucoup pour votre aide !

David
g
gmb
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'684
Appréciations reçues : 343
Inscrit le : 4 avril 2013
Version d'Excel : 2016

Message par gmb » 29 juillet 2016, 06:54

Bonjour

Une proposition qui masque au lieu de filtrer. Mais je me suis limité à cela seulement.
Cela te convient-il ?
Bye !
Exemple Filtre v1.xlsm
(227.68 Kio) Téléchargé 79 fois
f
frangy
Passionné d'Excel
Passionné d'Excel
Messages : 4'342
Appréciation reçue : 1
Inscrit le : 19 novembre 2012
Version d'Excel : 2007 FR

Message par frangy » 29 juillet 2016, 15:44

Bonjour,

Un exemple avec filtre avancé :
Exemple Filtre.xlsm
(207.85 Kio) Téléchargé 97 fois
A+
d
dvdlrx
Nouveau venu
Nouveau venu
Messages : 4
Inscrit le : 27 juillet 2016
Version d'Excel : 2013 FR

Message par dvdlrx » 29 juillet 2016, 17:48

Exemple Filtre v2.xlsm
(221.72 Kio) Téléchargé 76 fois
Exemple Filtre v2.xlsm
(221.72 Kio) Téléchargé 76 fois
Bonjour Frangy et gmb, merci beaucoup pour vos réponses !

Gmb je me suis inspiré des macros que tu m'as fournis pour ajuster à ma situation. Cependant, quelques petits trucs m’agacent encore.

D'abord, comme les feuilles du fichier original avec lequel je travail n'ont pas toutes le même nombre de lignes et colonnes et que celles-ci ne sont pas disposées de la même façon, crois tu qu'en effectuant
tablo = f.Range("A2:D" & f.Range("A" & Rows.Count).End(xlUp).Row)

si je sélectionne jusqu'à Z : tablo = f.Range("A2:Z" & f.Range("A" & Rows.Count).End(xlUp).Row) je pourrais m'assurer de tout avoir ?

De plus, j'arrive maintenant à masquer SCIAN et à filtrer par nombre d'employés, avec un SOUS.TOTAL j'obtiens ce que je cherchais ! Mission accomplie (presque).

FInalement, un dernier petite truc, j'ai modifié ta fonction AfficherTout pour qu'elle comporte un ActiveSheet.ShowAllData, ainsi qu'un ajustement de la hauteur des lignes (auparavant, en filtrant quelques fois certaines lignes se retrouvaient cachées...) mais quand j'effectue le ShowAllData mais qu'il n'y as pas de filtre actif, la fonction arrête à la ligne ActiveSheet.ShowAllData. Peut-être connais-tu une façon de créer une condition du type SI filtre actif ALORS ActiveSheet.ShowAllData ?

Voici le fichier avec lequel je travail, toutes les macros utiles sont dans le Module_gmb

Merci beaucoup,
Votre aide m'est très précieuse

David
g
gmb
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'684
Appréciations reçues : 343
Inscrit le : 4 avril 2013
Version d'Excel : 2016

Message par gmb » 29 juillet 2016, 18:23

Tu écris :
si je sélectionne jusqu'à Z : tablo = f…. je pourrais m'assurer de tout avoir ?
Pourquoi sélectionner plus que nécessaire ? Tu vas surcharger la machine qui tournera moins vite… mais c’est comme tu veux.
N’oublie pas cependant que les colonnes utilisée par la macro doivent être au même endroit pour chaque feuille !
mais quand j'effectue le ShowAllData mais qu'il n'y as pas de filtre actif, la fonction arrête à la ligne ActiveSheet.ShowAllData
C’est normal car, si on est en mode filtre, on ne peut pas filtrer à nouveau.
Quand il y a risque de se trouver dans cette situation on met cette instruction :
If FilterMode Then ShowAllData
OK ?

Bye !
PS : j'en profite pour saluer Frangy, toujours aussi brillant, tant en macro qu'en fonctions Excel !
d
dvdlrx
Nouveau venu
Nouveau venu
Messages : 4
Inscrit le : 27 juillet 2016
Version d'Excel : 2013 FR

Message par dvdlrx » 29 juillet 2016, 20:04

OK ! Alors pour les filtres je crois que si les entêtes sont les mêmes ça va, mais pour la fonction qui ''cache'' les codes SCIAN choisis je vais devoir faire attention et modifier l'emplacement de ceux-ci dans ma base de données !

Merci beaucoup à vous deux pour vos réponses rapides et très efficaces, c'était la première fois que je ne trouvais pas mes réponses en feuilletant le forum et je suis agréablement surpris de voir que la communauté est si active.

Continuez comme ça !

Merci beaucoup !

Un gars qui vient d'en apprendre beaucoup sur VBA...
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message