Je cherche, par l'intermédiaire d'un script vbs (tournant en local sur les
machines, pas d'IIS) à ouvrir un fichier xls et à insérer des valeurs dans
des cellules.
Par ailleurs comment insérer ou rajouter une colonne derrière la dernière ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-Claude BELLAMY
Dans le message news:% , o.0 s'est ainsi exprimé:
Bonjour à tous,
Je cherche, par l'intermédiaire d'un script vbs (tournant en local sur les machines, pas d'IIS) à ouvrir un fichier xls et à insérer des valeurs dans des cellules. Par ailleurs comment insérer ou rajouter une colonne derrière la dernière ?
Inspire toi de mes scripts VBS qui font appel à EXCEL , en remplissant les cellules automatiquement. P.ex. :
En général, tout script de ce style commence par :
Set oXL = WScript.CreateObject("EXCEL.application") oXL.Visible = True oXL.Workbooks.Add
La variable objet "oXL" (nom totalement arbitraire) est celle qui va permettre de faire tout ce qu'on veut dans EXCEL
Le principe de programmation est très simple, d'ailleurs. Il suffit, dans Excel, de déclencher l'enregistrement d'une macro, qui contiendra toutes les manips que l'on souhaite. Une fois que c'est fait, on passe sous Visual Basic Editor et il suffit d'effectuer un copier-coller du code obtenu vers l'éditeur du VBScript. La seule modif à effectuer ensuite est de faire précéder toutes les commandes par "oXL." (la variable que l'on a créée au début).
Par exemple, pour insérer une colonne :
VBE donne ceci : ----------------------- Sub Macro1() ' ' Macro1 Macro ' Macro enregistrée le 02/06/2005 par BELLAMY '
Selection.Insert Shift:=xlToRight End Sub -----------------------
Le VBScript aura alors cette allure : (testé en vraie grandeur !)
Set oXL = WScript.CreateObject("EXCEL.application") oXL.Visible = True oXL.Workbooks.Add NCmin=1 NCmax=9 For NC = NCmin To NCmax Cellule 1,NC ,"TEST " & NC Next NC=InputBox("N° colonne à décaler à droite (" & NCmin & " à " & NCmax & " ?", _ "Test EXCEL", 2) If not isnumeric(NC) Then wscript.quit NC=cint(NC) If NC<NCmin or NC>NCmax Then wscript.quit
oXL.cells(1,NC).select Shift=xlToRight oXL.Selection.Insert Shift Cellule 1,NC,"Nouvelle colonne" oXL.Selection.Columns.AutoFit '-------------------------------------------------------------------- Sub Cellule(NL,NC,chaine) oXL.Cells(NL,NC).Value = Chaine End Sub ---------- couper ici ----------
NB: il faut penser à déclarer en tête du VBS toutes les constantes utilisées par Excel, car elles sont inconnues de VBS P.ex. ici "xlToRight" qui vaut -4161 (ou &HFFFFEFBF en hexadécimal)
Pour connaitre la valeur numérique d'une constante, il suffit de faire un clic droit sur la dite variable dans VBE et sélectionner l'item "Info expresse". une infobulle donne alros la valeur numérique, en décimal et en hexa.
-- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org *
Dans le message news:%23m8QYo2ZFHA.1940@TK2MSFTNGP10.phx.gbl ,
o.0 <none@none.fr> s'est ainsi exprimé:
Bonjour à tous,
Je cherche, par l'intermédiaire d'un script vbs (tournant en local
sur les machines, pas d'IIS) à ouvrir un fichier xls et à insérer des
valeurs dans des cellules.
Par ailleurs comment insérer ou rajouter une colonne derrière la
dernière ?
Inspire toi de mes scripts VBS qui font appel à EXCEL , en remplissant les
cellules automatiquement.
P.ex. :
En général, tout script de ce style commence par :
Set oXL = WScript.CreateObject("EXCEL.application")
oXL.Visible = True
oXL.Workbooks.Add
La variable objet "oXL" (nom totalement arbitraire) est celle qui va
permettre de faire tout ce qu'on veut dans EXCEL
Le principe de programmation est très simple, d'ailleurs.
Il suffit, dans Excel, de déclencher l'enregistrement d'une macro, qui
contiendra toutes les manips que l'on souhaite.
Une fois que c'est fait, on passe sous Visual Basic Editor et il suffit
d'effectuer un copier-coller du code obtenu vers l'éditeur du VBScript.
La seule modif à effectuer ensuite est de faire précéder toutes les
commandes par "oXL." (la variable que l'on a créée au début).
Par exemple, pour insérer une colonne :
VBE donne ceci :
-----------------------
Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 02/06/2005 par BELLAMY
'
Selection.Insert Shift:=xlToRight
End Sub
-----------------------
Le VBScript aura alors cette allure :
(testé en vraie grandeur !)
Set oXL = WScript.CreateObject("EXCEL.application")
oXL.Visible = True
oXL.Workbooks.Add
NCmin=1
NCmax=9
For NC = NCmin To NCmax
Cellule 1,NC ,"TEST " & NC
Next
NC=InputBox("N° colonne à décaler à droite (" & NCmin & " à " & NCmax & "
?", _
"Test EXCEL", 2)
If not isnumeric(NC) Then wscript.quit
NC=cint(NC)
If NC<NCmin or NC>NCmax Then wscript.quit
oXL.cells(1,NC).select
Shift=xlToRight
oXL.Selection.Insert Shift
Cellule 1,NC,"Nouvelle colonne"
oXL.Selection.Columns.AutoFit
'--------------------------------------------------------------------
Sub Cellule(NL,NC,chaine)
oXL.Cells(NL,NC).Value = Chaine
End Sub
---------- couper ici ----------
NB: il faut penser à déclarer en tête du VBS toutes les constantes utilisées
par Excel, car elles sont inconnues de VBS
P.ex. ici "xlToRight" qui vaut -4161 (ou &HFFFFEFBF en hexadécimal)
Pour connaitre la valeur numérique d'une constante, il suffit de faire un
clic droit sur la dite variable dans VBE et sélectionner l'item "Info
expresse". une infobulle donne alros la valeur numérique, en décimal et en
hexa.
--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
Jean-Claude.Bellamy@wanadoo.fr * JC.Bellamy@free.fr
Je cherche, par l'intermédiaire d'un script vbs (tournant en local sur les machines, pas d'IIS) à ouvrir un fichier xls et à insérer des valeurs dans des cellules. Par ailleurs comment insérer ou rajouter une colonne derrière la dernière ?
Inspire toi de mes scripts VBS qui font appel à EXCEL , en remplissant les cellules automatiquement. P.ex. :
En général, tout script de ce style commence par :
Set oXL = WScript.CreateObject("EXCEL.application") oXL.Visible = True oXL.Workbooks.Add
La variable objet "oXL" (nom totalement arbitraire) est celle qui va permettre de faire tout ce qu'on veut dans EXCEL
Le principe de programmation est très simple, d'ailleurs. Il suffit, dans Excel, de déclencher l'enregistrement d'une macro, qui contiendra toutes les manips que l'on souhaite. Une fois que c'est fait, on passe sous Visual Basic Editor et il suffit d'effectuer un copier-coller du code obtenu vers l'éditeur du VBScript. La seule modif à effectuer ensuite est de faire précéder toutes les commandes par "oXL." (la variable que l'on a créée au début).
Par exemple, pour insérer une colonne :
VBE donne ceci : ----------------------- Sub Macro1() ' ' Macro1 Macro ' Macro enregistrée le 02/06/2005 par BELLAMY '
Selection.Insert Shift:=xlToRight End Sub -----------------------
Le VBScript aura alors cette allure : (testé en vraie grandeur !)
Set oXL = WScript.CreateObject("EXCEL.application") oXL.Visible = True oXL.Workbooks.Add NCmin=1 NCmax=9 For NC = NCmin To NCmax Cellule 1,NC ,"TEST " & NC Next NC=InputBox("N° colonne à décaler à droite (" & NCmin & " à " & NCmax & " ?", _ "Test EXCEL", 2) If not isnumeric(NC) Then wscript.quit NC=cint(NC) If NC<NCmin or NC>NCmax Then wscript.quit
oXL.cells(1,NC).select Shift=xlToRight oXL.Selection.Insert Shift Cellule 1,NC,"Nouvelle colonne" oXL.Selection.Columns.AutoFit '-------------------------------------------------------------------- Sub Cellule(NL,NC,chaine) oXL.Cells(NL,NC).Value = Chaine End Sub ---------- couper ici ----------
NB: il faut penser à déclarer en tête du VBS toutes les constantes utilisées par Excel, car elles sont inconnues de VBS P.ex. ici "xlToRight" qui vaut -4161 (ou &HFFFFEFBF en hexadécimal)
Pour connaitre la valeur numérique d'une constante, il suffit de faire un clic droit sur la dite variable dans VBE et sélectionner l'item "Info expresse". une infobulle donne alros la valeur numérique, en décimal et en hexa.
-- May the Force be with You! La Connaissance s'accroît quand on la partage ---------------------------------------------------------- Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org *