OVH Cloud OVH Cloud

Excel Application [doc]

11 réponses
Avatar
sympatix
Bonjour !

Je cherche un peu de doc sur le pilotage d'Excel par VBS (j'ai bien parcouru
l'aide de VBA d'Excel, mais je n'ai rien trouvé de convainquant...en tout
cas, je m'emmèle les pinceaux avec les hierarchies d'objets)
Quelqu'un aurait-il une adresse avec des exemples Basiques sur la
minipulation des fichiers, feuilles, etc...?

Merci d'avance :-)


--
Cordialement
Sympatix
(Antispam: Ôter les "toto" dans l'adresse, pour me répondre)

10 réponses

1 2
Avatar
Sebastien Piche
bon je ne sait plus ou que j'ai pris ça mais je regarde toujour cette
exemple quand je veux piloté du excel il y tout ce que j'ai besoin pour
travaillé

Set objExcel = WScript.CreateObject("EXCEL.application")
objExcel.Visible = True
objExcel.Workbooks.Add
Set ws = objExcel.Worksheets(1)
objExcel.ActiveSheet.Name = "Last Logon"
ws.Cells(1,1).Value = "User-ID"
ws.Columns(1).ColumnWidth = 15
ws.Cells(1,2).Value = "Last logged on Server"
ws.Columns(2).ColumnWidth = 20
ws.Cells(1,3).Value = "At date and time"
ws.Columns(3).ColumnWidth = 20
ws.Cells(1,4).Value = "Older than 30 days"
ws.Columns(4).ColumnWidth = 25
ws.Cells(1,5).Value = "Has Never Logged On"
ws.Columns(5).ColumnWidth = 25
ws.Cells(1,6).Value = "Account Disabled"
ws.Columns(6).ColumnWidth = 20
ws.Cells(1,7).Value = "Account Created at"
ws.Columns(7).ColumnWidth = 18
ws.Cells(1,8).Value = "Flag Error Code"
ws.Columns(8).ColumnWidth = 15
ws.Cells(1,9).Value = "Users Full Name"
ws.Columns(9).ColumnWidth = 35
ws.Cells(1,10).Value = "OU path"
ws.Columns(10).ColumnWidth = 30
ws.Cells(1,11).Value = "LDAP path"
ws.Columns(11).ColumnWidth = 70
ws.Cells(1,12).Value = "Special Error codes"
ws.Columns(12).ColumnWidth = 20
objExcel.Range("A1:L1").Select
objExcel.Selection.Font.Bold = True
objExcel.Selection.Interior.ColorIndex = 9
objExcel.Selection.Interior.Pattern = 4
objExcel.Selection.Font.ColorIndex = 2
objExcel.ActiveSheet.Range("A1").Activate
ws.Cells(1,1).Select
' intButton = WshShell.Popup("Working, please wait...", , "Working !",
64)
objExcel.save


"sympatix" a écrit dans le message de news:

Bonjour !

Je cherche un peu de doc sur le pilotage d'Excel par VBS (j'ai bien
parcouru l'aide de VBA d'Excel, mais je n'ai rien trouvé de
convainquant...en tout cas, je m'emmèle les pinceaux avec les hierarchies
d'objets)
Quelqu'un aurait-il une adresse avec des exemples Basiques sur la
minipulation des fichiers, feuilles, etc...?

Merci d'avance :-)


--
Cordialement
Sympatix
(Antispam: Ôter les "toto" dans l'adresse, pour me répondre)



Avatar
sympatix
bon je ne sait plus ou que j'ai pris ça mais je regarde toujour cette
exemple quand je veux piloté du excel il y tout ce que j'ai besoin pour
travaillé


Merci pour cet exemple, je le stocke dans ma kb perso.
Mais je n'y trouve pas ce que je cherche...allez, je ferais mieux de me
lancer et de poser directement la question, ce sera plus simple:
Je voudrais enregistrer *tout* le contenu d'un classeur actif (xls) sous un
fichier de type csv. Malheureusement, avec le bout de code j'arrive à
pondre, (ci-dessous) celà ne m'enregistre que la première feuille...(il peut
y en avoir 1, 2 ou 3, selon les cas). De plus, je voudrais écraser le
fichier csv s'il existe (ne pas avoir la confirm d'excel).

