Croisé dynamque avec une macro

cs_Barto95 Messages postés 5 Date d'inscription lundi 3 septembre 2007 Statut Membre Dernière intervention 3 septembre 2007 - 3 sept. 2007 à 10:13
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 - 3 sept. 2007 à 17:23
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

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
3 sept. 2007 à 10:40
Salut,

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

Je déplace vers le forum approprié !
______________________________________
DarK Sidious
0
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 2
3 sept. 2007 à 11:56
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
0
cs_Barto95 Messages postés 5 Date d'inscription lundi 3 septembre 2007 Statut Membre Dernière intervention 3 septembre 2007
3 sept. 2007 à 12:54
Ok, merci mais étant vraiment débutant en VBA, comment faire pour passer le nom en variable?
0
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 2
3 sept. 2007 à 14:04
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Barto95 Messages postés 5 Date d'inscription lundi 3 septembre 2007 Statut Membre Dernière intervention 3 septembre 2007
3 sept. 2007 à 14:36
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
0
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 2
3 sept. 2007 à 15:10
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
0
cs_Barto95 Messages postés 5 Date d'inscription lundi 3 septembre 2007 Statut Membre Dernière intervention 3 septembre 2007
3 sept. 2007 à 15:22
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
0
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 2
3 sept. 2007 à 15:27
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
0
cs_Barto95 Messages postés 5 Date d'inscription lundi 3 septembre 2007 Statut Membre Dernière intervention 3 septembre 2007
3 sept. 2007 à 15:50
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!!
0
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 2
3 sept. 2007 à 17:23
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
0
Rejoignez-nous