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 :

Mise à jour de la source d'un TCD via VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 130
    Points : 85
    Points
    85
    Par défaut Mise à jour de la source d'un TCD via VBA
    Bonjour,

    la longueur du tableau qui sert de source à mon TCD varie suite à l'execution d'une macro.

    J'ai dans la variable derli le numero de la derniere ligne du tableau.

    Dans le code suivant, je cherche un moyen de remplacer 1150 par derli:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:= _
            "ZC615!R1C1:R1150C19"
        ActiveWorkbook.ShowPivotTableFieldList = True
    Je ne sais pas comment faire cela. Merci pour votre aide.

  2. #2
    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 543
    Points
    15 543
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Plage = Range("A1:N6").Address(ReferenceStyle:=xlR1C1, _
                RowAbsolute:=True, ColumnAbsolute:=True)
        ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:=Plage
        ActiveWorkbook.ShowPivotTableFieldList = True
    Tu mets la bonne plage à la place de Range("A1:N6")

    NB - Tu peux inclure le nom de la feuille

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 130
    Points : 85
    Points
    85
    Par défaut
    voila le code que j'ai fais à partir de ce que tu m'as dit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sheets("filtre commerces").Select
    Plage = Range(Cells(1, 1), Cells(derli, 19)).Address(ReferenceStyle:=xlR1C1, _
                RowAbsolute:=True, ColumnAbsolute:=True)
     
        ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:=Plage
        ActiveWorkbook.ShowPivotTableFieldList = True
    J'ai une erreur sur cette ligne (1004 : Le nom du champs de tcd n'est pas valide...etc):
    ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:=Plage


    Je n'ai pas déclaré la variable Plage, quel type dois je lui attribuer?
    Plage prend pourtant bien comme valeur: "R1C1:R1403C19" (ds cet exemple le tableau fesait 1403 lignes de long)

  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 543
    Points
    15 543
    Par défaut
    Si tu exécutes ta macro au pas à pas (F8) qu'as-tu dans Plage ?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 130
    Points : 85
    Points
    85
    Par défaut
    J'ai : "R1C1:R1403C19"

  6. #6
    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 543
    Points
    15 543
    Par défaut
    Tu sélectionnes la feuille "filtre commerces" et fais référence à cette feuille pour le range. Or tu places le tcd sur activesheet.
    Tu dois préciser la feuille source dans la plage et la feuille destination du TCD.
    La définition de la plage n'est qu'accessoire puisque tu peux utiliser les deux syntaxes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Plage = NomFeuilleSource & "!" & Range(Cells(1, 1), Cells(derli, 19)).Address(ReferenceStyle:=xlR1C1, _
                RowAbsolute:=True, ColumnAbsolute:=True)
    Un coup d'oeil dans la FAQ (adresse dans ma signature) t'en apprendra plus que moi sur les différents cas de figures qui peuvent se présenter.
    Tapes "TCD" en recherche
    Bonne lecture

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2008
    Messages : 130
    Points : 85
    Points
    85
    Par défaut
    Je suis arrivé à quelque chose qui fonctionne comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Plage = "ZC615" & "!" & Range(Cells(1, 1), Cells(derli2, 19)).Address(ReferenceStyle:=xlR1C1, _
                RowAbsolute:=True, ColumnAbsolute:=True)
     
    Sheets("Filtre par commerces").Activate
     
     ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:=Plage, TableName:="Tableau croisé dynamique2"
        ActiveWorkbook.ShowPivotTableFieldList = True
    Merci pour ton aide

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

Discussions similaires

  1. Comment déclencher un job après mise à jour d'une source externe
    Par ryosakasaki70 dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 09/10/2012, 23h51
  2. DataGridView : Mise à jour de la source de données
    Par Zernaf dans le forum ASP.NET
    Réponses: 1
    Dernier message: 25/01/2012, 13h57
  3. [GIT] Mise à jour de la source suite à un Git Fork
    Par llaffont dans le forum Linux
    Réponses: 1
    Dernier message: 29/11/2011, 08h33
  4. Réponses: 1
    Dernier message: 26/03/2009, 16h48
  5. [Binding] Comment dissocier la validation et la mise à jour de la source ?
    Par tomlev dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 22/09/2008, 01h49

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