Rechercher : dans
Par :

Le langage VBS

Dernière réponse le 23 avr 2009 à 11:04:09 jijudu, le 17 avr 2009 à 21:22:32 
 Signaler ce message aux modérateurs

Bonjour,


J'ai lu dans forum qu'il était possible de contrôler Excel à partir d'un bloc note avec le langage VBS. Cela est-il vrai ??? et comment fait-on pour compiler le le "programme" dans le Word ??

Merci

Configuration: Windows XP
Firefox 3.0.7

Meilleures réponses pour « le langage VBS » dans :
Langage C++ - Les types de données Voir Les types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître...
Javascript - Introduction au langage Javascript Voir Qu'est-ce que le Javascript? Le Javascript est un langage de script incorporé dans un document HTML. Historiquement il s'agit même du premier langage de script pour le Web. Ce langage est un langage de programmation qui permet d'apporter des...
[Programmation] Comment débuter, quel langage? VoirComment débuter, quel langage? Introduction Ceux que l'on peut utiliser Delphi/Pascal Java Python .Net Smalltalk Ceux que l'on peut utiliser à la rigueur C/C++ PHP Ada Lisp/Caml/... Ceux que l'on peut ne pas utiliser
Ajouter la langue arabe au clavier français sous Windows VoirPour ajouter le clavier en arabe sous Windows XP il suffit d'aller dans : Démarrer -> Panneau de configuration -> Options régionales et linguistiques Dans l'onglet "Langue" (ou Clavier et langues), cocher la case "Installer les fichiers pour les...
Changer les langues du système dans Ubuntu VoirChanger la langue du système Vous venez d'installer Ubuntu sur votre ordinateur, et à votre grande surprise, le système n'est pas totalement en français! Vous êtes pourtant certains d'avoir mis la langue sur français lors de l'installation... Sous...
Télécharger LangOver VoirNe vous est-il jamais arrivé de saisir un texte dans une langue donnée et que le résultat soit différent. C'est énervant quand on ne sait pas d'où ça vient et comment le résoudre. Une des causes principales de ce bug est le clavier qui est mal...
Langage C - Les types de données VoirLes types de données Les données manipulées en langage C sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître l'occupation mémoire (le...
Le langage SQL VoirQu'appelle-t-on SQL? SQL (Structured Query Language, traduisez Langage de requêtes structuré) est un langage de définition de données (LDD, ou en anglais DDL Data Definition Language), un langage de manipulation de données (LMD, ou en anglais DML,...
Les langages informatiques VoirLangage informatique On appelle « langage informatique » un langage destiné à décrire l'ensemble des actions consécutives qu'un ordinateur doit exécuter. Un langage informatique est ainsi une façon pratique pour nous (humains) de donner des...

1

othanga, le 18 avr 2009 à 12:37:58

Salut
c'est possible car Excel, Word et pas mal d'autres programmes sont aussi des serveurs OLE.

il t'est donc possible, en vbs (en fait n'importe quel langage supporté par un hote de scripting tel WSH ou MSIE) de créer un objet Excel et de lui faire exécuter des instructions Excel (en fait toutes celles que tu peux utiliser dans les macros Excel). Si tu crées un objet Word, il sera capable d'exécuter tes instructions à partir du moment où ce sont des instructions connues par les macros Word). etc...

et pour finir, le vbs ne se compile pas (ni le jscript) : on se contente (avec notepad) de saisir le source et d'enregistrer dans un fichier .vbs (ou .js c'est selon)
ensuite, on le fait exécuter par WSH
a) en double-cliquant l'icône du script => ça lancera WSCRIPT.EXE qui interprétera ton script
b) depuis une boîte DOS en lançant C:\> SCRIPT c:\sources\hello.vbs

exemple de script :

wscript.echo "Hello, world!"


un peu de littérature : http://www.microsoft.com/technet/scriptcenter/default.mspx

Répondre à othanga

2

jijudu, le 18 avr 2009 à 15:54:25

OK d'accord. J'ai une macro (en VBA sur Excel). Je peux donc la mettre sur un notepad et le changer de format en .VBS => Comme VBS est un dérivé de VBA normalement l'éxecution du script VBS devra se compiler ??

merci

Répondre à jijudu

3

jijudu, le 20 avr 2009 à 11:23:29

