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 :

Macro pour mettre à jour tous les TCD


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 16
    Points : 8
    Points
    8
    Par défaut Macro pour mettre à jour tous les TCD
    Bonjour,
    une question toute bête mais pas je suis encore trop néophyte pour y répondre par moi même.

    Comment faire pour mettre à jour (en cliquant sur un bouton de commande), tous les tableaux croisés dynamique d'un classeur entier.

    A noter que le classeur en question peut avoir jusqu'à 50 bases de données qui alimentent autant de TCD.

    Anika

  2. #2
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 467
    Points : 493
    Points
    493
    Par défaut
    Bonjour
    pour Mettre à jour un TCD
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_Activate()
             ThisWorkbook.RefreshAll
    End Sub
    Abed_H

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    Je dois être trop novice, car je n'arrive pas à faire marcher cette macro.

    Une bonne âme pourrait-elle me préciser les choses?

    Anika

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Test()
    Dim TCD As PivotTable
         For Each TCD In Worksheets("Sheet1").PivotTables
              TCD.RefreshTable
         Next
    End Sub
    Comme je n'ai pas de TCD sous la main, peux-tu tester pour moi ?

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 467
    Points : 493
    Points
    493
    Par défaut
    Bonjour Anika
    Dans ce cas il faut ouvrir l'environnement de programmation (Alt-F11).
    Ensuite tu fais DblClic sur l'icone de la feuille Feuil1 Par Exemple puis coller ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_Activate()
             ThisWorkbook.RefreshAll
    End Sub
    Si vous ne connaissez pas l'editeur vba, je vous recommande la lecture
    de ceci
    http://silkyroad.developpez.com/VBA/DebuterMacros/
    Cordialement Abed_H

  6. #6
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 467
    Points : 493
    Points
    493
    Par défaut
    Bonjour ouskel'n'or
    Citation Envoyé par ouskel'n'or Voir le message
    Dans ce cas, F9 devrait fonctionner, non ?
    Je n'ai pas de TCD sous la main comme vous avez dis pour tester F9 et
    d'après l'aide Cette méthode (ThisWorkbook.RefreshAll) actualise toutes les plages de données externes et les rapports de tableau croisé dynamique du classeur spécifié.
    Bonne journée.

    Abed_H

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Test()
    Dim TCD As PivotTable
         For Each TCD In Worksheets("Sheet1").PivotTables
              TCD.RefreshTable
         Next
    End Sub
    Comme je n'ai pas de TCD sous la main, peux-tu tester pour moi ?
    Non je n'arrive pas à le faire marcher.
    Dois-je spécifier le nom de mon onglet à la place de sheet1?

    Merci pour toutes vos réponses

    Je connais le mécanisme de Alt+F11.
    La macro apparaît bien quand j'appuie sur Alt+F8

    Je la lance sans problème mais les TCD ne s'actualisent pas.

    Croyez vous que ça puisse avoir un rapport avec le nom des onglets?

    Ca doit vraiment être une erreur ridicule que je fais

    Anika

  8. #8
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 467
    Points : 493
    Points
    493
    Par défaut
    Citation Envoyé par kimai81 Voir le message
    Non je n'arrive pas à le faire marcher.
    Dois-je spécifier le nom de mon onglet à la place de sheet1?
    bien sûr, vous devrez spécifier le nom de ton onglet à la place de sheet1

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Tu devrais tester le code de Abed_H, il est préférable si tu veux mettre à jour tous les tcd de ton classeur.
    Nonne nuit

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par Abed_H Voir le message
    bien sûr, vous devrez spécifier le nom de ton onglet à la place de sheet1
    Ah ok merci je commence à y voir plus clair.
    Mais une dernière question, j'ai environ 50 onglets avec chacun un TCD, je fais comment? je nomme les 50 onglets dans le code?

  11. #11
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    467
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 467
    Points : 493
    Points
    493
    Par défaut
    Bonjour Anika
    peut être que tu dois boucler sur l'ensemble des feuilles, voici le code à tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Test()
    Dim TCD As PivotTable
      For i = 1 To Sheets.Count
         For Each TCD In Worksheets(i).PivotTables
              TCD.RefreshTable
         Next
     Next i
    End Sub
    Bonne soirée

    Abed_H

Discussions similaires

  1. Macro pour mettre à jour deux fichiers en 1 seul
    Par HINDI58 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/12/2012, 20h14
  2. [XL-2007] création d'une macro pour mettre à jour une BDD
    Par morguie31 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 17/11/2012, 16h10
  3. Réponses: 0
    Dernier message: 03/05/2011, 18h17
  4. Réponses: 11
    Dernier message: 04/04/2008, 15h09
  5. Réponses: 0
    Dernier message: 12/11/2007, 14h13

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