------------Extrait, couper ici--------------
Set oXL = WScript.CreateObject("EXCEL.application")
oXL.WindowState = Minimise
oXL.Visible = True
oXL.DisplayAlerts = False
oXL.Workbooks.Open "C:source"
oXL.ActiveWorkbook.SaveAs "C:cible.csv", 20
------------Extrait, couper ici--------------

Merci d'avance :-)
--
Cordialement
Sympatix
(Antispam: Ôter les "toto" dans l'adresse, pour me répondre)
"Sebastien Piche" a écrit dans le message de news:
ujFf$
bon je ne sait plus ou que j'ai pris ça mais je regarde toujour cette
exemple quand je veux piloté du excel il y tout ce que j'ai besoin pour
travaillé


Avatar
Isabelle Prawitz
Bonjour !
En effet, le format CSV ne permet que l'enregistrement de la feuille active ! A toi de faire une boucle du type :

For each Mafeuille in MonClasseur.Worksheets
Mafeuille.activate
' ligne de sauvegarde
next

Pour vérifier si le fichier CSV existe déjà et le supprimer, tu peux utiliser ce code :

if Dir("C:Cible.csv")<>"" then
kill ("C:Cible.csv")
end if

A+
Isa

"sympatix" a écrit dans le message de news:OCJM%
bon je ne sait plus ou que j'ai pris ça mais je regarde toujour cette
exemple quand je veux piloté du excel il y tout ce que j'ai besoin pour
travaillé


Merci pour cet exemple, je le stocke dans ma kb perso.
Mais je n'y trouve pas ce que je cherche...allez, je ferais mieux de me
lancer et de poser directement la question, ce sera plus simple:
Je voudrais enregistrer *tout* le contenu d'un classeur actif (xls) sous un
fichier de type csv. Malheureusement, avec le bout de code j'arrive à
pondre, (ci-dessous) celà ne m'enregistre que la première feuille...(il peut
y en avoir 1, 2 ou 3, selon les cas). De plus, je voudrais écraser le
fichier csv s'il existe (ne pas avoir la confirm d'excel).

------------Extrait, couper ici--------------
Set oXL = WScript.CreateObject("EXCEL.application")
oXL.WindowState = Minimise
oXL.Visible = True
oXL.DisplayAlerts = False
oXL.Workbooks.Open "C:source"
oXL.ActiveWorkbook.SaveAs "C:cible.csv", 20
------------Extrait, couper ici--------------

Merci d'avance :-)
--
Cordialement
Sympatix
(Antispam: Ôter les "toto" dans l'adresse, pour me répondre)
"Sebastien Piche" a écrit dans le message de news:
ujFf$
bon je ne sait plus ou que j'ai pris ça mais je regarde toujour cette
exemple quand je veux piloté du excel il y tout ce que j'ai besoin pour
travaillé






Avatar
sympatix
En effet, le format CSV ne permet que l'enregistrement de la feuille
active !
Ah...j'en étais pas sûr...maintenant si !


J'ai réeussi à faire à peu près ce que je veux avec le For Each...
Pour le reste (écrasement du fichier s'il existe), je vais voir quelle
méthode sera la plus adaptée à mon cas, la tienne, ou en faisant un test
avant, par FSO (comme j'ai + l'habitude de travailler avec...)

Merci beaucoup :-)

--
Cordialement
Sympatix
(Antispam: Ôter les "toto" dans l'adresse, pour me répondre)
"Isabelle Prawitz" a écrit dans le message de news:

Bonjour !
En effet, le format CSV ne permet que l'enregistrement de la feuille
active ! A toi de faire une boucle du type :

For each Mafeuille in MonClasseur.Worksheets
Mafeuille.activate
' ligne de sauvegarde
next

Pour vérifier si le fichier CSV existe déjà et le supprimer, tu peux
utiliser ce code :

if Dir("C:Cible.csv")<>"" then
kill ("C:Cible.csv")
end if

A+
Isa

"sympatix" a écrit dans le message de
news:OCJM%
bon je ne sait plus ou que j'ai pris ça mais je regarde toujour cette
exemple quand je veux piloté du excel il y tout ce que j'ai besoin pour
travaillé


Merci pour cet exemple, je le stocke dans ma kb perso.
Mais je n'y trouve pas ce que je cherche...allez, je ferais mieux de me
lancer et de poser directement la question, ce sera plus simple:
Je voudrais enregistrer *tout* le contenu d'un classeur actif (xls) sous
un
fichier de type csv. Malheureusement, avec le bout de code j'arrive à
pondre, (ci-dessous) celà ne m'enregistre que la première feuille...(il
peut
y en avoir 1, 2 ou 3, selon les cas). De plus, je voudrais écraser le
fichier csv s'il existe (ne pas avoir la confirm d'excel).

