Croisé dynamque avec une macro

Signaler
Messages postés
5
Date d'inscription
lundi 3 septembre 2007
Statut
Membre
Dernière intervention
3 septembre 2007
-
Messages postés
443
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
1 mars 2011
-
Bonjour à tous,
j'essai de créer sur excel une application. Au cours de cette application une macro doit faire une tableau croisé dynamique.
Je crée ma macro avec la fonction enregistrement, puis lorsque j'essai de la relancer, j'ai ce message d'erreur :

"Impossible de lire la propriété PivotTables de la classe Worksheet"
voici les lignes de code ou il y aurait un problème : 
   
"   Sheets("Data").Select
    Cells.Select
    Range("A694").Activate
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        "Data!C1:C21").CreatePivotTable TableDestination:= _
        "'[brouillon frais.xls]CroiseDyn'!R1C1", TableName:= _
        "Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion10
    ActiveSheet.PivotTables("Tableau croisé dynamique1").AddFields RowFields:= _
        Array("PC", "Natu", "Description", "Données")
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("oct")
        .Orientation = xlDataField
        .Caption = "Somme de oct"
        .Position = 1
        .Function = xlSum
    End With"

Les lignes en gras sont celles surlignées en jaunes.
Quelqu'un voit-il quel est le problème?

Merci d'avance!

10 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
107
Salut,

Si tu fais du VBA, pourquoi tu poste dans le forum VB6 ???

Je déplace vers le forum approprié !
______________________________________
DarK Sidious
Messages postés
443
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
1 mars 2011
2
Salut,
En fait c'est certainement parce que le "Tableau croisé dynamique1" est encore en mémoire
Il faut passer en variable le nom du tableau croisé à créer
JML
 Partageons notre savoir et nos acquis
Messages postés
5
Date d'inscription
lundi 3 septembre 2007
Statut
Membre
Dernière intervention
3 septembre 2007

Ok, merci mais étant vraiment débutant en VBA, comment faire pour passer le nom en variable?
Messages postés
443
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
1 mars 2011
2
Whaou ... Une fois pour rendre service à une voisine de 85 ans, je lui ai proposer de l'aider à porter ses courses ... Je ne savais pas qu'elle habitait le 6ème sans ascenseur

Ce que je te propose c'est d'essayer ce qui suit 

    Sheets("Data").Select
    NomTableau = InputBox("Saisir Le Nom Du Tableau", "TABLEAU CROISE")
    Cells.Select
    Range("A694").Activate
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        "Data!C1:C21").CreatePivotTable TableDestination:= _
        "'[brouillon frais.xls]CroiseDyn'!R1C1", TableName:= _
        "Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion10
    ActiveSheet.PivotTables( NomTableau ).AddFields RowFields: = _
        Array("PC", "Natu", "Description", "Données")
    With ActiveSheet.PivotTables(NomTableau).PivotFields("oct")
        .Orientation = xlDataField
        .Caption = "Somme de oct"
        .Position = 1
        .Function = xlSum
    End With

JML
 Partageons notre savoir et nos acquis
Messages postés
5
Date d'inscription
lundi 3 septembre 2007
Statut
Membre
Dernière intervention
3 septembre 2007

salut,
j'ai essayer, et si les seuls parametres a changer sont ceux en bleu, alors ca ne change pas le problème ! (j'ai recopié textuellement ce que tu avais écrit )
n'y aurit il pas un probleme avec ce en vert?

    Sheets("Data").Select
    NomTableau = InputBox("Saisir Le Nom Du Tableau", "TABLEAU CROISE")
    Cells.Select
    Range("A694").Activate
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        "Data!C1:C21").CreatePivotTable TableDestination:= _
        "'[brouillon frais.xls]CroiseDyn'!R1C1", TableName:= _
        " Tableau croisé dynamique1 ", DefaultVersion: =xlPivotTableVersion10
    ActiveSheet.PivotTables(NomTableau).AddFields RowFields:= _
        Array("PC", "Natu", "Description", "Données")
    With ActiveSheet.PivotTables(NomTableau).PivotFields("oct")
        .Orientation = xlDataField
        .Caption = "Somme de oct"
        .Position = 1
        .Function = xlSum
    End With
Messages postés
443
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
1 mars 2011
2
Oui désolé mais je n'ai pas testé ... Il faut partout rempacé "Tableau croisé dynamique1" par NomTableau

JML
 Partageons notre savoir et nos acquis
Messages postés
5
Date d'inscription
lundi 3 septembre 2007
Statut
Membre
Dernière intervention
3 septembre 2007

Merci j'ai anticipé et j'ai essayer cependant le message d'erreur existe toujours mais le surlignement jaune a changé (en gras ci dessous)

   Sheets("Data").Select
    NomTableau = InputBox("Saisir le nom du tableau", "TABLEAU CROISE")
    Cells.Select
    Range("A694").Activate
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        "Data!C1:C21").CreatePivotTable TableDestination:= _
        "'[brouillon frais.xls]CroiseDyn'!R1C1", TableName:= _
        "NomTableau", DefaultVersion:=xlPivotTableVersion10
    ActiveSheet.PivotTables("NomTableau").AddFields RowFields:= _
        Array("PC", "Natu", "Description", "Données")
    With ActiveSheet.PivotTables("NomTableau").PivotFields("oct")
        .Orientation = xlDataField
        .Caption = "Somme de oct"
        .Position = 1
        .Function = xlSum
    End With
Messages postés
443
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
1 mars 2011
2
Regarde bien dans le code que je t'ai envoyé ... Si regarde encore ...
He oui ... NomTableau n'est pas entre guillemets parceque c'est une variable
JML
 Partageons notre savoir et nos acquis
Messages postés
5
Date d'inscription
lundi 3 septembre 2007
Statut
Membre
Dernière intervention
3 septembre 2007

J'ai vérifié chaque guillement, chaque virgule, et chaque...
et sauf erreur de ma part, cela ne marche pas, toujours la meme erreur avec toujours ce "paragraphe" surligné en jaune!
une autre idée? sinon merci beaucoup pour ton aide!!
Messages postés
443
Date d'inscription
mardi 27 mars 2007
Statut
Membre
Dernière intervention
1 mars 2011
2
Si tu as saisi comme ci-dessous, cela doit rouler sinon le problème vient d'autre chose ...
Par exemple ce que tu définis dans TableDestination n'y aurait il pas un Pb ?  

    Sheets("Data").Select
    NomTableau = InputBox("Saisir Le Nom Du Tableau", "TABLEAU CROISE")
    Cells.Select
    Range("A694").Activate
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        "Data!C1:C21").CreatePivotTable TableDestination:= _
        "'[brouillon frais.xls]CroiseDyn'!R1C1", TableName:= _
        NomTableau , DefaultVersion: =xlPivotTableVersion10
    ActiveSheet.PivotTables(NomTableau).AddFields RowFields:= _
        Array("PC", "Natu", "Description", "Données")
    With ActiveSheet.PivotTables(NomTableau).PivotFields("oct")
        .Orientation = xlDataField
        .Caption = "Somme de oct"
        .Position = 1
        .Function = xlSum
    End With
JML
 Partageons notre savoir et nos acquis