Renvoi de la donnée en filtrage automatique

coco_lapin

XLDnaute Impliqué
Bonjour le forum,

Je souhaiterais renvoyer dans une cellule l'information du filtage automatique.

Par exemple avec le filtrage automatique je filtre sur une données (exemple "1") et je voudrais que cette donnée apparaîse dans la cellule G3.

Si ne n'avais pas été assez clair, je vous joins un classeur exemple.

Merci pour votre aide.
 

Pièces jointes

  • Forum_filtrage.xls
    21 KB · Affichages: 36
Dernière édition:

Modeste geedee

XLDnaute Barbatruc
Re : Renvoi de la donnée en filtrage automatique

Bonsour®

lors de l'utilisation d'un filtre,
il ne faut pas mettre de formule utilisant le résultat dans la plage de lignes susceptibles c'etre masquées....
exemple au lieu d'écrire la formule en G3
ecrire cell-ci en G1

exemple en G1 :
=SOUS.TOTAL(2;C:C)

Capture.JPG
 

Pièces jointes

  • Capture.JPG
    Capture.JPG
    34.3 KB · Affichages: 94
  • Capture.JPG
    Capture.JPG
    34.3 KB · Affichages: 95

coco_lapin

XLDnaute Impliqué
Re : Renvoi de la donnée en filtrage automatique

Merci DoubleZero pour ton lien.
Il va vers une réponse de MicherlXld d'octobre 2004 (solution par macro que j'ai essayé et qui fonctionne très bien).
Comment as-tu trouvé ce lien? Il est vrai que je n'ai pas fait de recherche avant l'envoi de ma discussion et qu'avec une recherche j'aurais pu tomber dessus.

Je mets le code de MichelXld:
Code:
Sub boucleFiltresFeuille()
'la macro jointe permet d'afficher tous les criteres de filtres actifs dans la Feuil1
Dim i As Byte
For i = 1 To Feuil1.AutoFilter.Filters.Count
  If Feuil1.AutoFilter.Filters.Item(i).On = True Then _
  MsgBox "Le critère attribué : " & Feuil1.AutoFilter.Filters.Item(i).Criteria1
Next i
End Sub

Modeste geedee, j'avais omis de dire que je cherchais une formule. Ce que tu propose est exactement ce que je cherchais. J'ai fais une personnalisation minime: =SOUS.TOTAL(1;C:C)

Merci à vous 2 et bonne après-midi.
 

Dugenou

XLDnaute Barbatruc
Re : Renvoi de la donnée en filtrage automatique

Bonjour,
Pour le fun
Avec une fonction personalisée et un peu de bricolage car je suis un ignare en VB
Si d'aucun se sent le courage de me corriger
Cordialement
 

Pièces jointes

  • recup critere filtre.xls
    43 KB · Affichages: 39
  • recup critere filtre.xls
    43 KB · Affichages: 40
  • recup critere filtre.xls
    43 KB · Affichages: 40

coco_lapin

XLDnaute Impliqué
Re : Renvoi de la donnée en filtrage automatique

Bonjour Dugenou,
Ta formule fonctionne très bien. Mais bonjour ma petite tête pour la décortiquer. Moi je suis plutôt VBA, on ne peut pas être toujours parfait!

Ta formule:
=SI(ESTERREUR(DROITE(CritereFiltre(2);NBCAR(CritereFiltre(2))-1));"";DROITE(CritereFiltre(2);NBCAR(CritereFiltre(2))-1))
 

Dugenou

XLDnaute Barbatruc
Re : Renvoi de la donnée en filtrage automatique

Salut
j'ai fait une fonction personalisée nommée criterefiltre qui utilise du VB pour renvoyer le critère du filtre : le chiffre entre parenthèse est le N° du champ. mais ça renvoie =1 ou =2 car le critère c'est bien =2 quand tu choisi le chiffre 2. Donc je fais un traitement par formule (parce que je ne connais que ça) qui enlève le =. Mais s'il n'y a pas de critère ça renvoie une erreur donc
si (esterreur ....;"";...) : c'est vraiment du bricolage et je m'en excuse. par exemple si tu choisi un critère >ou = ça va merder puisque cette fois ci il y a 2 caractères à enlever !
C'est pourquoi je serai curieux de voir un vrai traitement VB écrit par quelqu'un de compétent !
Cordialement
 