------------Extrait, couper ici--------------
Set oXL = WScript.CreateObject("EXCEL.application")
oXL.WindowState = Minimise
oXL.Visible = True
oXL.DisplayAlerts = False
oXL.Workbooks.Open "C:source"
oXL.ActiveWorkbook.SaveAs "C:cible.csv", 20
------------Extrait, couper ici--------------

Merci d'avance :-)
--
Cordialement
Sympatix
(Antispam: Ôter les "toto" dans l'adresse, pour me répondre)
"Sebastien Piche" a écrit dans le message de news:
ujFf$
bon je ne sait plus ou que j'ai pris ça mais je regarde toujour cette
exemple quand je veux piloté du excel il y tout ce que j'ai besoin pour
travaillé










Avatar
papou
Bonjour
Il faudrait peut-être préciser que l'enregistrement devra être effectué sur
un document CSV *** différent *** pour chaque feuille...
...sinon les données seront écrasées à chaque fois par les données de la
nouvelle feuille.
;-)
Cordialement
Pascal

"Isabelle Prawitz" a écrit dans le message de news:

Bonjour !
En effet, le format CSV ne permet que l'enregistrement de la feuille
active ! A toi de faire une boucle du type :

For each Mafeuille in MonClasseur.Worksheets
Mafeuille.activate
' ligne de sauvegarde
next

Pour vérifier si le fichier CSV existe déjà et le supprimer, tu peux
utiliser ce code :

if Dir("C:Cible.csv")<>"" then
kill ("C:Cible.csv")
end if

A+
Isa

"sympatix" a écrit dans le message de
news:OCJM%
bon je ne sait plus ou que j'ai pris ça mais je regarde toujour cette
exemple quand je veux piloté du excel il y tout ce que j'ai besoin pour
travaillé


Merci pour cet exemple, je le stocke dans ma kb perso.
Mais je n'y trouve pas ce que je cherche...allez, je ferais mieux de me
lancer et de poser directement la question, ce sera plus simple:
Je voudrais enregistrer *tout* le contenu d'un classeur actif (xls) sous
un
fichier de type csv. Malheureusement, avec le bout de code j'arrive à
pondre, (ci-dessous) celà ne m'enregistre que la première feuille...(il
peut
y en avoir 1, 2 ou 3, selon les cas). De plus, je voudrais écraser le
fichier csv s'il existe (ne pas avoir la confirm d'excel).

------------Extrait, couper ici--------------
Set oXL = WScript.CreateObject("EXCEL.application")
oXL.WindowState = Minimise
oXL.Visible = True
oXL.DisplayAlerts = False
oXL.Workbooks.Open "C:source"
oXL.ActiveWorkbook.SaveAs "C:cible.csv", 20
------------Extrait, couper ici--------------

Merci d'avance :-)
--
Cordialement
Sympatix
(Antispam: Ôter les "toto" dans l'adresse, pour me répondre)
"Sebastien Piche" a écrit dans le message de news:
ujFf$
bon je ne sait plus ou que j'ai pris ça mais je regarde toujour cette
exemple quand je veux piloté du excel il y tout ce que j'ai besoin pour
travaillé










Avatar
sympatix
Il faudrait peut-être préciser que l'enregistrement devra être effectué sur
un document CSV *** différent *** pour chaque feuille...
...sinon les données seront écrasées à chaque fois par les données de la
nouvelle feuille.
Oui, effectivement, c'est le piège à c** ;-)...mais, je vais faire ça avec

FSO, en ajoutant à chaque fois le "flux de données", à chaque itération de
boucle, dans un fichier texte. c'est un peu plus compliqué que ce que je
pensais, mais, qaund c'est trop simple, en général, ça m'inquiète, donc, là,
à priori, ça va ;-)

Merci :-)

--
Cordialement
Sympatix
(Antispam: Ôter les "toto" dans l'adresse, pour me répondre)
"papou" <cestpasbon@çanonplus44.fr> a écrit dans le message de news:

Bonjour
Il faudrait peut-être préciser que l'enregistrement devra être effectué
sur un document CSV *** différent *** pour chaque feuille...
...sinon les données seront écrasées à chaque fois par les données de la
nouvelle feuille.
;-)
Cordialement
Pascal

