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 :

création tableau croisé dynamique


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 10
    Points : 5
    Points
    5
    Par défaut création tableau croisé dynamique
    Bonjour,

    Je voudrais créer un TCD via une macro malgré mes tentatives, je tombe sur tout un tas d'erreur. J'ai lu l'article:
    http://excel.developpez.com/faq/?pag...eationTCDMacro
    Je recopie le code, le modifie pour mon fichier et il me modifie soit une errreur 424 ou une erreur 1004.

    Y'a t'il des références du menu outils, spécifiques à installer? ou quelqu'un à une idée?

    Dans l'attente,

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 147
    Points
    20 147
    Par défaut
    bonjour

    Je viens de retester avec Excel2002 et 2007, ça fonctionne sans problème.



    et il me modifie soit une errreur 424 ou une erreur 1004
    Dans quel cas obtiens tu des messages d'erreur différents? sur quelle ligne?
    ou sont stockées tes données?
    Tu as bien des champs "Ville" et "CA" dans ton TCD?


    Y'a t'il des références du menu outils, spécifiques à installer?
    non



    michel

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 88
    Points : 46
    Points
    46
    Par défaut
    Bonjour à tous,

    je me permets de continuer ce post car j'ai le même problème. Je souhaite créer un TCD avec une macro.

    J'ai pris exemple sur le lien indiqué ci-dessus, mon code est le suivant:

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Sheets.Add
    ActiveSheet.Name = "TCD" 'feuille du tableau croisé
     
    'SourceData: Définit la source de données dans le TCD.
    '['Liste CDE'!A1].CurrentRegion.Address(, , xlR1C1, True) permet d'étendre
    'automatiquement la sélection de façon à y inclure toute la zone en cours
    'à partir de la cellule A1, dans la Feuil1.
     
    'TableDestination: Définit la position du TCD (cellule A3 dans la Feuil2).
     
    'TableName: Définit le nom du nouveau TCD. ("Mon TCD")
     
    ThisWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        [Liste CDE!A1].CurrentRegion.Address(, , xlR1C1, True)).CreatePivotTable _
        TableDestination:="TCD!R3C1", _
        TableName:="Mon TCD"
     
     
    'Mise en forme:
    With Sheets("TCD").PivotTables("Mon TCD")
        'Ajoute un champ de lignes nommé "Client".
        'Le nom du champ "Ville" doit préalablement exister comme entête de la
        'source de données.
        .AddFields RowFields:="Client"
        'Définit l'orientation du champ nommé "CA" en tant que Donnée.
        'le nom du champ "CA" doit préalablement exister comme entête
        'de la source de données.
    '    .PivotFields("Ville").Orientation = xlDataField
    End With
    J'obtiens l'erreur '424':
    Objet requis
    sur la ligne ThisWorkbook.PivotCaches.Add...

    Je précise que la feuille de mes données source est nommée "Liste CDE" et celle où je souhaite créer le TCD s'appelle "TCD".

    Merci d'avance pour vos réponses.

    Bonne journée.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Avril 2006
    Messages : 86
    Points : 60
    Points
    60
    Par défaut
    A tout hasard, essaie de mettre des apostrophes pour encadrer le "Liste CDE", comme ca : ['Liste CDE'!A1]... Ca changera peut être rien, mais j'ai déjà eu des problèmes de ce genre à cause de la syntaxe !

  5. #5
    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
    Je reprends ta ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ThisWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
    [Liste CDE!A1].CurrentRegion.Address(, , xlR1C1, True)).CreatePivotTable _
        TableDestination:="TCD!R3C1", _
        TableName:="Mon TCD"
    Après un underscore (_) tu dois avoir un retour à la ligne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ThisWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
     
    [Liste CDE!A1].CurrentRegion.Address(, , xlR1C1, True)).CreatePivotTable _
        TableDestination:="TCD!R3C1", _
        TableName:="Mon TCD"
    Mais peut-être n'est-ce qu'en recopiant le code
    A tout hasard...

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Avril 2006
    Messages : 86
    Points : 60
    Points
    60
    Par défaut
    Ah oui, je n'avais pas regardé plus haut, mais Ouskel'n'or a raison

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 88
    Points : 46
    Points
    46
    Par défaut
    J'ai essayé ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ThisWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        ['Liste CDE'!A1].CurrentRegion.Address(, , xlR1C1, True)).CreatePivotTable _
        TableDestination:="'TCD'!R3C1", _
        TableName:="Mon TCD"
    Et mainteant j'ai l'erreur '4':
    Argument ou appel de procédue incorrect
    sur la même ligne.

    Merci quand même mickdu90.

    Par contre, je viens d'essayer avec un classeur vierge sur l'exemple de base de la FAQ et ça fonctionne très bien. Je ne vois pas pourquoi ça ne marche pas sur mes données.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Avril 2006
    Messages : 86
    Points : 60
    Points
    60
    Par défaut
    Disons que ce n'est pas sur cette ligne là que je te disais de mettre des apostrophes, puisqu'il y a déjà les guillemets


    C'était un peu plus haut !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ThisWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _['Liste CDE'!A1].CurrentRegion.Address(, , xlR1C1, True)).CreatePivotTable _
        TableDestination:="TCD!R3C1", _
        TableName:="Mon TCD"

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 88
    Points : 46
    Points
    46
    Par défaut
    @ ouskel'n'or:

    Mais peut-être n'est-ce qu'en recopiant le code
    Effectivement j'ai bien un "vrai" retour à la ligne dans mon code

    @ mickdu90:

    désolé j'avais mal compris. Par contre j'ai toujours l'erreur '4' avec ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ThisWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
    ['Liste CDE'!A1].CurrentRegion.Address(, , xlR1C1, True)).CreatePivotTable _
        TableDestination:="TCD!R3C1", _
        TableName:="Mon TCD"
    ??

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations forums :
    Inscription : Avril 2006
    Messages : 86
    Points : 60
    Points
    60
    Par défaut
    D'accord, bon ben moi je vois pas du tout

  11. #11
    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
    Je viens de tester le code de la FAQ sans rien changer si ce n'est le nom des feuilles => Aucun pb.
    Assure-toi que tes noms de feuilles soient corrects.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 88
    Points : 46
    Points
    46
    Par défaut
    En fait, j'ai même essayé en changant les noms des feuilles comme dans la macro FAQ mais je crois que l'erreur ne vient pas de là car quand il ne trouve pas la feuille, j'ai l'erreur '424'
    Objet requis
    Et quand il la trouve, j'ai l'erreur '4':
    Argument ou appel de procédue incorrect
    Quand je copie ma feuille (celle des données) dans un autre classeur ça fonctionne.

    Je pense que mon classeur a une particularité différente des autres... mais quoi?

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 88
    Points : 46
    Points
    46
    Par défaut
    En fait, cela ne fonctionne qu'à la première exécution. Ce n'est pas gênant dans mon cas car ce code ne sera executé qu'une seule fois.

    Par contre, si je le relance sans fermer Excel (tous les classeurs), cela me met l'erreur '4'.

    Je marque "résolu" mais je n'ai pas trouvé la "vraie" solution.

    Merci en tout cas pour votre aide.

    A bientôt.

  14. #14
    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
    Si tcd et données sont sur des classeurs différents, il est normal que la syntaxe utilisée ne fonctionne pas. Je ne sais pas si c'est possible mais dans ce cas, le nom du classeur doit être précisé et dans ton code, il ne l'est pas.

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 88
    Points : 46
    Points
    46
    Par défaut
    C'est le cas mais j'ai passé en variable le classeur avec un choix GetOpenFileName, c'est vrai qu'au début cela aurait pu être la cause de l'erreur.

    Par contre l'erreur à la deuxième execution subsiste même avec ça.

  16. #16
    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
    Essaie d'instancier les classeurs et leurs feuilles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Set CL1 = Workbooks("Classeur1.xls")
    Set CL2 = Workbooks("Classeur2.xls")
    Set FL1 = CL1.worksheets("Feuil1")
    Set FL2 = CL2.worksheets("Feuil2")
    et d'utiliser leurs instances dans ton code
    Ce qui ne me plait pas bien c'est "Thisworkbook" alors que tu ajoutes le TCD dans l'autre classeur.
    Thisworkbook est le classeur contenant les macros.
    A toutes fins utiles et à tout hasard puisque je n'ai pas testé...

Discussions similaires

  1. SQL : Création d'un tableau croisé dynamique
    Par chaporon dans le forum SQL
    Réponses: 11
    Dernier message: 17/05/2017, 21h25
  2. [PowerShell] création tableau croisé dynamique
    Par bibouilles dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 28/11/2012, 17h04
  3. Réponses: 0
    Dernier message: 18/03/2010, 15h27
  4. Réponses: 1
    Dernier message: 18/03/2008, 16h05
  5. Réponses: 4
    Dernier message: 31/07/2007, 14h34

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