Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1167 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBS] Tableau dynamique croisé

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBS] Tableau dynamique croisé

n°1909101
_xme_
Posté le 27-07-2009 à 17:55:47  profilanswer
 

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
mood
Publicité
Posté le 27-07-2009 à 17:55:47  profilanswer
 

n°1909239
_xme_
Posté le 28-07-2009 à 09:51:05  profilanswer
 

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
n°1909423
_xme_
Posté le 28-07-2009 à 15:11:41  profilanswer
 

[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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBS] Tableau dynamique croisé

 

Sujets relatifs
[VBA][Excel][Word] Redimensionner TableauComment récupérer des données mysql dans un tableau horizontal?
Caractère spéciaux dans tableau WordCOM C++/VB6 tableau de string en argument
[RESOLU] [VBS] copier uniquement les lignes filtrées sous ExcelExtraire un formaulaire dans un tableau sur Excel
Creation dynamique d'accesseurstableau html au milieu d'une fct javascript
Fuite mémoire tableau double entrée..récupération d'un fichier txt en tableau php
Plus de sujets relatifs à : [VBS] Tableau dynamique croisé


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR