[VBS] Tableau dynamique croisé

Tableau dynamique croisé [VBS] - VB/VBA/VBS - Programmation

Marsh Posté le 27-07-2009 à 17:55:47    

Bonjour
Je cherche depuis 2 jours comment faire un tcd en visual basic script  :sweat:  
J'ai trouvé pas mal de doc en VBA, mais rien en VBS  :(  
Les seuls posts concernant le sujet disent de partir du VBA et d'adapter, seulement comment adapte-t-on  :pt1cable:  
Voici mon exemple
mon fichier excel:


champs1 champs2 champs3 donnee
a b 1 1
a bb 1 2
a bbb 2 1
aa b 1 2
aa bb 2 1
aa bbb 1 2
aaa b 2 1
aaa bb 1 2
aaa bbb 1 1


en VBA ca donne

Code :
  1. ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
  2.         "Sheet1!R1C1:R10C4" ).CreatePivotTable TableDestination:= _
  3.         "[temp.xls]Sheet2!R3C1", TableName:="Tableau croisé dynamique1", _
  4.         DefaultVersion:=xlPivotTableVersion10
  5.     ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotFields("champs1" ). _
  6.         Subtotals = Array(False, True, False, False, False, False, False, False, False, False, _
  7.         False, False)
  8.     ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotFields("champs2" ). _
  9.         Subtotals = Array(False, False, False, False, False, False, False, False, False, False, _
  10.         False, False)
  11.     ActiveSheet.PivotTables("Tableau croisé dynamique1" ).AddFields RowFields:= _
  12.         Array("champs1", "champs2" ), ColumnFields:="champs3"
  13.     ActiveSheet.PivotTables("Tableau croisé dynamique1" ).PivotFields("donnee" ). _
  14.         Orientation = xlDataField
  15.     ActiveWorkbook.ShowPivotTableFieldList = False


Alors que faut-il changer  :D  
Bon je présume que je transforme tout les := en =  
Les " _" sont enlevés et tout est mis sur une ligne mais à part ça  :sweat:  
pour l'instant c'est ce que j'ai fait et j'obtiens l'erreur
"Argument ou appel de la procedure incorrect" sur la première ligne de la déclaration du tcd
 Merci d'avance pour toutes idées :)
 
 
PS: J'ai vraiment besoin d'aid, je sèche totalement, j'ai tenté tout ce qui me passait par la tête :pt1cable:  
Au début il m'a semblé que c'était la zone de selection qui posait un problème
Du coup j'ai essayé avec un range l'erreur était alors type incompatible.
Du coup le type d'avant était au moins compatible, donc ca doit être pas ça mais pour l'instant pas d'idée j'ai essayé de virer des truc à droite à gauche ca donne rien  :pfff:  
Merci d'avance  :hello:


Message édité par _xme_ le 27-07-2009 à 18:38:10
Reply

Marsh Posté le 27-07-2009 à 17:55:47   

Reply

Marsh Posté le 28-07-2009 à 09:51:05    

Rebonjour  :hello:  
En continuant de cherche j'ai fini par vouloir afficher la valeur de chacune de mes variables.
J'ai ainsi remarqué que Msgbox me renvoie rien ou plutot je présume null à chaque fois que je demande la valeur d'une constante excel.
J'avais déjà eu le problème pour par exemple définir les bordure et j'avais du faire comme ceci

Code :
  1. xlsheet.Cells(3,4).Borders(1).Weight = 2


pour dire que je voulais que la bordure de gauche soit de taille moyenne.
J'ai donx essayé des valeurs un peu au pif
du coup ce qui suit passe à la compil mais j'ai aucune idée de ce que ca vaut  :D  

Code :
  1. Set xlPvtCache = wBook.PivotCaches.Add(2 , SourceData=xlsheet1.Name & "!R1C1:R10C4" )


et c'est ensuite

Code :
  1. Set xlPvtTable = xlPvtCache.CreatePivotTable("[temp.xls]Sheet2!R3C1", "TabXdyn", )


Qui plante en disant argument ou appel de fonction incorrecte...
Quelqu'un aurait-il une idée?
Ou quelqu'un saurai-t-il ou je peux trouver les valeur de toutes les constantes excel?
Merci d'avance
 
 
[Edit]
En posant mon problème je me suis rendu compte que je pouvait y répondre partiellement
Les valeurs des contantes s'obtiennent dans excel :)
A coup de Msgbox :D
du coup maintenant mon code est :

Code :
  1. Set xlPvtCache = wBook.PivotCaches.Add(1 , xlsheet1.Name & "!R1C1:R10C4" )
  2.   MsgBox "test"
  3.   Set xlPvtTable = xlPvtCache.CreatePivotTable(xlsheet2.range("A1" ),"TabXdyn",1)


Le message test apparait donc j'en déduit que xlPvtCache est bien crée
par contre j'obtiens sur la ligne suivante une erreur excel.
"Le nom du champ du tableau croisé dynamique n'est pas valide. Pour créer un rapport de tableau croisée dynamique, vous devez utiliser des données sous forme de liste avec des etiquettes des colonnes. Si vous changer le nom d'un champ de tableau croisé dynamique, vous devez tapper un nouveau champ pour le nom."  :sweat:  
Et du coup après je mange une erreur d'éxécution inconnue.
Quelqu'un a une idée?  :sweat:


Message édité par _xme_ le 28-07-2009 à 10:11:42
Reply

Marsh Posté le 28-07-2009 à 15:11:41    

[Sur un air de chanson]
J'ai envie de me pendre,
J'ai envie de me pendre,
J'ai ? ,j'ai envie de me pendre,
J'ai envie de me pendre...
[Fin de la chanson}
Dire que ca fait 2 jour que je tire une balle dans la tête alors que je l'ai sous les yeux cette ***** de solution :roll:
 

Code :
  1. Set xlsheet1 = wbook.Worksheets([COLOR="Red"]2[/COLOR])


Forcément il devait pas aimer excel 8O
Bon ben désolé pour le post

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed