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 :

excel 2003 tableau croisé dynamique


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 17
    Par défaut excel 2003 tableau croisé dynamique
    Bonjour,
    J'ai un petit souci, je souhaiterai pouvoir automatisé la création d'un tableau croisé dynamique avec VB, j'ai enregistré une macro qui crée ce fameux tableau, et j'ai modifié les variable de cette macro afin de pouvoir l'utiliser dans plusieurs cas différents. Le code modifié donne ca:
    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
        i = 6
        While Not IsEmpty(Cells(i, 1))
        i = i + 1
        Wend
     
        ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="'" & Sheets(ComboPièce).Activate & "'!" & Range(Cells(6, 1), Cells(i - 1, 13))).CreatePivotTable TableDestination:="'[Chiffrage.xls]" & Sheets(ComboPièce).Activate & "'!" & Cells(6, 16), TableName:="Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion10
        ActiveWindow.ScrollColumn = 2
        ActiveWindow.ScrollColumn = 3
        ActiveWindow.ScrollColumn = 4
        ActiveWindow.ScrollColumn = 5
        ActiveWindow.ScrollColumn = 6
        ActiveWindow.SmallScroll Down:=-9
        With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Code")
            .Orientation = xlPageField
            .Position = 1
        End With
        ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Marge T."), "Nombre de Marge T.", xlSum
        ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Prix net HT"), "Nombre de Prix net HT", xlSum
        ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("PTHT"), "Nombre de PTHT", xlSum
        With ActiveSheet.PivotTables("Tableau croisé dynamique1").DataPivotField
            .Orientation = xlColumnField
            .Position = 1
        End With
        With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Type")
            .Orientation = xlRowField
            .Position = 1
        End With
        ActiveWorkbook.ShowPivotTableFieldList = False
    Lorsque je lance le programme, une erreur surgit de cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="'" & Sheets(ComboPièce).Activate & "'!" & Range(Cells(6, 1), Cells(i - 1, 13))).CreatePivotTable TableDestination:="'[Chiffrage.xls]" & Sheets(ComboPièce).Activate & "'!" & Cells(6, 16), TableName:="Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion10
    je gratte depuis hier dessus, et j'ai toujours pas compris l'erreur, si quelqu'un pouvait m'aider ça serait sympa, merci.

  2. #2
    Membre éprouvé
    Inscrit en
    Mai 2002
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 163
    Par défaut
    que vaut "ComboPièce"
    que vaut au moment de l'exécution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "'" & Sheets(ComboPièce).Activate & "'!" & Range(Cells(6, 1), Cells(i - 1, 13))
    (je parle de la chaine de caractère)

    décompose ta ligne dans la fenêtre de débbugage pour voir se qu'il ne comprend pas

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 17
    Par défaut
    Bonjour Bhaal76,
    "combopièce" est le nom d'une de mes combobox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "'" & Sheets(ComboPièce).Activate & "'!" & Range(Cells(6, 1), Cells(i - 1, 13))
    pour les signes ' et '! qui sont entre "" , je ne sais pas trop pourquoi, car comme je l'expliquai au départ j'ai enregistrer une macro pour créer un TCD et j'ai remplacé les variable qui peuvent changer comme la sélection de mes donnés pour le TCB, la case qui va accueillir le TCB et le nom de la feuille sur laquelle est pris cette sélection.

    Si tu as une meilleur idée que moi est quelle réponde a ma demande je suis preneur car je galère pas mal dessus

  4. #4
    Membre éprouvé
    Inscrit en
    Mai 2002
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 163
    Par défaut
    ton erreur n'est pas une incompatibilité de type ?

    parce qu'en simulant, je tombe sur cette erreur si je laisse un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="Feuil1!" & Range(Cells(5, 3), Cells(18, 5)))....
    erreur qui disparait si je ne laisse que le range dans la formule, donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=Range(Cells(5, 3), Cells(18, 5)))....
    Pour moi, ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets(ComboPièce).Activate
    devrai être avant ...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 17
    Par défaut
    je ne sais pas, voila le code créé par l'enregistreur de macro
    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
        ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="'Transfert 4 brins 8m'!R6C1:R500C13").CreatePivotTable TableDestination:="'[Chiffrage.xls]Transfert 4 brins 8m'!R6C16", TableName:="Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion10
        ActiveWindow.ScrollColumn = 2
        ActiveWindow.ScrollColumn = 3
        ActiveWindow.ScrollColumn = 4
        ActiveWindow.ScrollColumn = 5
        ActiveWindow.ScrollColumn = 6
        ActiveWindow.SmallScroll Down:=-9
        With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Code")
            .Orientation = xlPageField
            .Position = 1
        End With
        ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Marge T."), "Nombre de Marge T.", xlSum
        ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Prix net HT"), "Nombre de Prix net HT", xlSum
        ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("PTHT"), "Nombre de PTHT", xlSum
        With ActiveSheet.PivotTables("Tableau croisé dynamique1").DataPivotField
            .Orientation = xlColumnField
            .Position = 1
        End With
        With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Type")
            .Orientation = xlRowField
            .Position = 1
        End With
        ActiveWorkbook.ShowPivotTableFieldList = False
    la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="'Transfert 4 brins 8m'!R6C1:R500C13").CreatePivotTable TableDestination:="'[Chiffrage.xls]Transfert 4 brins 8m'!R6C16", TableName:="Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion10
    je l'ai remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="'" & Sheets(ComboPièce) & "'!" & Range(Cells(6, 1), Cells(i - 1, 13))).CreatePivotTable TableDestination:="'[Chiffrage.xls]" & Sheets(ComboPièce).Select & "'!" & Cells(6, 16), TableName:="Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion10
    je te met en couleur les variable que j'ai modifié

  6. #6
    Membre éprouvé
    Inscrit en
    Mai 2002
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 163
    Par défaut
    je pense que tu mélange les méthode de déclaration de plage de donné
    je m'explique,
    pour utilisé une plage de donnée, tu peux la déclarer comme ceci
    "Feuil1!R5C3:R18C5"

    ou comme ceci
    sheets(numéro de page).Range(Cells(5, 3), Cells(18, 5))

    (attention, le numéro de la première feuille est 1, pas 0)

    mais pas un mix des deux ...

    idem pour la partie destination, avec en plus le workbooks(num du classeur) devant
    style
    workbooks(num du classeur).sheets(numéro de page).Range(Cells(5, 3), Cells(18, 5))
    toute la question étant de savoir quel numéro de classeur est "Chiffrage.xls"



    essai çà
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=Sheets(ComboPièce).Range(Cells(6, 1), Cells(i - 1, 13))).CreatePivotTable TableDestination:=workbooks(x).Sheets(ComboPièce).Cells(6, 16), TableName:="Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion10
    corrige s'il manque des paranthèses

    un petit oubli (après un café, çà va mieux)
    pas besoin de connaitre le numéro du classeur dans la collection de classeur ouvert,
    Workbooks("Chiffrage.xls").sheets(numéro de page ou "nom de page").Range(Cells(5, 3), Cells(18, 5)) devrai faire l'affaire

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/05/2008, 09h30
  2. Excel 2007, Tableau Croisé Dynamique
    Par phenixnerull dans le forum Excel
    Réponses: 5
    Dernier message: 22/06/2007, 16h22
  3. Pb de chemin en VBA excel sur tableau croisé dynamique
    Par hiline6 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/02/2007, 14h23
  4. [Jexcel] fichier Excel avec tableau croisé dynamique
    Par jeanmarc67 dans le forum Documents
    Réponses: 2
    Dernier message: 16/02/2007, 16h51
  5. Problème avec Excel et tableau croisé dynamique
    Par françois62 dans le forum VBScript
    Réponses: 9
    Dernier message: 19/11/2006, 22h17

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