coco_lapin

XLDnaute Impliqué
Re : Renvoi de la donnée en filtrage automatique

Bonjour le forum et bonjour Dugenou,

Merci Dugenou pour tes explications.

En testant avec des vraies données je me suis aperçu que la formule SOUS.TOTAL(1;C:C) ne fonctionnait qu'avec des nombres. Mon exemple était simpliste et prenait en compte un cas particulier qui induisait en erreur. En fait avec de vraies données le filtre peut se faire sur du texte donc ne fonctionne plus avec SOUS.TOTAL.


En conclusion j'ai finalement adopté ta formule.

Effectivement j'avais pas compris (ou plutôt pas bien lu), sur le coup, que du code était caché via une fonction personnalisée (la preuve que tu maîtrises le VBA
:D!!). Probablement que la longueur de ta formule m'avait impressionnée et d'emblée embrumée l'esprit:confused:!


La question initiale ne vient pas de moi mais d'une sympathique collègue. Je verrai dans la journée si ta formule convient à son besoin.


Ta formule m’a fait sentir que je n’exploitais pas assez les fonctions personnalisées. Il m’a fallu décortiqué par petit bout ta formule pour bien l’assimiler (voir classeur attaché). Je ne savais pas que l’on pouvait utiliser « ESTERREUR ». Merci pour l’info:).

Effectivement il faudrait dans l’absolue traiter tous les cas inimaginables du filtre et traiter les potentielles erreurs. Je crois que ce soit en formule ou VBA cela doit être une « usine à gaz ». De plus s’il y a plusieurs critères appliqués la formule ne marche plus trop.
Merci encore pour ton aide. Je vais appliquer ta formule sur le besoin de ma collègue et je reviendrai sur le forum pour dire si cela lui convient.

C'est pourquoi je serai curieux de voir un vrai traitement VB écrit par quelqu'un de compétent !
Par contre là je ne vois pas de qui tu parles:rolleyes:.

Bonne journée.
 

Pièces jointes

  • forum_recup critere filtre.xls
    37 KB · Affichages: 28
Dernière édition:

Dugenou

XLDnaute Barbatruc
Re : Renvoi de la donnée en filtrage automatique

Bonjour,
J'ai encore essayé de bricoler et tu vas comprendre qu'on a besoin de l'aide d'un vrai spécialiste.

Dans le fichier joint il y a 2 fonctions personnalisées : 1 pour le premier critère et une pour le second critère. Un petit tableau parmet de visualiser les résultats.

Je ne peux pas faire plus car à partir de 3 critères on n'a plus de résultat car la syntaxe change car on est dans un "array" au lieu d'avoir un simple "criteria" (j'ai découvert ça en enregistrant une macro de filtre avec 3 critères)
J'ai aussi essayé de mettre le nb de critères en variable et de faire une boucle mais je n'arrive pas à écrire Criteria(n) d'une façon correcte...:(

de plus si on choisi une lettre dans le filtre : le résultat de la fonction est faux :(

Donc ça marche pour un ou deux critères cochés dans la liste : à mon avis pas très probant !
La méthode avec une ou des msgbox me semble plus performante.
Cordialement
 

Pièces jointes

  • recup critere filtre V2.xls
    43 KB · Affichages: 34

coco_lapin

XLDnaute Impliqué
Re : Renvoi de la donnée en filtrage automatique

Bonsoir le forum et bonsoir Dugenou,

Dugenou, j'ai regardé ton dernier classeur mais je sèche pour les solutions.

En espérant qu'un Expert_VBA passera par ici.

En attendant la solution première que tu avais diffusée convient à ma collègue.

Nous te remercions pour ton aide.

Cordialement et bonne soirée.
 

Discussions similaires

Statistiques des forums

Discussions
312 332
Messages
2 087 362
Membres
103 530
dernier inscrit
Chess01