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 :

Maccro génération filtre automatique à l'ouverture du fichier


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2009
    Messages : 171
    Points : 172
    Points
    172
    Par défaut Maccro génération filtre automatique à l'ouverture du fichier
    Bonjour à tous,

    J'utilise un ETL pour générer des fichiers excel contenant des informations provenant d'une base de données.

    J'aurais besoin d'appliquer des filtres automatiques sur chaque titre de colonne.

    Pour cela, avec l'ETL, je copie un template contenant le nom de mes colonnes avec les filtres déjà en place. Mon problème est qu'en faisant ca, le nouveau fichier généré possède bien les fleches mais celle ci ne sont pas cliquable.

    Je pensais donc, dans ma template, créer une maccro qui s'exécuterait à l'ouverture du fichier et qui permettrait d'activer les filtres automatiques.

    Etant vraiment débutant en VBA, je ne sais pas si cela est possible ni si c'est une bonne solution... Et encore moins par ou commencer :s. Des idées ?

    Merci d'avance !

  2. #2
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    bonjour Bouga74,

    oui, c'est possible, voici un exemple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Workbook_Open()
    With Sheets("Feuil1")
    'vérifier si le filtre est activer, si oui le desactive
     If .AutoFilterMode Then .Range("A1").AutoFilter
     'remet le fitre avec critère
    .Range("A1").AutoFilter
    .Range("A1").AutoFilter Field:=1, Criteria1:="1"
    End With
    End Sub

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut sabzzz et le forum
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     If .AutoFilterMode Then .Range("A1").AutoFilter
    Je préfèreEnlever l'autofiltre, sans tester son existence, qu'il soit présent ou non, la feuille n'a plus de filtre auto.
    A+

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2009
    Messages : 171
    Points : 172
    Points
    172
    Par défaut
    Super, merci à tous les 2, la macro fonctionne très bien !

    Juste parce que je suis vraiment débutant :s... Comment faire pour qu'elle s'exécute à l'ouverture du fichier ?
    Je suis obligé de passer par l'execution manuelle pour l'instant.

    Edit : Après une petite recherche, j'avais mis le code dans Module alors qu'il suffit de le mettre dans This WorkBook.

    Ca marche niquel Merci beaucoup !!

    Une dernière question en fait !

    Est ce que par tout hasard il y aurait possibilité d'exécuter la macro à la première ouverture du fichier, et encore mieux, d'enregistrer le document automatiquement pour ne pas que les modifs qu'elle apporte soit perdu ?

    Merci !

  5. #5
    Membre éclairé Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Points : 879
    Points
    879
    Par défaut
    bonjour Bouga74,

    ajoute cette commande à la fin de la macro Workbook_Open


  6. #6
    Membre habitué
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2009
    Messages : 171
    Points : 172
    Points
    172
    Par défaut
    Super Merci !

    Je met mon code final s'il peut servir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Workbook_Open()
        With Sheets("Erreurs")
            If .AutoFilterMode = False Then
                .Range("A1").AutoFilter
                .Range("A1").AutoFilter Field:=1
                i = 1
                While Cells(1, i) <> ""
                    Cells(1, i).ColumnWidth = Cells(1, i).ColumnWidth + 5
                    i = i + 1
                Wend
                ActiveWorkbook.Save
            End If
        End With
    End Sub
    Je suis repasser sur l'option If ... Then pour n'executer le code que si les filtres ne sont pas déjà présents. Comme ca j'execute qu'une seul fois la macro.

    Merci pour l'aide !

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut Bouga74 et le forum
    Ta macro me dérange un peu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                While Cells(1, i) <> ""
                    Cells(1, i).ColumnWidth = Cells(1, i).ColumnWidth + 5
                    i = i + 1
                Wend
    Je ne sais pas ce que tu compte faire avec ce code, mais tel que je le lis, à chaque fois que tu n'auras pas de filtre auto actif à l'ouverture, tu augmentes de 5 la largeur de tes colonnes non vides en ligne 1. Comme tu commences par défaut à 10, ça te laisse sans doute de la marge, mais tu vas finir par n'avoir qu'une partie de ta colonne de visible .
    A+

  8. #8
    Membre habitué
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2009
    Messages : 171
    Points : 172
    Points
    172
    Par défaut
    Salut !

    Alors en fait avec mon ETL j'ai la possibilité de cocher une option "taille auto". Cette option permet d'adapter la largeur de la colonne automatiquement en fonction de la cellule la plus large de celle ci.
    En général, la cellule la plus large est celle contenant le titre de la colonne.
    Avec l'ajout des filtre, il me manque quasiment a chaque fois la fin du titre de la colonne.
    Donc j'ajoute 5 de manière a avoir mes titres en entier .

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut Bouga74 et le forum
    Évite de communiquer par abréviation : ceux qui lisent n'ont pas forcément les mêmes traductions que toi.

    ça ne sert à rien de retoucher à la largeur : fixe-la manuellement une bonne fois pour toutes.
    A+

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

Discussions similaires

  1. Comment lancer une macro automatique lors d'ouverture de fichier EXcel
    Par yassinefeki dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 16/05/2010, 23h48
  2. Réponses: 6
    Dernier message: 09/10/2009, 15h54
  3. Génération automatique de noms de fichiers
    Par 84mickael dans le forum Langage
    Réponses: 7
    Dernier message: 02/05/2008, 09h41
  4. Réponses: 1
    Dernier message: 25/07/2007, 12h15
  5. [XHTML] Filtre automatique pour la selection d'un fichier
    Par nasix dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 16/05/2007, 19h11

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