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

Anomalie dans un script vbs

7 réponses
Avatar
Michel Angelosanto
Bonjour,

lorsque j'éxécute le script suivant test.vbs, je devrais avoir Message 2 en
A1 or j'ai Message 3 comme si la macro1 s'était exécutée 2 fois.
De plus à la fermeture du fichier, j'ai le message suivant "Un fichier nommé
resume.xlw existe déja à cet emplacement. Voulez-vous le remplacer ?
D'ou provient ce message que je n'ai pas si j'ouvre et ferme manuellement le
fichier.

____________test.vbs_______________
Dim ex, feuille, contenu ,p
Set ex = CreateObject("Excel.Application")
ex.Application.DisplayAlerts = False
ex.Visible = True
' Fonction de récupération du répertoire courant
Function GetPath()
Dim path
path = WScript.ScriptFullName
GetPath = Left(path, InStrRev(path, "\"))
End Function
p=getpath()
Set feuille = ex.Workbooks.Open(p &"\TABLEAU.xls")
ex.activesheet.cells(1,1)="Message 1"
ex.run("macro1()")
msgbox(ex.ActiveSheet.Cells(1,1).Value) 'affiche Message 3 au lieu de
Message 2
ex.save
ex.Quit()

_____________________________
la macro dans excel:
Sub Macro1()
Range("A1").Select
n% = Val(Right$(Cells(1, 1), 2))
n% = n% + 1
Cells(1, 1) = "message " & Str$(n%)
End Sub

Michel Angelosanto, Bordeaux
http://angelosa.free.fr/

7 réponses

Avatar
MCI \(ex do ré Mi chel la si do\) [MVP]
Bonsoir !

C'est normal. Ta macro est lancée automatiquement à l'ouverture de
TABLEAU.xlsm
Supprime la ligne
ex.run("macro1()")
dans ton script, puis lance-le. Tu devrais voir que Macro1 se
déclenchera, sans que tu l'ai appelée explicitement.

@-salutations

Michel Claveau
Avatar
Michel Angelosanto
La macro est dans un module de tableau.xls, si j'ouvre le fichier
manuellement, la macro ne s'exécute pas (ce qui est normal).
En enlevant la ligne dans le script, la macro ne se lance pas et aussi, je
n'ai pas le message à la fermeture du fichier.
Est-ce bien comme cela qu'on doit écrire le lancement d'une macro ?

"MCI (ex do ré Mi chel la si do) [MVP]" a
écrit dans le message de news:u9kUFN%
Bonsoir !

C'est normal. Ta macro est lancée automatiquement à l'ouverture de
TABLEAU.xlsm
Supprime la ligne
ex.run("macro1()")
dans ton script, puis lance-le. Tu devrais voir que Macro1 se déclenchera,
sans que tu l'ai appelée explicitement.

@-salutations

Michel Claveau




--
Michel Angelosanto, Bordeaux
http://angelosa.free.fr/

Avatar
Michel Angelosanto
J'ai fait un essai avec la ligne ex.run("macro1")
La macro s'éxécute bien une seule fois et il n'y a pas d'enregistrement
d'une copie du fichier en resume.xlw

si maintenant je code la ligne suivante avec passage d'un paramètre à la
macro
ex.run("macro1(5)")
le paramètre est bien passé à la macro qui s'éxécute de nouveau deux fois et
j'ai de nouveau enregistrement d'une copie en resume.xlw (je suppose que
c'est une erreur qui provoque la création de ce fichier resume.xlw) mais
comment afficher cette erreur?

Dim ex, feuille, contenu ,p
Set ex = CreateObject("Excel.Application")
ex.Application.DisplayAlerts = False
ex.Visible = True
' Fonction de récupération du répertoire courant
Function GetPath()
Dim path
path = WScript.ScriptFullName
GetPath = Left(path, InStrRev(path, ""))
End Function
p=getpath()
Set feuille = ex.Workbooks.Open(p &"TABLEAU.xls")
ex.application.run("macro1(5)") 'cette ligne s'éxécute deux fois
msgbox(ex.ActiveSheet.Cells(1,1).Value)
ex.save
ex.Quit()



"Michel Angelosanto" a écrit dans le message de
news:
La macro est dans un module de tableau.xls, si j'ouvre le fichier
manuellement, la macro ne s'exécute pas (ce qui est normal).
En enlevant la ligne dans le script, la macro ne se lance pas et aussi, je
n'ai pas le message à la fermeture du fichier.
Est-ce bien comme cela qu'on doit écrire le lancement d'une macro ?

"MCI (ex do ré Mi chel la si do) [MVP]"
a écrit dans le message de news:u9kUFN%
Bonsoir !

C'est normal. Ta macro est lancée automatiquement à l'ouverture de
TABLEAU.xlsm
Supprime la ligne
ex.run("macro1()")
dans ton script, puis lance-le. Tu devrais voir que Macro1 se
déclenchera, sans que tu l'ai appelée explicitement.

@-salutations

Michel Claveau




--
Michel Angelosanto, Bordeaux
http://angelosa.free.fr/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://angelosa.free.fr/


--
Michel Angelosanto, Bordeaux
http://angelosa.free.fr/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://angelosa.free.fr/


Avatar
Gilles LAURENT [MVP]
"Michel Angelosanto" wrote:

J'ai fait un essai avec la ligne ex.run("macro1")
La macro s'éxécute bien une seule fois et il n'y a pas d'enregistrement
d'une copie du fichier en resume.xlw

si maintenant je code la ligne suivante avec passage d'un paramètre à la
macro
ex.run("macro1(5)")
le paramètre est bien passé à la macro qui s'éxécute de nouveau deux fois et
j'ai de nouveau enregistrement d'une copie en resume.xlw (je suppose que
c'est une erreur qui provoque la création de ce fichier resume.xlw) mais
comment afficher cette erreur?


Bonjour,

Ce comportement est dû à une erreur de syntaxe sur la méthode Run
Le prototype de la méthode Run :

Function Run ([Macro], [Arg1], ..., [Arg30])

Donc :
Ex.Run "Macro1"
Ex.Run "Macro1", 5

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr

Avatar
Michel Angelosanto
Merci beaucoup. Grâce à toi je vais pouvoir continuer mon apprentissage de
bvs
Connais-tu un site ou je peux trouver la syntaxe des commandes vbs
spécifiques à Excel car je débute et je découvre à tatillon.


"Gilles LAURENT [MVP]" a écrit dans le message de
news:
"Michel Angelosanto" wrote:

J'ai fait un essai avec la ligne ex.run("macro1")
La macro s'éxécute bien une seule fois et il n'y a pas d'enregistrement
d'une copie du fichier en resume.xlw

si maintenant je code la ligne suivante avec passage d'un paramètre à la
macro
ex.run("macro1(5)")
le paramètre est bien passé à la macro qui s'éxécute de nouveau deux fois
et
j'ai de nouveau enregistrement d'une copie en resume.xlw (je suppose que
c'est une erreur qui provoque la création de ce fichier resume.xlw) mais
comment afficher cette erreur?


Bonjour,

Ce comportement est dû à une erreur de syntaxe sur la méthode Run
Le prototype de la méthode Run :

Function Run ([Macro], [Arg1], ..., [Arg30])

Donc :
Ex.Run "Macro1"
Ex.Run "Macro1", 5

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr



--
Michel Angelosanto, Bordeaux
http://angelosa.free.fr/


Avatar
Gilles LAURENT [MVP]
"Michel Angelosanto" wrote:

Connais-tu un site ou je peux trouver la syntaxe des commandes vbs
spécifiques à Excel car je débute et je découvre à tatillon.


La documentation de l'objet COM Excel.Application :
<http://msdn.microsoft.com/en-us/library/bb255823.aspx&gt;

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr

Avatar
Michel Angelosanto
Encore merci, j'aurais bien avancé aujourd'hui.


"Gilles LAURENT [MVP]" a écrit dans le message de
news:
"Michel Angelosanto" wrote:

Connais-tu un site ou je peux trouver la syntaxe des commandes vbs
spécifiques à Excel car je débute et je découvre à tatillon.


La documentation de l'objet COM Excel.Application :
<http://msdn.microsoft.com/en-us/library/bb255823.aspx&gt;

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr



--
Michel Angelosanto, Bordeaux
http://angelosa.free.fr/