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 :

[E-07] Tableau croisé dynamique - Erreur n°5


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 6
    Points : 3
    Points
    3
    Par défaut [E-07] Tableau croisé dynamique - Erreur n°5
    Bonjour à tous. (Et bonne année)

    J'ai un petit souci lors de la création d'un tableau croisé dynamique à l'aide d'une macro.
    Comme vous pouvez le voir ci-dessous, j'attaque une base Oracle pour remplir mes champs avec Ms Query.

    En exécutant l'assistant de macro, le tableau se crée, les données sont correctement intégrées au tableau. J'arrête l'enregistrement, et là, impossible d'exécuter la requête de nouveau.
    En feuilletant les forums, j'ai vu pas mal de topic évoquant cette erreur, sans résultat.
    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
     
    Sub Macro8()
     
        Workbooks("MermozNew2.xlsm").Connections.Add _
            "Lancer la requête à partir de Tcpos", "", _
            "ODBC;DRIVER={Microsoft ODBC for Oracle};UID=base;;", Array( _
            "SELECT TILLS.DESCRIPTION, PROFIT_CENTERS.DESCRIPTION, OPERATORS.DESCRIPTION, SHOPS.DESCRIPTION, TRANSACTIONS.TOTAL_AMOUNT" & Chr(13) & "" & Chr(10) & "FROM base.OPERATORS OPERATORS, BASE.PROFIT_CENTERS PROFIT_CENTERS, base.SHOPS" _
            , " SHOPS, base.TILLS TILLS, base.trANSACTIONS TRANSACTIONS" & Chr(13) & "" & Chr(10) & "WHERE SHOPS.ID = TRANSACTIONS.SHOP_ID AND TRANSACTIONS.TILL_ID = TILLS.ID AND TRANSACTIONS.PROFIT_CENTER_ID = PROFIT_CENTERS.ID AND TRANSACTIO" _
            , "NS.OPERATOR_ID = OPERATORS.ID"), 2
     
       ActiveWorkbook.PivotCaches.Create(SourceType:=xlExternal, SourceData:= _
            ActiveWorkbook.Connections("Lancer la requête à partir de Tcpos13"), Version _
            :=xlPivotTableVersion12).CreatePivotTable TableDestination:="Sheets('Feuil2')", _
            TableName:="Tableau croisé dynamique6", DefaultVersion:= _
            xlPivotTableVersion12
     
        Cells(7, 2).Select
        ActiveWorkbook.ShowPivotTableFieldList = True
        ActiveSheet.PivotTables("Tableau croisé dynamique6").AddDataField ActiveSheet. _
            PivotTables("Tableau croisé dynamique6").PivotFields("TOTAL_AMOUNT"), _
            "Somme de TOTAL_AMOUNT", xlSum
     
    ...Code...
     
    End Sub
    En executant pas à pas, l'erreur pointe sur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlExternal, SourceData:=  ActiveWorkbook.Connections("Lancer la requête à partir de Tcpos13"), Version _
            :=xlPivotTableVersion12).CreatePivotTable TableDestination:="Sheets('Feuil2')", _
            TableName:="Tableau croisé dynamique6", DefaultVersion:= _
            xlPivotTableVersion12
    avec un "Erreur d'exécution '5' : Argument ou appel de procédure incorrect."
    En simplifiant le code, l'erreur viendrait de la définition de "Table Destination" ou de "PivotTableVersion".

    J'ai procédé un peu différemment, toujours avec Ms Query, le résultat étant le même.

    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
     
    Sub créationTCD()
     
    Dim PTCache As PivotCache
    Dim PT As PivotTable
     
    Sheets("Feuil2").Select
     
    ...Code...
     
       Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlExternal, SourceData:=ActiveWorkbook.Connections("Lancer la requête à partir de Tcpos"))
        Set PT = PTCache.CreatePivotTable(TableDestination:="Sheets('Feuil2').Cells(3,3)")
     
        With PT
            .PivotFields("DESCRIPTION1").Orientation = xlRowField
            .Position = 1
     
    ...Code...
    End Sub
    Cette fois, l'erreur pointe sur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set PT = PTCache.CreatePivotTable(TableDestination:="Sheets('Feuil2').Cells(3,3)")
    J'utilise Excel 2007, a priori, toutes les références nécessaires sont activées.

    Quelqu'un aurait-il une idée?

    En vous remerciant d'avance :s

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    je ne suis pas sur, mais je pense que l'erreur peut venir du fait que tu baptise ton tableau de façon automatique avec le meme nom. tu dois lui donner un nom de bapteme et verifier (ou effacer) le precedent.
    si ça peut t'aider, voici comment je m'y prenais, mais il y a longtemps que je n'ais pas utilisé les tcd, et si ce n'est pas ça, je ne peux guere t'aider
    'création du TCD
    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
    Set alfa = cible.Sheets(2)
    Set oméga = cible.Sheets(1)
    tablosource = alfa.[A1].CurrentRegion.Address(, , xlR1C1, True)
    oméga.Cells.Clear
    ThisWorkbook.PivotCaches.Add(SourceType:=xlDatabase, _
    SourceData:=tablosource).CreatePivotTable _
        TableDestination:="synthèse!R3C1", _
        TableName:="prénom"
        ActiveWorkbook.ShowPivotTableFieldList = True
    With oméga.PivotTables("prénom").PivotFields("Prénoms")
            .Orientation = xlRowField
            .Position = 1
        End With
        oméga.PivotTables("prénom").AddDataField oméga. _
            PivotTables("prénom").PivotFields("Nombre"), _
            "par prénoms", xlSum
        Application.CommandBars("PivotTable").Visible = False
        ActiveWorkbook.ShowPivotTableFieldList = False

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Bonjour alsimbad,

    et désolé du temps de réponse.

    Alors effectivement, le problème venait apparemment des propriétés "Tablename" et "TableDestination".
    En supprimant le TCD existant en début de macro et en désignant un nom et une destination fixe et propre à mon classeur, l'erreur à disparu, et la macro s'exécute très bien.

    Tu as encore de bons restes, merci =)

    Je me permets d'éditer ma réponse car je suis confronté maintenant à un autre problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     Workbooks("MermozNew2.xlsm").Connections.Add _
            "Lancer la requête à partir de Tcpos13", "", _
            "ODBC;DRIVER={Microsoft ODBC for Oracle};DSN=Tcpos;UID=base;PWD=Phoenix;", Array( "SELECT TILLS.DESCRIPTION, _
    PROFIT_CENTERS.DESCRIPTION, OPERATORS.DESCRIPTION, SHOPS.DESCRIPTION, TRANSACTIONS.TOTAL_AMOUNT" & Chr(13) & "" & Chr(10) & _
    "FROM base.OPERATORS OPERATORS, BASE.PROFIT_CENTERS PROFIT_CENTERS, base.SHOPS" , " SHOPS, base.TILLS TILLS, base.trANSACTIONS _
    TRANSACTIONS" & Chr(13) & "" & Chr(10) & "WHERE SHOPS.ID = TRANSACTIONS.SHOP_ID AND TRANSACTIONS.TILL_ID = TILLS.ID AND TRANSACTIONS.PROFIT_CENTER_ID = _
    PROFIT_CENTERS.ID AND TRANSACTIONS.OPERATOR_ID = OPERATORS.ID"), 2
     
     
       ActiveWorkbook.PivotCaches.Create(SourceType:=xlExternal, SourceData:= _
    ActiveWorkbook.Connections("Lancer la requête à partir de Tcpos13"), Version:=xlPivotTableVersion12).CreatePivotTable _
    TableDestination:="TDC!R3C1", tablename:="Test", DefaultVersion:= _
            xlPivotTableVersion12
    En exécutant pas à pas, j'ai constaté qu'il fallait saisir de nouveau sous Excel les références de ma connexion (dsn, user et password) après le "ActiveWorkbook.PivotCaches.Create", et j'aimerai introduire directement ces arguments dans cette propriété pour éviter une nouvelle saisie lors de l'utilisation.

    Quelqu'un aurait-il une idée?

    Bon sinon, après quelques tests, je trouve ça pas vraiment intuitif, l'utilisation de Msquery avec les Tableaux croisés dynamiques quand les données proviennent d'une bdd...

    J'ai l'impression qu'il se fiche à moitié de ma requête, et se contente d'afficher les champs dans mon tableau...
    Lorsque j'ajoute des contraintes dans ma requête, que ce soit une date ou une valeur fixe, le résultat est le même à la fin de la macro --'...

Discussions similaires

  1. [AC-2010] Erreur en mode Tableau Croisé dynamique
    Par jloois dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 21/01/2016, 10h47
  2. [XL-2013] Générer un tableau croisé dynamique : erreur de propriété PivotFields
    Par Froth dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/01/2015, 13h57
  3. Erreur 1004, VBA et Tableau Croisé Dynamique
    Par manu.68 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 25/02/2012, 08h59
  4. Réponses: 7
    Dernier message: 27/01/2011, 09h48
  5. Réponses: 0
    Dernier message: 13/02/2008, 12h11

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