"Isabelle Prawitz" a écrit dans le message de news:

Bonjour !
En effet, le format CSV ne permet que l'enregistrement de la feuille
active ! A toi de faire une boucle du type :

For each Mafeuille in MonClasseur.Worksheets
Mafeuille.activate
' ligne de sauvegarde
next

Pour vérifier si le fichier CSV existe déjà et le supprimer, tu peux
utiliser ce code :

if Dir("C:Cible.csv")<>"" then
kill ("C:Cible.csv")
end if

A+
Isa

"sympatix" a écrit dans le message de
news:OCJM%
bon je ne sait plus ou que j'ai pris ça mais je regarde toujour cette
exemple quand je veux piloté du excel il y tout ce que j'ai besoin
pour
travaillé


Merci pour cet exemple, je le stocke dans ma kb perso.
Mais je n'y trouve pas ce que je cherche...allez, je ferais mieux de me
lancer et de poser directement la question, ce sera plus simple:
Je voudrais enregistrer *tout* le contenu d'un classeur actif (xls) sous
un
fichier de type csv. Malheureusement, avec le bout de code j'arrive à
pondre, (ci-dessous) celà ne m'enregistre que la première feuille...(il
peut
y en avoir 1, 2 ou 3, selon les cas). De plus, je voudrais écraser le
fichier csv s'il existe (ne pas avoir la confirm d'excel).

------------Extrait, couper ici--------------
Set oXL = WScript.CreateObject("EXCEL.application")
oXL.WindowState = Minimise
oXL.Visible = True
oXL.DisplayAlerts = False
oXL.Workbooks.Open "C:source"
oXL.ActiveWorkbook.SaveAs "C:cible.csv", 20
------------Extrait, couper ici--------------

Merci d'avance :-)
--
Cordialement
Sympatix
(Antispam: Ôter les "toto" dans l'adresse, pour me répondre)
"Sebastien Piche" a écrit dans le message de news:
ujFf$
bon je ne sait plus ou que j'ai pris ça mais je regarde toujour cette
exemple quand je veux piloté du excel il y tout ce que j'ai besoin
pour
travaillé














Avatar
Isabelle Prawitz
Sinon, il y a la possibilité de travailler avec un classeur temporaire, dans lequel tu colles le contenu de toutes les
feuilles (si elles ont le même format !), et tu exportes ce classeur !
A+
Isa

"sympatix" a écrit dans le message de news:
Il faudrait peut-être préciser que l'enregistrement devra être effectué sur
un document CSV *** différent *** pour chaque feuille...
...sinon les données seront écrasées à chaque fois par les données de la
nouvelle feuille.
Oui, effectivement, c'est le piège à c** ;-)...mais, je vais faire ça avec

FSO, en ajoutant à chaque fois le "flux de données", à chaque itération de
boucle, dans un fichier texte. c'est un peu plus compliqué que ce que je
pensais, mais, qaund c'est trop simple, en général, ça m'inquiète, donc, là,
à priori, ça va ;-)

Merci :-)

--
Cordialement
Sympatix
(Antispam: Ôter les "toto" dans l'adresse, pour me répondre)
"papou" <cestpasbon@çanonplus44.fr> a écrit dans le message de news:

Bonjour
Il faudrait peut-être préciser que l'enregistrement devra être effectué
sur un document CSV *** différent *** pour chaque feuille...
...sinon les données seront écrasées à chaque fois par les données de la
nouvelle feuille.
;-)
Cordialement
Pascal

"Isabelle Prawitz" a écrit dans le message de news:

Bonjour !
En effet, le format CSV ne permet que l'enregistrement de la feuille
active ! A toi de faire une boucle du type :

For each Mafeuille in MonClasseur.Worksheets
Mafeuille.activate
' ligne de sauvegarde
next

Pour vérifier si le fichier CSV existe déjà et le supprimer, tu peux
utiliser ce code :

if Dir("C:Cible.csv")<>"" then
kill ("C:Cible.csv")
end if

A+
Isa

"sympatix" a écrit dans le message de
news:OCJM%
bon je ne sait plus ou que j'ai pris ça mais je regarde toujour cette
exemple quand je veux piloté du excel il y tout ce que j'ai besoin
pour
travaillé


