IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Macros et VBA Excel Discussion :

Liste déroulante pour afficher/masquer lignes sur différents onglets [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 13
    Par défaut Liste déroulante pour afficher/masquer lignes sur différents onglets
    Bonjour,

    Je débute tout juste en VBA et c'est la raison pour laquelle je sollicite votre aide. Dans le fichier joint, je souhaiterais pouvoir disposer d'une liste déroulante sur les lignes :
    Nombre d'agents
    Nombre de collaborateurs total
    Nombre d’agences

    Les chiffres sélectionnés permettront de conserver le nombre de lignes correspondantes dans les différents onglets (sélectionner 10 collaborateurs dans la liste impactera les tableau des onglets diag-RH et diag relationnel)

    J'avais entamé la démarche via des toupies que je répliquais sur chacun des onglets. Le problème c'est que ça n'est pas des plus efficaces d'autant que je dois rajouter un compteur (cellule associée) et que je souhaiterais éviter de redemander sur chaque onglet la même information.

    Pouvez-vous me communiquer un code que je pourrais appliquer aux listes déroulantes?

    Merci beaucoup d'avance pour votre aide


    PJ_forum vba.xlsm

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Prends le temps de lire les premiers articles dans cette PAGE
    Peu de gens vont ouvrir un fichier avec macros.
    Il est donc préférable de bien expliquer ton problème avec copies d'écran si nécessaire et bouts de code ( en les balisant à l'aide du bouton # en haut du message )

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 13
    Par défaut
    Salut Parmi,

    Merci pour ce conseil, je vais tâcher de clarifier ma demande. Sur le screenshot ci-après (correspondant à l'onglet 1), je souhaiterais pouvoir sélectionner le "nombre d'agents", le "nombre de collaborateurs" et le "nombre d'agences" via une liste déroulante.

    Nom : Microsoft Excel - PJ_forum vba.xlsm.jpg
Affichages : 1236
Taille : 36,1 Ko

    Si dans le menu déroulant je sélectionne 4, cela devra, dans les tableaux contenant cette donnée, (onglets 2 et 3) ne conserver que les lignes "Agent 1" à "Agent 4", les autres lignes "Agent XX" seront masquées.

    Nom : Microsoft Excel - PJ_forum vba.xlsm_2.jpg
Affichages : 1255
Taille : 117,1 Ko

    J'aimerais faire tout cela avec des menus déroulants plutôt qu'avec des toupies.

    Est-ce que c'est plus clair? Vous avez besoins de davantage de détails?

    Merci

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Dans les 2 feuilles RH et Modèle relationnel, il y a 2 tableaux, un sous l'autre.
    Est-ce que tu veux masquer les 2?
    Autrement, avec des filtres ç'aurait été plus simple...

    Du genre
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Sub Filtrer()
        Dim I As Long
        Dim Tablo
        Dim Idx As Long
     
        'Enlever les filtres des 2 feuilles
        Sheets("Diag - Général et écosystème").AutoFilterMode = False
        Sheets("Diag - Général et écosystème").Rows(11).AutoFilter
        Sheets("Diag - RH").AutoFilterMode = False
        Sheets("Diag - Modèle relationnel").AutoFilterMode = False
        Sheets("Diag - RH").Rows(5).AutoFilter
        Sheets("Diag - Modèle relationnel").Rows(5).AutoFilter
     
        ReDim Tablo(Idx)
     
        With Sheets("Diag - Général et écosystème")
            If .Range("B6") > 0 Then
                For I = 1 To .Range("B6")
                    ReDim Preserve Tablo(Idx)
                    Tablo(Idx) = "Agent " & I
                    Idx = Idx + 1
                Next
            End If
            If .Range("B7") > 0 Then
                For I = 1 To .Range("B7")
                    ReDim Preserve Tablo(Idx)
                    Tablo(Idx) = "Collaborateur " & I
                    Idx = Idx + 1
                Next
            End If
            Sheets("Diag - RH").Rows(5).AutoFilter Field:=1, Criteria1:=Tablo, Operator:=xlFilterValues
            Sheets("Diag - Modèle relationnel").Rows(5).AutoFilter Field:=1, Criteria1:=Tablo, Operator:=xlFilterValues
     
             If .Range("B8") > 0 Then
                Idx = 0
                ReDim Tablo(Idx)
                For I = 1 To .Range("B8")
                    ReDim Preserve Tablo(Idx)
                    Tablo(Idx) = "Agence " & I
                    Idx = Idx + 1
                Next
                Sheets("Diag - Général et écosystème").Rows(11).AutoFilter Field:=1, Criteria1:=Tablo, Operator:=xlFilterValues
     
            End If
     
        End With
     
    End Sub

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2018
    Messages : 13
    Par défaut
    Bonjour Parmi,

    Un grand merci à toi pour ce code et pour ta diligence. Le but de la liste déroulante c'est vraiment du cosmétique pour rendre l'outil final user-friendly, ça n'est pas moi qui vais l'utiliser. L'outil sera utilisé par différentes personnes qui n'auront pas le temps, ni l'envie de comprendre où filtrer, sur quoi filtrer etc...

    Les listes déroulantes centralisent les données renseignées et doivent impacter l'ensemble des tableaux du fichier. Pour répondre à ta question, si je sélectionne l'information "4" agents, cela doit permettre de masquer les lignes "Agent 5", "Agent 6", "Agent 7"..."Agent 10" sur les 2 tableaux qui contiennent ces informations. (les agents ont des numéros de manière à ne pas les nommer, l'objectif n'est pas de les évaluer mais de faire un diagnostique d'une entreprise dans sa globalité)

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    C'est ce que fait le code.
    Il enlève les filtres et remets selon les chiffres entrés dans le tableau de départ où tu veux mettre des listes déroulantes.

    Ça ne sert à rien, selon moi, de mettre des listes si l'utilisateur n'a qu'à entrer un chiffre dans 2 ou 3 cellules...
    Il ne reste qu'à mettre un bouton qui démarre la macro pour filtrer les listes.
    C'est rapide et efficace.

    Si tu tiens à avoir 2 listes par page, il faudra alors boucler les lignes, ce qui sera un peu plus long, surtout si ces listes changent de longueurs dans le temps...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Liste déroulante pour afficher masquer une courbe
    Par jeffvb93 dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 02/08/2017, 17h08
  2. Réponses: 5
    Dernier message: 26/04/2016, 14h55
  3. [XL-2010] Procédure evenementielle pour afficher/masquer des lignes
    Par canary dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 04/07/2013, 13h38
  4. Commande pour afficher une ligne sur 2
    Par toxycyty dans le forum Linux
    Réponses: 2
    Dernier message: 08/10/2008, 15h30
  5. [AJAX] Liste déroulante pour afficher les informations en ajax div ?
    Par rob2-9 dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 17/11/2006, 09h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo