Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Membre régulier
    Afficher les données en fonction de la liste déroulante
    Bonjour à tous,

    J'ai crée une liste déroulante, et j'aimerai quand je sélectionne une donnée dans ce liste seules les info de cette donnée apparaît.

    J'ai crée deux listes déroulante ( une liste pour les années et l'autre pour les mois), l'idée est que par exemple si dans ma liste je sélectionne 2019 pour les année et décembre pour le mois, seuls les données de décembre 2019 s'afficheront ( un peu comme un tableau croisé dynamique)



    Merci à tous de votre aide,

  2. #2
    Membre averti
    Bonjour,

    Si c'est un peu comme un TCD, alors pourquoi ne pas faire un TCD ?
    Si ce n'est qu'une question de mise en forme pour que ce soit joli, il y a la possibilité d'utiliser les segments également.

  3. #3
    Membre régulier
    Merci pour votre réponse.


    Je ne souhaite pas passé par un TCD car il réponds pas à ce que je veux faire sur le reste des données.


    D'autres solutions svp?

  4. #4
    Expert confirmé
    Salut,

    Ce que veux faire, c'est une formule de filtre ... en plus sur deux critères ... ce qui compléxifie le problème.

    Je te propose une alternative.
    Tu actives la fonction "Tableau" sur ton tableau à filtrer.
    Pour faire çà. Place toi dans ton tableau. Dans l'onglet "Accueil" Mettre sous forme de tableau. Tu choisis une mise en forme.
    Pour en savoir plus sur le sujet :
    https://fauconnier.developpez.com/tu...ux-structures/

    Une fois cette étape faite
    Tu as un onglet supplémentaire "Création" et dans cet onglet une commande "Segment"
    En cliquant tu dois voir apparaître la liste de tes colonnes et donc les mois et années. Tu les coches et ces "outils graphique" permettent très facilement de filtrer ton tableau.

    J'ajoute que quand tu sélectionne un de ces segments, tu as aussi un nouvel onglet qui te permet de personnaliser la présentation des ces éléments.

    En espérant que cette piste peut te convenir.

    GG
    Jérôme

    " Je pense donc je suis. Tu es donc j'apprends ". (GCM)

    Si ce message vous à aidé, merci de cliquer sur . Si ce message est résolu, cliquez sur .

  5. #5
    Membre régulier
    Bonjour à tous,

    la solution de Jérôme ne corresponds pas tout à fait à ce que je souhaite, du coup, je me permets de relancer à nouveau la discussion en espérant avoir la solution miracle.

    Je joins mon fichier Excel peut-être que cela pourrait être plus facile à comprendre ce que je souhaite faire.



    Merci à tous de votre aide,

  6. #6
    Responsable
    Office & Excel

    Salut.

    Pourtant, je la trouve chouette, la solution de Jérôme...




    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Membre expert
    c'est une audace de répondre après Pierre Fauconnier (bonjour au passage)
    mais pour une raison que j'ignore vous voulez passer par VBA, voila un bricolage d'un débutant à tester avec prudence :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Sub filtrerDonnées()
    Dim F As Worksheet
    Dim I As Long
     Application.ScreenUpdating = False
     Set F = Sheets("Suivi insatisfactions")
     With F
        If Not .AutoFilter Is Nothing Then
          If .FilterMode Then .ShowAllData
          .AutoFilter.Range.AutoFilter
        End If
    I = .Cells(Rows.Count, 3).End(xlUp).Row
    .Range("A9:M" & I).AutoFilter field:=1, Criteria1:=F.Cells(1, 3)
    .Range("A9:M" & I).AutoFilter field:=2, Criteria1:=F.Cells(2, 3)
    End With
     Application.ScreenUpdating = True
    End Sub
    -----------------------------------------------*****-------------------------------------------------------------------------------------------
    Notre seul pouvoir véritable consiste à aider autrui.

  8. #8
    Responsable
    Office & Excel

    Salut

    Citation Envoyé par BENNASR Voir le message
    [...]
    Chaque solution a ses avantages et ses inconvénients. La tienne, que je n'ai pas testée mais je suppose que tu l'as fait, peut s'intégrer dans un process VBA plus long et a donc tout son intérêt.

    On pourrait également s'orienter vers les filtres avancés, voire vers Power Query (qui dupliquerait les données filtrées). Tout dépend du projet dans lequel ce filtre vient prendre place

    Toute approche valable a sa raison d'être et la diversité des réponses permet au demandeur de choisir ce qui lui convient le mieux (Donc, pour ta solution )
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  9. #9
    Membre régulier
    Citation Envoyé par BENNASR Voir le message

    ...mais pour une raison que j'ignore vous voulez passer par VBA, voila un bricolage d'un débutant à tester avec prudence :

    Bonjour,

    Je ne souhaite pas passer par VBA car je ne connais pas du tout VBA


    Merci quand même pour la réponse je vais essayer de regarder ça

  10. #10
    Membre régulier
    Le code marche très bien je te remercie beaucoup, juste une petite problématique c'est qu'avec ce code je ne peux pas dé"filtrer"

    Je m'en excuse de toutes ces questions ( dû à mon niveau médiocre sur VBA)

    Merci de l'aide

  11. #11
    Membre expert
    à tester
    -----------------------------------------------*****-------------------------------------------------------------------------------------------
    Notre seul pouvoir véritable consiste à aider autrui.

  12. #12
    Membre régulier
    Bonjour,

    dans la dernière solution donnée, le filtrage marche très bien mais à chaque fois que je cliques sur "défiltrer" ça me met une fenêtre pour débogage.

    Ci joint capture écran


    Pouvez-vous m'aider s'il vous plait? Merci

  13. #13
    Responsable
    Office & Excel

    Vu que tu utilises un tableau structuré, tu dois utiliser le ShowAllData du tableau, et non celui de la feuille (car il n'y en a pas sur la feuille).

    Voici un code qui défiltre le premier tableau structuré de la feuille 1.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    feuil1.listobjects(1).AutoFilter.ShowAllData
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  14. #14
    Membre régulier
    Merci pour la réponse.

    Cela ne donne rien.

    Je précise que le premier code, défiltre sur le premier coup après ouverture de fichier mais si essaye de défitrer les fois suivantes ça plante

  15. #15
    Responsable
    Office & Excel

    Donne le code que tu utilises, sinon, nous ne saurons pas t'aider. Il faut évidemment adapter le code que je t'ai donné à ta situation (nom de la feuille, ...).

    A ce stade de tes connaissances en VBA (ce n'est pas une attaque personnelle), tu gagnerais à utiliser les outils natifs d'Excel (notamment les segments comme le propose Jérôme et comme je l'ai illustré), plutôt que te lancer dans du VBA pour réinventer la roue, surtout dans des délais de réalisation aussi courts.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  16. #16
    Membre régulier
    Tu as raison et t'inquiète pas je ne le prends pas du tout comme une attaque personnelle, au contraire je me sens gêné plus qu'autre chose...

    Le code initial ( ou le deflitrage fonctionne que la première fois)

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub DefiltrerDonnées()
    With ActiveSheet
        ' Supprimer le filtre actuel quel que soit l'endroit où il se trouve
       If .FilterMode Then .ShowAllData
    End With
    End Sub


    Après
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    Suiviinsatisfactions.listobjects(1).AutoFilter.ShowAllData

  17. #17
    Responsable
    Office & Excel

    Dans la configuration qui me semble être celle de ton classeur (cfr tes autres discussions), je doute que ShowAllData sur une feuille qui n'est pas filtrée fonctionne.

    Cela étant, voici un code générique qui reçoit une feuille de calcul en argument, et qui libère tous les filtres de la feuille, qu'ils soient de feuille ou de tableau structuré.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub ShowAllData(sh As Worksheet)
      Dim ls As ListObject
     
      If sh.FilterMode Then sh.ShowAllData
      For Each ls In sh.ListObjects
        ls.AutoFilter.ShowAllData
      Next
    End Sub
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  18. #18
    Membre régulier
    Merci aussi pour ton aide. TOP

###raw>template_hook.ano_emploi###