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 :

Boutons pour ajouter/enlever filtres automatiquement


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Avril 2015
    Messages : 38
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    Je débute en VBA et je souhaiterai ajouter deux boutons dans mon fichier excel "ouverture" et "fermeture". Le bouton ouverture permet d'effacer le filtre souvent présent dans la colonne "actif" et "analyse" et d'ouvrir les groupés tout au dessus des colonnes A B... et fermeture de refermer les croix.. Je souhaiterai par contre regrouper les colonnes comme elles étaient à l'origine lorsque je clique sur le bouton femeture ou que je ferme le fichier.

    Après plusieurs recheches sur google, jai ajouté 2 boutons mais seul le fermeture ne marche et il ne reprend pas les groupes d'origine.


    Voici mon fichier : http://cjoint.com/?EEvoM0qFhof

    Merci par avance.

    Voici mon code actuel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Cmd_Ouverture_Clic()
     
    On Error Resume Next 'enleve filtre
    ActiveSheet.ShowAllData 'degroupe colonnes
    ActiveSheet.Outline.ShowLevels RowLevels:=0, columnlevels:=3
    End Sub
     
    Sub Cmd_Fermeture_Clic()
     
    ActiveSheet.Outline.ShowLevels RowLevels:=0, columnlevels:=1
    End Sub
    est-il possible que le bouton ouverture me rouvre mes filtres et groupés comme ils étaient à l'origine.

    merci

  2. #2
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut
    Bonjour Serenay,
    Quelques précisions, stp
    d'effacer le filtre souvent présent dans la colonne "actif" et "analyse"
    Faut-il supprimer tous les filtres de la feuille ou seulement colonne A et B ?
    Pour toute la feuille :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sub Cmd_Ouverture_Click()
        ActiveSheet.ShowAllData   'Supprime tous les filtres de la feuille active
    d'ouvrir les groupés
    pour ouvrir le mode plan :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'tout est fermé je clic sur 2 tout s'ouvre
        ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=2
    End Sub
    fermeture de refermer les croix
    pour fermer le mode plan :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub Cmd_Fermeture_Click()
    'tout est ouvert je clic sur 1 tout se ferme
        ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
    End Sub
    ou quand je ferme le fichier
    Là, il s'agit d'une macro évènementielle, il faut la mettre dans This workbook
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    'tout est ouvert je clic sur 1 tout se ferme
        ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
    End Sub

  3. #3
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut
    nos réponses se sont croisées...
    a vrai dire je ne comprends pourquoi tu veux faire un bouton pour faire ce que fait tout seul Excel, en cliquant soit sur 1 pour développer le plan et sur 2 pour le regrouper ?
    Cliquer sur un bouton ou sur un chiffre, c'est de l'esthétique ?

    Pour ce qui est des filtres à supprimer, tu peux aussi mettre le code dans une macro évènementielle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
        ActiveSheet.ShowAllData
    End Sub

  4. #4
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Avril 2015
    Messages : 38
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    Merci beaucoup pour votre aide.
    Les boutons 1, 2 ne s’occupent pas des filtres… j’aimerai faire tout en une seule fois. Qu’est-ce qu’une macro événementielle ? Ou dois-je ajouter le code ?
    Si vous avez fait les modif pouvez vous svp me mettre à dispo votre fichier ?

    merci

  5. #5
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut
    Une macro évènementielle est une macro qui se déclenche toute seule, lors d'un évènement.
    Ici ce que je vous propose, c'est à l'ouverture du classeur (évènement = Ouverture)
    D'une part on enlève tous les filtres
    et d'autre part on ouvre tous les plans

    Plus besoin du bouton ouvrir
    Ensuite, si l'utilisateur le veut, il peut toujour jouer avec les boutons 1 et 2 d'excel

    Enfin, sans bouton fermeture,
    la macro évènementielle qui se déclenche lors de la fermeture du fichier, elle va refermer l'ensemble des plans, s'ils sont restés ouverts.

  6. #6
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Avril 2015
    Messages : 38
    Points : 13
    Points
    13
    Par défaut
    Désolée mais où est ce classeur événement ???

  7. #7
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut
    Il n'y a pas de classeur évènement...
    Vous double-cliquez dans votre projet VB sur le module qui s'appelle ThisWorkBook
    Au dessus de l'espace de code, vous avez 2 listes déroulantes. A gauche, vous avez le choix entre Général et Workbook.
    Si vous choisissez workbook, dans la 2ème liste, vous obtenez tous les évènements possibles sur un classeur. (il existe d'autres évènements liés à la feuille, vous les trouverez sous la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Worksheet_Change(ByVal Target As Range)
    ici, c'est un évènement qui se produit suite à des modifications de cellule sur la feuille active (plage).

    Vous ne m'avez toujour pas dit si la suppression des boutons par des macros automatiques vous interresse...
    Si oui, collez celles-ci dans thisworkbook
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Workbook_Open()
        ActiveSheet.ShowAllData
    'tout est fermé je clic sur 2 tout s'ouvre
        ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=2
    End Sub
     
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    'tout est ouvert je clic sur 1 tout se ferme
        ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
    End Sud
    ouvrez et fermez votre fichier après avoir modifié les filtres et les plans et dites-nous si c'est Ok.
    Maintenant je vais m'absenter.
    A demain, bonne soirée

  8. #8
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Alimentation

    Informations forums :
    Inscription : Avril 2015
    Messages : 38
    Points : 13
    Points
    13
    Par défaut
    J'ai bien ajouté le code dans ThisWorkbook mais ça ne change rien.

  9. #9
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 939
    Points : 28 936
    Points
    28 936
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Un peu de lecture pour comprendre le principe des procédures événementielles
    Pour le classeur : Les évènements du module objet ThisWorkbook, dans Excel
    Pour les feuilles : Les évènements dans la feuille de calcul Excel

  10. #10
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 939
    Points : 28 936
    Points
    28 936
    Billets dans le blog
    53
    Par défaut
    Bonjour Mouftie,
    La solution proposée va immanquablement provoquée une erreur si la feuille active au moment de l'ouverture du classeur ne comporte pas de feuille filtrée.
    Pour savoir si une feuille contient un filtre, il faut utiliser la propriété AutoFilterMode qui renvoie TRUE ou FALSE
    Même si cette propriété renvoie TRUE, cela n'empêchera pas la méthode ShowAllData de renvoyer une erreur. En effet pour utiliser cette méthode il faut au moins qu'une colonne de la liste ait un filtre actif.
    Pour savoir si un filtre est actif, c'est la propriété FilterMode

    Exemple de code à placer dans la procédure événementielle Workbook_SheetActivate le module ThisWorkbook sii l'on souhaite désactiver les colonnes filtrées de la feuille active dès son activation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
     With Sh
      If .AutoFilterMode And .FilterMode Then .ShowAllData
     End With
    End Sub

  11. #11
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut
    Bonjour Serenay,
    Tu pourrais être un peu plus explicite
    ça ne change rien.
    Perso, j'ai supprimé le code sur la fermeture, il ne sert à rien puisque tu veux que de toute façon les plans soient développés à l'ouverture (il est donc inutile de les réduire avant la fermeture, ça prend du temps pour rien).
    J'ai ajouté une gestion d'erreur pour le code d'ouverture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Workbook_Open()
    With Worksheets("2015")
    On Error Resume Next
    If ActiveSheet.AutoFilterMode = True Then ActiveSheet.ShowAllData
     
    'tout est fermé je clic sur 2 tout s'ouvre
        ActiveSheet.Outline.ShowLevels RowLevels:=0, ColumnLevels:=2
    End With
    End Sub
    Pour moi, ça fonctionne, quelque soit la façon dont est fermé le fichier avec ou sans filtre avec ou sans plan, le fichier s'ouvre sans filtre et avec les plans développés

  12. #12
    Membre actif
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 631
    Points : 255
    Points
    255
    Par défaut
    Bonsoir Serenay et Philippe,

    Désolée Philippe, j'ai répondu ce matin sans avoir connaissance de tes messages qui sont arrivés pendant que j'étais connectée...
    Merci à toi pour les références pour apprendre et tes remarques


    Serenay,
    où en es-tu ? c'est ce que tu cherchais ? si oui, soit sympa, mais la discussion en résolu, si non reformule ta demande.
    Merci

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/06/2009, 15h34
  2. [CKEditor] [FCKEditor 1.3.1] Ajout d'un bouton pour ajouter une vidéo
    Par Papy_Guik dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 10/11/2008, 09h29
  3. Cliquez sur un bouton pour ajouter un Label
    Par rXpCH dans le forum NetBeans
    Réponses: 3
    Dernier message: 01/03/2008, 15h44
  4. Bouton pour ajouter un lien hypertexte dans un champ
    Par Fredo67 dans le forum VBA Access
    Réponses: 2
    Dernier message: 22/01/2008, 11h43
  5. Problème pour ajouter un texte automatique dans un zone de saisie de texte
    Par koKoTis dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 21/08/2006, 16h03

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