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 :

filtrer dans une table pivot les évènements du jour


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut filtrer dans une table pivot les évènements du jour
    Bonjour,
    Suite à la discussion :
    http://www.developpez.net/forums/d13...vot-table-vba/
    Citation Envoyé par fernandjodoigne Voir le message
    merci pour cette réponse rapide qui fonctionne bien lorsque je l'applique à un pivot table basé sur un fichier xls. Par contre, lorsque je l'applique à un pivot table basé sur un cube "analysis services", cela ne fonctionne plus:



    .. et la phrase suivante se met en surbrillance:

    ActiveSheet.PivotTables("PivotTable2").PivotFields("BPA").PivotItems(str).Visible = False

    ??? Merci pour votre aide!


    FS

    j'ai enregistré une macro pour filtrer dans une table pivot les évènements du jour. lorsqu'il n'y a pas encore eut d'évènement je reçoit ce code d'erreur.
    j'aimerais, plutôt que d'avoir cette erreur, avoir un msgbox m'avisant qu'il n'y a pas encore eut d'évènement et retourner à la feuille1. mais je ne sais pas comment faire. pouvez-vous m'aider svp?

    voici mes codes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Autorisation_sur_bureau()
    '
    ' Autorisation_sur_bureau Macro
    '
     
    '
        Sheets("Feuil2").Select
        ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("Date"). _
            ClearAllFilters
        ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotCache.Refresh
        ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("Date"). _
            CurrentPage = Date
    End Sub
    Merci pour votre aide
    Madion

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Une solution consisterait à décompter les évènements du jour dans votre feuille de données et de lancer le rafraichissement du TCD si ce nombre est > 0 et à quitter la macro sinon.

    Pour cela il suffirait d'ajouter un test dans votre macro Autorisation sur bureau comme dans le code joint plus bas.

    Dans la capture d'écran, la cellule B6 correspond à la zone nommée NombreEvenementsDuJour et contient la formule NB.SI.



    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
    Sub Autorisation_sur_bureau()
    '
    ' Autorisation_sur_bureau Macro
    '
     
        If Sheets("Feuil1").Range("NombreEvenementsDuJour") = 0 Then
                MsgBox ("Aucun événement aujourd'hui !")
                Exit Sub
        End If
     
        Sheets("Feuil2").Activate
        With ActiveSheet.PivotTables("Tableau croisé dynamique2")
                .PivotFields("Date").ClearAllFilters
                .PivotCache.Refresh
                .PivotFields("Date").CurrentPage = Date
        End With
     
    End Sub

    Cordialement.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour Eric,
    Merci pour ta réponse rapide.
    la solution que tu me propose est bien pensée, mais j'aurais préféré que la recherche se fasse sans intervention autre que celle de lancer ma macro et donc que la recherche se fasse directement en VBA.
    Encore merci

    Madion

  4. #4
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 421
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 421
    Points : 16 265
    Points
    16 265
    Par défaut
    Bonjour

    Il suffit de tester par VBA que la date est présente dans la source soit par une recherche soit par une boucle...
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour Chris,
    Merci, c'est la solution que je recherche. seulement je suis novice dans ce domaine et je ne parviens pas à trouver comment faire cette recherche ou cette boucle.
    Madion

  6. #6
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 421
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 421
    Points : 16 265
    Points
    16 265
    Par défaut
    Bonjour

    Par exemple si la colonne date est B dans la source
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Set x = Worksheets("Factures").Range("B:B").Find(What:=Date, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
            :=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
            False, SearchFormat:=False)
        If x Is Nothing Then
            MsgBox "Pas de ..."
        Else
            Code de modif du TCD
        End If
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup, ça fonctionne très bien
    Madion

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/07/2014, 15h28
  2. Récupérer des noms de fichier dans une table pour les placer en masque du tfilelist
    Par charliplanete dans le forum Développement de jobs
    Réponses: 11
    Dernier message: 24/08/2011, 17h16
  3. Réponses: 2
    Dernier message: 06/05/2010, 15h55
  4. inserrtion des données dans une table via les servlets
    Par melleweb dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 28/11/2007, 10h53
  5. Réponses: 12
    Dernier message: 06/08/2007, 07h46

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