Filtre

Résolu/Fermé
Jennib370 Messages postés 53 Date d'inscription mardi 27 décembre 2011 Statut Membre Dernière intervention 31 mars 2022 - 19 mars 2021 à 18:59
via55 Messages postés 14403 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 24 avril 2024 - 19 mars 2021 à 21:58
Bonjour,

Je cherche une fonction pour filtrer un tableau à partir d'une donnée dans une cellule.

J'ai tenté de créer une macro sans VBA (parce que je ne m'y connais pas du tout) en copiant le nom de l'établissement pour m'afficher seulement les informations sur cet établissement et ça facontionne. Par contre je dois refaire ma macro à chaque tableau car le nom de l'établissement change, donc pas très pratique quand tu en as 17 à faire ;)

Alors je me suis dit si je peux filtrer le nom de l'établissement qui se trouve dans la cellule A2, je ferai que changer le nom de l'établissement A2 et le filtre se fera à partir de A2 ? Est-ce que c'est compréhensible?

Merci beaucoup!

Configuration: Windows / Chrome 89.0.4389.90

4 réponses

via55 Messages postés 14403 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 24 avril 2024 2 703
19 mars 2021 à 19:14
Bonsoir

Compréhensible non !
Une macro sans VBA ça n'existe pas

Soit tu as un tableau avec les noms dans une colonne et tu peux utiliser le filtre sur cette colonne et donc filtrer les données sur place pas besoin d'autre manip
soit tu veux choisir un établissement (dans une liste déroulante) et faire afficher les infos correspondantes (et là tu le fais avec des RECHERCHEV ou des INDEX EQUIV)

Il faut nous fournir un exemple de ton fichier (anonymisé avant si nécessaire) en le postant sur mon-partage.fr ou cjoint.com, en copiant le lien créé et en revenant le coller ici en expliquant dans le fichier avec un exemple précis ce que tu cherches à obtenir
et là on pourra sans doute t'aider

Cdlmnt
Via
1
Jennib370 Messages postés 53 Date d'inscription mardi 27 décembre 2011 Statut Membre Dernière intervention 31 mars 2022 1
19 mars 2021 à 19:34
Bonjour,


Je me suis mal exprimer... je voulais dire que j'ai créé une macro avec le bouton "enregistrer une macro" mais je n'ai pas saisi les codes VBA manuellement.

Et je comprends aussi que j'aurais dû vous mentionner que ce tableau qui se nomme par le nom de l'établissement, est lié à partir d'un autre tableau, qui se nomme Base de donnée des établissements où toutes l'informations de tous les établissements se trouvent.

Donc en exécutant cette macro, elle "refiltre" la tableau, donc se met à jour.

Merci pour votre réponse.
0
via55 Messages postés 14403 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 24 avril 2024 2 703
19 mars 2021 à 20:26
Re,

Et moi j'ai mal interprété et pas compris que tu avais enregistré une macro

Dans ce cas dans cet enregistrement (Alt+fF1 pour ouvrir l'éditeur VBA puis aller dans Module 1 en principe) tu dois avoir une ligne de ce style :

ActiveSheet.Range("$A$1:$K$121").AutoFilter Field:=3, Criteria1:="Etablissement AAA"

dans laquelle le critère de filtre est indiqué "en dur"

tu peux très bien le remplacer par une référence à la cellule A2 de ta feuille comme tu as bien pensé, il faut remplacer simplement le "Etablissement AAA" par Range("A2"), la ligne devenant ainsi (chez moi) :
ActiveSheet.Range("$A$1:$K$121").AutoFilter Field:=3, Criteria1:=Range("A2")

Ainsi tu pourras comme tu voulais, faire une MAJ après chaque changement en A2 e lançant la macro

On pourrait même prévoir de lancer la macro automatiquement à chaque changement en A2
Pour cela dans l’arborescence à gauche de l'éditeur VBA il faut double cliquer sur le nom de la feuille depuis laquelle cela doit s'apliquer puis dans la page blanche coller la macro suivante
(en adaptant la plage de ton tableau chez moi A1:K121, et la colonne du filtre la 3 chez moi)
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A2")) Is Nothing Then
'1er Range est la plage du tableau - Field est la colonne du filtre - Le 2nd range est la cellule où se trouve le critère du filtre
  ActiveSheet.Range("$A$1:$K$121").AutoFilter Field:=3, Criteria1:=Range("A2")
End If
End Sub



0
Jennib370 Messages postés 53 Date d'inscription mardi 27 décembre 2011 Statut Membre Dernière intervention 31 mars 2022 1
19 mars 2021 à 21:33
Donc ça :

    ActiveSheet.ListObjects("Tableau6").Range.AutoFilter Field:=3, Criteria1:= _
        "004 - École"


devient ça :

    ActiveSheet.ListObjects("Tableau6").Range.AutoFilter Field:=3, Criteria1:= _
        "A2"


Aucun messahe d'erreur, mais rien ne s'affiche, zéro résultat et je devrais en avoir un.
0
via55 Messages postés 14403 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 24 avril 2024 2 703 > Jennib370 Messages postés 53 Date d'inscription mardi 27 décembre 2011 Statut Membre Dernière intervention 31 mars 2022
19 mars 2021 à 21:58
Tu as mis Criteria1:= "A2" donc Excel recherche une valeur A2 qu'il ne trouve pas bien sûr

alors que j'avais indiqué Criteria1:=Range("A2") pour qu'il cherche la valeur DANS la cellule (Range) A
0
Jennib370 Messages postés 53 Date d'inscription mardi 27 décembre 2011 Statut Membre Dernière intervention 31 mars 2022 1
19 mars 2021 à 20:28
J'ai trouvé! J'enregistre ma macro en appuyant sur Ctrl C pour copier ma cellule A1, je clique sur mon bouton filtrer de ma colonne et dans la section Recherche je colle ce que je viens de copier, simplement! J'allais chercher trop loin.

Il a surement mieux que cette façon, mais pour mes besoins c'est parfait pour l'instant! :)
0
Jennib370 Messages postés 53 Date d'inscription mardi 27 décembre 2011 Statut Membre Dernière intervention 31 mars 2022 1
19 mars 2021 à 21:45
Mon idée n'était pas bonne finalement.
0