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 :

Problème rafraichissement TCD [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    278
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 278
    Points : 132
    Points
    132
    Par défaut Problème rafraichissement TCD
    Bonjour,

    J'utilise le bout de code suivant pour rafraîchir les TCD de mon classeur:

    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
    Option Explicit
    
    Sub Mise_En_Forme_KpiCx()
    
    Dim pvt As PivotTable
    Dim sh As Worksheet
    
    
    For Each sh In Worksheets
            If InStr(1, sh.Name, "Analyse") <> 0 And InStr(1, sh.Name, " COR") <> 0 Then
                For Each pvt In sh.PivotTables
                    pvt.RefreshTable
                    Nouveau_Nom_TCD = sh.Name & "_TCD"
                    pvt.Name = Nouveau_Nom_TCD
                Next pvt
            End If
        Next sh
    J'ai une erreur 1004 sur la ligne en gras. La méthode RefreshTable de la classe PivotTable a échoué.
    Je n'ai pas trouvé grand chose sur le net. Des idées?

    D'avance merci.

  2. #2
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 075
    Points : 9 855
    Points
    9 855
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    les feuilles ne sont pas protégées ?

    et pour éviter de boucler sur les autres classeurs éventuellement ouverts dans l'instance, il est préférable d'ajouter la filiation ThisWorkbook sur ta collection Worksheets.
    (j'ai un doute sur le fait que Worksheets va se rattacher à ActiveWorkbook ou à Application au global )

    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
    Option Explicit
     
    Sub Mise_En_Forme_KpiCx()
    Dim Pvt As PivotTable
    Dim Sh As Worksheet
     
    For Each Sh In ThisWorkbook.Worksheets
        If InStr(1, Sh.Name, "Analyse") <> 0 And InStr(1, Sh.Name, " COR") <> 0 Then
            For Each Pvt In Sh.PivotTables
                Pvt.RefreshTable
                Pvt.Name = Sh.Name & "_TCD"
            Next Pvt
        End If
    Next Sh
     
    End Sub

  3. #3
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    Salut Joe !

    Extraits de l'aide VBA de Worksheets :

    « Pour un objet Application, cette propriété renvoie une collection Sheets
    qui représente toutes les feuilles de calcul contenues dans le classeur actif. »

    « Lorsqu'elle est utilisée sans identificateur d'objet, cette propriété renvoie toutes les feuilles de calcul dans le classeur actif. »

    Donc Worksheets = Application.Worksheets = ActiveWorbook.Worksheets

    Ce que l'aide ne dit pas, si le code est placé dans le module ThisWorkbook,
    l'instruction Worksheets seule se réfère à lui et non pas au classeur actif !

    _____________________________________________________________________________________________________
    Je suis Charlie, Bardo, Sousse
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    278
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 278
    Points : 132
    Points
    132
    Par défaut
    Merci pour le début de réponse.

    Le classeur n'est pas protégé. J'avais trouvé une solution en ce sens sur un site anglophone, j'ai omis de le préciser.
    En revanche, le classeur possède des liaisons. Peut-être une piste? Ou une référence manquante?

    Pour l'affiliation, c'est rajouté. Mais cela ne résout malheureusement pas le problème.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    278
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 278
    Points : 132
    Points
    132
    Par défaut
    Bonjour,

    C'est résolu.
    En fait, j'ai essayé de mettre à jour le TCD manuellement et il y avait un problème dans les données qu'il utilise. En effet, précédemment dans le code, j'avais mis à jour la feuille contenant ces données et cette mise à jour avait supprimé les intitulés de colonnes. De fait, la mise à jour du TCD ne peut pas se faire vu qu'Excel ne trouve plus les données.

    Moralité: dans la mesure du possible, toujours penser à tester manuellement ce que l'on veut faire et qui ne fonctionne pas avec notre code VBA.

    Merci à tous pour votre aide.

    Bonne journée.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/06/2007, 16h50
  2. [PHP-JS] Problème rafraichissement de page
    Par iwf-fr dans le forum Langage
    Réponses: 5
    Dernier message: 07/05/2007, 18h46
  3. Réponses: 4
    Dernier message: 12/03/2007, 17h51
  4. [BCB 6]Problème Rafraichissement Table dans QReport
    Par arnaud_verlaine dans le forum C++Builder
    Réponses: 2
    Dernier message: 20/11/2006, 20h23
  5. Problème rafraichissement page
    Par guigui11 dans le forum ASP
    Réponses: 3
    Dernier message: 16/10/2006, 11h04

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