Salut,

J'ai téléchargé Notepad++. J'ai mis mon script. Et lorsque je fais "enregistrer sous" dans "Type" je peux choisir :
Visual Basic file (*.vb; *.vbs)
Mais une fois enregistrer il m'enregistre en format .VB et non en .VBS.

Du coup j'ai fait renommer le fichier et j'ai ajouter un S. Lorsque j'exécute ma arco RIEN ne se passe ..... même pas l'éxécution d'Excel :

Function main()
 appel_macro_NP()
End Function
 
 
Function appel_macro_NP() 

 Dim Xl
 Dim Wb
 Dim NomMacro
 
 
 Set Xl = CreateObject("Excel.application")
 Xl.Visible = true
 Set Wb = Xl.Workbooks.Open("C:\Documents and Settings\XXX\Bureau\classeurtre.xls")
 


 Xl.run WB.Name & "!Module5.essai" 

xl.quit
set wb = Nothing
set Xl = Nothing 

End Function 

Le nom de la macro est : essai

merci bien

Répondre à jijudu

4

othanga, le 21 avr 2009 à 01:48:12

Hello

C'est normal que rien ne soit exécuté car ton .vbs ne contient que des fonctions et pas de programme principal ! Car autant Excel exécute tes macros/modules/etc en appelant main() autant wsh (via cscript.exe ou wscript.exe) n'est pas au courant de cette convention.

Je te propose donc d'enlever les lignes function main() et end function.
Ainsi, ton bloc ne comporte plus que appel_macro_NP()

Comme nous en sommes à tailler dans le vif, prends donc l'habitude de ne pas utiliser de function lorsqu'il n'y a a pas de valeur de retour. Ainsi, ta fonction appel_macro_NP ne renvoyant rien, tu peux la transformer en sub :
sub appel_macro_NP
...
...
...
end sub
L'appel du sub s'effectuera alors avec simplement appel_macro_NP

Nous avons donc:

sub appel_macro_NP()
Dim Xl
Dim Wb
Dim NomMacro
Set Xl = CreateObject("Excel.application")
Xl.Visible = true
Set Wb = Xl.Workbooks.Open("C:\Documents and Settings\XXX\Bureau\classeurtre.xls")
Xl.run WB.Name & "!Module5.essai"
xl.quit
set wb = Nothing
set Xl = Nothing
End sub

appel_macro_NP ' 1ere ligne du pgm principal
wscript.echo "Terminé!" ' 2eme ligne du pgm principal

mets tout ça dans un fichier .vbs puis double-clique-le.

nb: je suis pas suffisamment expert dans le pilotage d'Excel depuis wsh pour te certifier que ton Excel sera visible. J'ai l'habitude de poser dans Excel des extractions de données depuis du wsh et je n'ai jamais vu la moindre fenêtre Excel. Par contre, si le script se plante avant de fermer Excel, tu vois (grâce au gestionnaire de tâches) qu'un Excel est démarré alors que tu ne vois pas sa fenêtre.
ex:
a = 10
Set lExcel = CreateObject("Excel.Application")
lExcel.workbooks.Add
lExcel.ActiveWorkBook.ActiveSheet.Cells(1, 1).Value = 1 / (a - 10)
lExcel.Activeworkbook.SaveAs "essai.xls"
lExcel.Quit
Set lExcel = nothing
s'arrête à cause d'une division par zéro, mais l'excel reste vivant

Répondre à othanga

5

jijudu, le 21 avr 2009 à 10:28:44

Salut !!

Merci pour ta réponse Othanga.
Mais en faite j'ai trouvé le probléme (de débutant ...)
J'ai oublié d'appelé ma fonction main au début de mon script ^^

+++

Répondre à jijudu

6

othanga, le 21 avr 2009 à 10:34:43

Cool :-)

alors oublie pas de le marquer résolu.

Bons scripts !

Répondre à othanga

7

 jijudu, le 23 avr 2009 à 11:04:09

Bonjour,


J'aimerais avoir confirmation :
Avec le VBS je peux ne piltoter que des applications de Windows ??

Je ne peux pas piloter des logiciels qui ne sont pas développés par windows ?? Si non existe-il un moyen de piloter ces logiciels par un script ?? Merci !


Merci d'avance

Répondre à jijudu