Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBS et excel

4 réponses
Avatar
Michel B.
Bonjour,

Actuellement j'=E9cris quelques petits scripts VBS pour=20
automatiser des traitements sous excel et word d'ou ma=20
demande.
Mais avant tou, y-a-t-il un newsgroup plus appropri=E9 pour=20
poser les questions concernant wsh ?

Je recherche un exemple d'utilisation de cr=E9ation d'un=20
Tableau crois=E9 dynamique sous excel =E0 partir d'un script=20
VBS. J'arrive bien =E0 ouvrir les fichiers sous excel, les=20
trier, ajouter des lignes d'en-t=EAte, ... mais d=E8s que=20
j'essaie de r=E9aliser un Tableau crois=E9 dynamique ...=20
gal=E8re.

Probl=E8me de syntaxe ?=20
oXL.ActiveWorkbook.PivotCaches.Add(1,"feuille1!
R1C1:R4C4").CreatePivotTable "feuille2!R1C1","Tableau=20
crois=E9 dynamique1",True,1

Je suis preneur de toute piste pouvant me faire avancer.
Merci pour votre aide.

4 réponses

Avatar
isabelle
bonjour Michel,

avec cette plage en feuille1
A B
1 3
2 4

en vbe cela donne,

With ActiveWorkbook
.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"Feuil1!R1C1:R3C2").CreatePivotTable TableDestination:= _
"Feuil2!R1C1", TableName:="Tableau croisé dynamique1", _
DefaultVersion:=xlPivotTableVersion10
End With
With ActiveSheet
.PivotTables("Tableau croisé dynamique1").AddFields RowFields:="A" _
, ColumnFields:="B"
.PivotTables("Tableau croisé dynamique1").PivotFields("B"). _
Orientation = xlDataField
End With

isabelle


Bonjour,

Actuellement j'écris quelques petits scripts VBS pour
automatiser des traitements sous excel et word d'ou ma
demande.
Mais avant tou, y-a-t-il un newsgroup plus approprié pour
poser les questions concernant wsh ?

Je recherche un exemple d'utilisation de création d'un
Tableau croisé dynamique sous excel à partir d'un script
VBS. J'arrive bien à ouvrir les fichiers sous excel, les
trier, ajouter des lignes d'en-tête, ... mais dès que
j'essaie de réaliser un Tableau croisé dynamique ...
galère.

Problème de syntaxe ?
oXL.ActiveWorkbook.PivotCaches.Add(1,"feuille1!
R1C1:R4C4").CreatePivotTable "feuille2!R1C1","Tableau
croisé dynamique1",True,1

Je suis preneur de toute piste pouvant me faire avancer.
Merci pour votre aide.


Avatar
Michel B.
Bonjour

Merci pour cette réponse Isabelle mais la syntaxe des
macros (vba) et celles contenue dans des fichiers en .vbs
n'est pas tout à fait identique et c'est ca qui me pose
problème.

Comment sous vbs faire pour la creation de l'objet excel
(pivotcaches.add) et ensuite le rappeler pour lui
appliquer une fonction (createpivottable).

Je continue donc à chercher un exemple sous .vbs pilotant
excel pour une fonction de tableau dynamique croisé.


-----Message d'origine-----
bonjour Michel,

avec cette plage en feuille1
A B
1 3
2 4

en vbe cela donne,

With ActiveWorkbook
..PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"Feuil1!R1C1:R3C2").CreatePivotTable
TableDestination:= _

"Feuil2!R1C1", TableName:="Tableau croisé
dynamique1", _

DefaultVersion:=xlPivotTableVersion10
End With
With ActiveSheet
..PivotTables("Tableau croisé dynamique1").AddFields
RowFields:="A" _

, ColumnFields:="B"
..PivotTables("Tableau croisé dynamique1").PivotFields
("B"). _

Orientation = xlDataField
End With

isabelle



Avatar
Denis Michon
Bonjour Michel,


Voici un exemple de TCD dans un VBScritp.

Dans un vbscript :

A ) on ne peut attribuer le type au variable lors de leur déclaration.

B ) Les constantes "Texte" que l'on retrouve dans Excel ne sont pas valides dans un vbscrip. Mais on peut très bien les
remplacer par leur constante numérique. Pour ce faire, Tu ouvres l'explorateur de projets, et dans la fenêtre
"Rechercher" tu inscris le nom de la constante. Dans le bas de cette fenêtre, tu obtiendras l'équivalent numérique.

À titre d'exemple, la ligne de code suivante : "ActiveWorkbook.PivotCaches.Add(SourceType:=xlConsolidation, .....", la
constante texte :" xlConsolidation" peut être remplacé par sa valeur numérique : 3 . La nouvelle ligne de code sera :
.PivotCaches.Add(3,...., Tout le premier argument est remplacé par 3.


Voilà un exemple sommaire :

'----------------------------------
Dim Xl
Dim Wk
Dim Rg

Set Xl = WScript.CreateObject("Excel.Application")
Xl.Visible = True ' False lors que ton script est fonctionnel !
Set Wk = Xl.Workbooks.Open("C:Exceltcd.xls")
Set Rg = Wk.Worksheets("Feuil1").Range("A1:G16")

With Wk
.worksheets("Feuil1").activate
.PivotCaches.Add(3, Rg.parent.name & "!" & rg.address(0,0)) _
.CreatePivotTable "", "Tableau croisé dynamique1", 1
With .ActiveSheet
.PivotTables("Tableau croisé dynamique1") _
.DataPivotField.PivotItems( _
"Nombre de Valeur").Position = 1
End With
End With

wk.close -1
xl.quit
set Wk =Nothing:set Xl=Nothing:Set Rg=Nothing
'----------------------------------


Tu me permettras une dernière suggestion : Si tu éprouves de la difficulté à écrire le script, tu peux toujours écrire
une macro dans excel et la faire exécuter par un VBscript... cela est sûrement plus facile. tu aurais quelque chose
comme :

'-----------------
Dim Xl
Dim Wk
Dim Rg

Set Xl = WScript.CreateObject("Excel.Application")
Xl.Visible = True ' False lors que ton script est fonctionnel !
Set Wk = Xl.Workbooks.Open("C:Exceltcd.xls")
Xl.run "NomDeLaMacro"
wk.close -1 'enregistre en fermant.
xl.quit
set Wk =Nothing:set Xl=Nothing
'-----------------



Salutations!




"Michel B." a écrit dans le message de news:13b801c39258$82b62ba0$
Bonjour,

Actuellement j'écris quelques petits scripts VBS pour
automatiser des traitements sous excel et word d'ou ma
demande.
Mais avant tou, y-a-t-il un newsgroup plus approprié pour
poser les questions concernant wsh ?

Je recherche un exemple d'utilisation de création d'un
Tableau croisé dynamique sous excel à partir d'un script
VBS. J'arrive bien à ouvrir les fichiers sous excel, les
trier, ajouter des lignes d'en-tête, ... mais dès que
j'essaie de réaliser un Tableau croisé dynamique ...
galère.

Problème de syntaxe ?
oXL.ActiveWorkbook.PivotCaches.Add(1,"feuille1!
R1C1:R4C4").CreatePivotTable "feuille2!R1C1","Tableau
croisé dynamique1",True,1

Je suis preneur de toute piste pouvant me faire avancer.
Merci pour votre aide.
Avatar
Transport adapté Amos
Bonjour,

Mais avant tou, y-a-t-il un newsgroup plus approprié
pour poser les questions concernant wsh ?


Tu peux essayer microsoft.public.fr.scripting