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 de TCD en VBA


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 10
    Points : 4
    Points
    4
    Par défaut Création de TCD en VBA
    Bonjour,

    Dans le cadre d'une création d'un TCD à partir d'une plage de données variable j'obtiens le message d'erreur suivant:
    "Erreur d'exécution 5, Argument ou appel de procédure incorrect"

    Voici le début de mon code qui génère cette erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Macro1()
     
    Feuil1.Range("A1:D" & [A65000].End(xlUp).Row).Name = "base"
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=_ 
    base).CreatePivotTable TableDestination:="Feuil2!R1C1", TableName:= _
    "Tableau croisé dynamique3", DefaultVersion:=xlPivotTableVersion14
    Merci de me donner un coup de main.

    Bien à vous.

  2. #2
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonsoir.

    Je suppose que tu as une erreur dès la première ligne. L'objet Range n'a pas de propriété Name.

    SI tu veux créer un nom défini, regarde la collections Names du classeur et sa méthode Add.

    Cordialement,

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Je pense avoir résolu le probleme de sélection et de nom de la plage, j'ai néanmoins le meme message d'erreur qui apparait.
    Possible que le nom de la plage soit "base" ne soit pas reconnu.

    Merci de m'aider à m'en dépétrer.

    By the way merci pour ton aide PGZ.

    Voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim base As Range
    Set base = Range("A1").CurrentRegion
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
    "base").CreatePivotTable TableDestination:="Feuil2!R1C1", TableName:= _
    "Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion14
    Nouveau code, seule la création du tableau coince (honnetement je n'en ai aucune idée).
    Merci de m'éclairer et de m'expliquer pourquoi.
    Cela vient peut etre du nom des feuilles ou du classeur (Feuil1 contenant la base de données, Feuil2 censée réceptionner le TCD, le nom du classeur:~0397118.csv)

    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
     
    Public Sub M()
     
    'créer un tableau
     
        Dim Feuille As String
        Feuille = ActiveSheet.Name
     
        Sheets(Feuille).Activate
     
        Dim DataR As Long
        Dim DataC As Integer
        Dim Source As String
     
        Range("A1").Select
        Range(Selection, Selection.End(xlDown)).Select
        Range(Selection, Selection.End(xlToRight)).Select
     
        DataR = Selection.CurrentRegion.Rows.Count
        DataC = Selection.CurrentRegion.Columns.Count
        Source = "feuill1!R1C1:R" & CStr(DataR) & "C" & CStr(DataC)
     
    'Partie qui merde
     
        ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        Source).CreatePivotTable TableDestination:="Feuil2!R1C1", TableName:= _
        "Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion14
    End Sub

  4. #4
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    Pourquoi, pour créer un TCD, utilises-tu la collections PivotCaches (qui n'a pas de méthode Add) plutôt que la collection Pivottables?

    PGZ

    Hello!

    Autre question : es-tu vraiment obligé de créer ton TCD par code plutôt que manuellement une seule fois?

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Pour ta premiere question, j'ai utilisé l'enregistreur de macro et j'ai modifié certaines lignes car je suis novice en la matière ( depuis quelques jours).
    J'ai remplacé PivotCaches par pivotTables mais rien n'y fait, erreur d'execution 438.

    Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ActiveWorkbook.PivotTables.Add(SourceType:=xlDatabase, SourceData:= _
        Source).CreatePivotTable TableDestination:="Feuil2!R1C1", TableName:= _
        "Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion14
    En ce qui cvoncerne ta deuxieme question j'effectue la meme tache tout les jours donc oui je prefere tout automatiser, de plus je considère cette macro comme un entrainement.

    Merci pour ton aide PGZ car la je commence à desepérer.

  6. #6
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Pardon d'insister, mais pourquoi tu refais le même TCD chaque jour?

    PGZ

    Bonsoir.

    Comme je te le disais, la méthode Add n'existe pas pour la collection PivotCaches.

    Si c'est pour le fun OK, mais dans la plupart des cas, ce n'est pas terrible de recréer les TCD.

    Dans ton dernier code, essaie en remplaçant "Add" par "Create".

    Ensuite, le nom que tu donnes peut poser pb. Si tu n'as aucun autre TCD, essaie un nom comme "MonTCD".

    Regarde cela et raconte...

    COrdialement,

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 10
    Points : 4
    Points
    4
    Par défaut vba
    Ainsi donc j'ai tenté de modifier add par create, PivotTables par PivotCaches en remplacant le nom du tableau par monTCD, en vain:

    "Erreur d'execution 5, Appel de procédure ou d'argument incorrect".

    What's next?

  8. #8
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    Peux-tu donner le dernier code que tu as essayé?

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Le voici:
    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
    Public Sub M()
     
    'créer un tableau 
     
        Dim Feuille As String
        Feuille = ActiveSheet.Name
     
        Sheets(Feuille).Activate
     
        Dim DataR As Long
        Dim DataC As Integer
        Dim Source As String
     
        Range("A1").Select
        Range(Selection, Selection.End(xlDown)).Select
        Range(Selection, Selection.End(xlToRight)).Select
     
        DataR = Selection.CurrentRegion.Rows.Count
        DataC = Selection.CurrentRegion.Columns.Count
        Source = "feuill1!R1C1:R" & CStr(DataR) & "C" & CStr(DataC)
     
     
        ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        Source).CreatePivotTable TableDestination:="Feuil2!R1C1", TableName:= _
        "MonTCD", DefaultVersion:=xlPivotTableVersion14
    Et j'ai une deuxième erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ActiveSheet.PivotTables("Mon TCD").AddDataField ActiveSheet. _
            PivotTables("Mon TCD").PivotFields("Volume"), _
            "Somme de Volume", xlSum

  10. #10
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    Pour créer le TCD, essaie cela
    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
    Public Sub M()
        Dim Feuille As String
        Dim DataR As Long
        Dim DataC As Integer
        Dim Source As String
        Dim Destination As String
        Dim oSh As Excel.Worksheet
        Dim oTCD As Excel.PivotTable
     
    'créer un tableau
     
    Set oSh = ActiveSheet
     
    DataR = oSh.Range("A1").End(xlDown).Row
    DataC = oSh.Range("A1").End(xlToRight).Column
    Source = "'" & oSh.Name & "'!R1C1:R" & DataR & "C" & DataC
    Destination = "Feuil2!R1C1"
     
    Debug.Print Source
     
    Set oTCD = ThisWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=Source).CreatePivotTable(Destination)
    Debug.Print "TCD créé : " & oTCD.Name
     
    Set oSh = Nothing
    Set oTCD = Nothing
     
    End Sub
    Cordialement,

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  11. #11
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Re,

    Peux-tu redonner ton code, là où tu en es, ainsi que le résultat du Debug.print, et les erreurs éventuelles?

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

Discussions similaires

  1. [XL-2013] Création de TCD via VBA
    Par Akhekhu dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 04/05/2015, 22h55
  2. [XL-2007] erreur 1004 pour la création d'un tcd via vba
    Par lps02 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/10/2012, 20h23
  3. [XL-2003] création d'un TCD en vba
    Par facteur dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/03/2012, 16h45
  4. E-XP : création TCD via VBA.
    Par gillou13 dans le forum Excel
    Réponses: 1
    Dernier message: 27/02/2009, 20h42
  5. Création de formulaire en VBA - Plantage
    Par Shansson dans le forum Access
    Réponses: 2
    Dernier message: 18/04/2006, 15h48

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