Merci pour cet exemple, je le stocke dans ma kb perso.
Mais je n'y trouve pas ce que je cherche...allez, je ferais mieux de me
lancer et de poser directement la question, ce sera plus simple:
Je voudrais enregistrer *tout* le contenu d'un classeur actif (xls) sous
un
fichier de type csv. Malheureusement, avec le bout de code j'arrive à
pondre, (ci-dessous) celà ne m'enregistre que la première feuille...(il
peut
y en avoir 1, 2 ou 3, selon les cas). De plus, je voudrais écraser le
fichier csv s'il existe (ne pas avoir la confirm d'excel).

------------Extrait, couper ici--------------
Set oXL = WScript.CreateObject("EXCEL.application")
oXL.WindowState = Minimise
oXL.Visible = True
oXL.DisplayAlerts = False
oXL.Workbooks.Open "C:source"
oXL.ActiveWorkbook.SaveAs "C:cible.csv", 20
------------Extrait, couper ici--------------

Merci d'avance :-)
--
Cordialement
Sympatix
(Antispam: Ôter les "toto" dans l'adresse, pour me répondre)
"Sebastien Piche" a écrit dans le message de news:
ujFf$
bon je ne sait plus ou que j'ai pris ça mais je regarde toujour cette
exemple quand je veux piloté du excel il y tout ce que j'ai besoin
pour
travaillé


















Avatar
sympatix
Sinon, il y a la possibilité de travailler avec un classeur temporaire,
dans lequel tu colles le contenu de toutes les
feuilles (si elles ont le même format !), et tu exportes ce classeur !
A+
Isa


Je ne suis pas assez à l'aise avec Excel Application pour faire ça, d'autant
plus que je dois rajouter des petits ingrédients délimiteurs de champs
(genre ") lors de chaque enregistrement de classeur. Même si c'est
certainement faisable en VBA à la sauce VBS, je préfère pour l'instant le
faire en VBS à la sauce VBA ;-)

Merci:-)
--
Cordialement
Sympatix
(Antispam: Ôter les "toto" dans l'adresse, pour me répondre)

Avatar
sympatix
Que veux dire le paramètre 20 à la fin, et quels sont les paramètres dispos
pour cette action ?
-----Extrait-----------
oXL.ActiveWorkbook.SaveAs Cible, 20
-----Extrait-----------

merci !
--
Cordialement
Sympatix
(Antispam: Ôter les "toto" dans l'adresse, pour me répondre)
"sympatix" a écrit dans le message de news:

Sinon, il y a la possibilité de travailler avec un classeur temporaire,
dans lequel tu colles le contenu de toutes les
feuilles (si elles ont le même format !), et tu exportes ce classeur !
A+
Isa


Je ne suis pas assez à l'aise avec Excel Application pour faire ça,
d'autant plus que je dois rajouter des petits ingrédients délimiteurs de
champs (genre ") lors de chaque enregistrement de classeur. Même si c'est
certainement faisable en VBA à la sauce VBS, je préfère pour l'instant le
faire en VBS à la sauce VBA ;-)

Merci:-)
--
Cordialement
Sympatix
(Antispam: Ôter les "toto" dans l'adresse, pour me répondre)




Avatar
Isabelle Prawitz
C'est le paramètre indiquant le format de sauvegarde, constante dans la collection xlFileFormat (va voir dans l'explorateur
d'objet pour les valeurs !). D'ailleurs perso j'aurais plutôt mis 6 (xlCSV) !
A+
Isa

"sympatix" a écrit dans le message de news:
Que veux dire le paramètre 20 à la fin, et quels sont les paramètres dispos
pour cette action ?
-----Extrait-----------
oXL.ActiveWorkbook.SaveAs Cible, 20
-----Extrait-----------

merci !
--
Cordialement
Sympatix
(Antispam: Ôter les "toto" dans l'adresse, pour me répondre)
"sympatix" a écrit dans le message de news:

Sinon, il y a la possibilité de travailler avec un classeur temporaire,
dans lequel tu colles le contenu de toutes les
feuilles (si elles ont le même format !), et tu exportes ce classeur !
A+
Isa


Je ne suis pas assez à l'aise avec Excel Application pour faire ça,
d'autant plus que je dois rajouter des petits ingrédients délimiteurs de
champs (genre ") lors de chaque enregistrement de classeur. Même si c'est
certainement faisable en VBA à la sauce VBS, je préfère pour l'instant le
faire en VBS à la sauce VBA ;-)

Merci:-)
--
Cordialement
Sympatix
(Antispam: Ôter les "toto" dans l'adresse, pour me répondre)








1 2