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 via VBA [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 16
    Par défaut Création de TCD via VBA
    Bonjour, j'ai actuellement un souci qui me bloque dans un projet, et que j'aimerais donc voir résolu au plus vite

    Il s'agit de la création d'un TCD dans VBA. J'ai regardé ici mais le code ne fonctionnait pas, n'ayant pas réussi à l'adapter pour mes données.
    Ne connaissant pas la syntaxe relative aux TCD, j'ai enregistré une macro qui m'a donné ceci :

    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
    Sub Macro6()
     
        Range("A7").Select
        Range(Selection, Selection.End(xlToRight)).Select
        Range(Selection, Selection.End(xlDown)).Select
     
        ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            "Manips-Destinations Aériennes!R6C1:R240C10", Version:=xlPivotTableVersion15) _
            .CreatePivotTable TableDestination:="GES-Destination par pays!R5C2", _
            TableName:="Tableau croisé dynamique4", DefaultVersion:= _
            xlPivotTableVersion15
     
        Sheets("GES-Destination par pays").Select
        Cells(5, 2).Select
     
    End Sub
    Seulement lors de sa ré-exécution, elle ne fonctionne pas, malgré que j'ai effacé le TCD précédemment créé (pour ne pas avoir de nom en doublon).

    Mes questions :
    => Après quelques expérimentations de code, j'ai eu différentes erreurs : Celle qui intervient lors de l'exécution du code ci-dessus est la n°5 : "Argument ou appel de procédure incorrect".
    Si je remplace PivotCaches.Create par PivotCaches.Add, j'obtiens l'erreur : "Erreur de compilation, argument nommé introuvable" avec "Version:=" surligné.
    Comment faire pour que ma création de TCD s'effectue correctement ? Je ne pense pas que ce soit une procédure très compliquée pourtant, malheureusement je n'arrive pas à comprendre les erreurs.

    => Les 3 premières lignes de code sélectionnent une plage de cellules variables à partir de A7 (qui restera fixe), mais l'argument "SourceData" renvoie à la plage de cellules sélectionnées. Si la plage change de taille, la valeur de SourceData va-t-elle changer également automatiquement ?

    Merci d'avance ! Je pense (j'espère !) qu'une fois la syntaxe correcte et comprise pour ce TCD, je serais en mesure de l'adapter pour les autres TCD que je dois réaliser.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Enthousiaste Excel
    Inscrit en
    Avril 2015
    Messages
    155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enthousiaste Excel

    Informations forums :
    Inscription : Avril 2015
    Messages : 155
    Par défaut
    Bonjour,

    1. Je ne sais pas ce qui plante (sans le fichier), mais à priori, si tu enregistres ta macro avec l'enregistreur et que tu ne peux PAS la ré exécuter, c'est problématique, et pas normal du tout.

    La seule chose qui pourrait expliquer cela, c'est le fait que tu tentes de récréer un tableau ("Tableau croisé dynamique4") et que ce TCD existe en fait déjà, et il ne peut pas écraser, faudrait juste l'effacer avant de relancer ta macro

    2. La partie "sourcedata" de ta macro est l'emplacement des données sources. Là, dans ta macro, la source n'est pas la sélection
    Tu peux ajouter au début
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim Ma_plage as range
        Range("A7").Select
        Range(Selection, Selection.End(xlToRight)).Select
     set Ma_Plage = Range(Selection, Selection.End(xlDown)).Select


    et remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Manips-Destinations Aériennes!R6C1:R240C10"
    par Ma_Plage

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 16
    Par défaut
    En effet donc dans la macro la source était uniquement la plage de données sélectionnée, mais pas considérée comme étant variable donc merci du coup de main pour le Ma_Plage.
    Par contre lors du pas à pas, au niveau de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Set My_range = Range(Selection, Selection.End(xlDown)).Select
    , j'ai une erreur 424 "Objet requis".

    J'avais pensé au doublon, donc j'ai bien supprimé le tableau créé par la macro avant de la ré-exécuter, et c'est là qu'est apparu l'erreur. J'ai bien tenté de le renommer "My TCD" mais même erreur.
    Si besoin du fichier je peux en mettre une copie partielle à disposition.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 16
    Par défaut
    Petit double message désolé mais j'ai affiné la sélection de mes données, puisque seul le nombre de lignes est variable, j'ai donc ceci et plus d'erreur 424. par contre j'ai toujours l'erreur numéro 5 lors de l'exécution.
    Ma question 2 est résolue merci, reste le plus important, le code correct !

    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 Macro6()
     
    Worksheets("Manips-Destinations Aériennes").Activate
     
    Dim last_row As Integer
    last_row = Cells(Rows.Count, 1).End(xlUp).Row
     
    Dim My_range As Range
     Set My_range = Range(Cells(7, 1), Cells(last_row, 10))
     
        ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            My_range, Version:=xlPivotTableVersion15) _
            .CreatePivotTable TableDestination:="GES-Destination par pays!R5C2", _
            TableName:="Mon TCD", DefaultVersion:= _
            xlPivotTableVersion15
        Sheets("GES-Destination par pays").Select
        Cells(5, 2).Select
     
    End Sub

  5. #5
    Membre expérimenté
    Homme Profil pro
    Enthousiaste Excel
    Inscrit en
    Avril 2015
    Messages
    155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enthousiaste Excel

    Informations forums :
    Inscription : Avril 2015
    Messages : 155
    Par défaut
    Tu es sur quelle version d'excel. Ca serait pas une antérieur à 2007 ?

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 16
    Par défaut
    Non, je travaille sur Excel 2013.
    L'erreur d'exécution 5 arrive lorsque le programme passe dans la partie "Création" du TCD, dans la ligne de code coupée en 4

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

Discussions similaires

  1. [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
  2. [AC-2007] Utiliser une variable comme alias lors de la création de table via Vba
    Par Tipstitou dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/09/2010, 10h29
  3. E-XP : création TCD via VBA.
    Par gillou13 dans le forum Excel
    Réponses: 1
    Dernier message: 27/02/2009, 20h42
  4. Mise à jour de la source d'un TCD via VBA
    Par alex830001 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 22/01/2009, 10h41
  5. Création de controles via VBA
    Par galinette dans le forum VBA Access
    Réponses: 1
    Dernier message: 12/10/2007, 18h10

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