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

démarrer excel avec une priorité haute

10 réponses
Avatar
Paco
Bonjour à tous, et bonne année.

SVP, je démarre excel avec le script suivant,
ce qui me premet de vérifier avant démarrage qu'il n'y a pas déja une
session excel ouverte.
c'est utile car multiples utilisateurs et les ouvertures multiples
provoquaient un plantage.

SVP, que faut-il ajouter ou remplacer pour démarrer excel en "priorité
haute" ?
Merci beaucoup.
Pascal



Dim wsh
Set wsh = WScript.CreateObject("WScript.Shell")

If NbProcess("Excel.exe")=0 Then
wsh.Run "Excel.exe c:\etienne\prof\stef\fichiers\clients.xls",1
Else
MsgBox "Attention : Excel est déjà ouvert"
End If

'Compter NbProcessus
Function NbProcess(LeProcess)
Dim LesProcess, UnProcess, i
NbProcess = 0
Set LesProcess = _
GetObject("winmgmts:").ExecQuery("select * from Win32_Process ")
For Each UnProcess In LesProcess
If UCase(UnProcess.Caption) = UCase(LeProcess) Then _
NbProcess = NbProcess + 1
Next
End Function

10 réponses

Avatar
laurent.daures
bonjour,
essaye cette macro à l'ouverture dans un module
vérifiant qu'il n'y a qu'un fichier ouvert.
*********
Sub auto_open()
If Workbooks.Count > 1 Then
MsgBox "attention, vous devez fermer tous les autres fichiers avant d'ouvrir
ce fichier !"
ThisWorkbook.Close True
End If
End Sub

*********

ou bien celle ci dans le module de ThisWorkbook
*********
Private Sub Workbook_Open()
If Workbooks.Count > 1 Then
MsgBox "attention, vous devez fermer tous les autres fichiers avant d'ouvrir
ce fichier !"
ThisWorkbook.Close True
End If
End Sub

*********
Amicalement
Siesting Hoax

"Paco" a écrit dans le message de news:
%23D1v%
Bonjour à tous, et bonne année.

SVP, je démarre excel avec le script suivant,
ce qui me premet de vérifier avant démarrage qu'il n'y a pas déja une
session excel ouverte.
c'est utile car multiples utilisateurs et les ouvertures multiples
provoquaient un plantage.

SVP, que faut-il ajouter ou remplacer pour démarrer excel en "priorité
haute" ?
Merci beaucoup.
Pascal



Dim wsh
Set wsh = WScript.CreateObject("WScript.Shell")

If NbProcess("Excel.exe")=0 Then
wsh.Run "Excel.exe c:etienneprofsteffichiersclients.xls",1
Else
MsgBox "Attention : Excel est déjà ouvert"
End If

'Compter NbProcessus
Function NbProcess(LeProcess)
Dim LesProcess, UnProcess, i
NbProcess = 0
Set LesProcess = _
GetObject("winmgmts:").ExecQuery("select * from Win32_Process ")
For Each UnProcess In LesProcess
If UCase(UnProcess.Caption) = UCase(LeProcess) Then _
NbProcess = NbProcess + 1
Next
End Function



Avatar
j-pascal
Bonjour,

Plutôt que de fermer le classeur dans lequel se trouve ce code, est-il
possible de fermer tous les autres classeurs ouverts, avec invite
d'enregistrement si nécessaire ... ?

Merci

JP

bonjour,
essaye cette macro à l'ouverture dans un module
vérifiant qu'il n'y a qu'un fichier ouvert.
*********
Sub auto_open()
If Workbooks.Count > 1 Then
MsgBox "attention, vous devez fermer tous les autres fichiers avant d'ouvrir
ce fichier !"
ThisWorkbook.Close True
End If
End Sub

*********

ou bien celle ci dans le module de ThisWorkbook
*********
Private Sub Workbook_Open()
If Workbooks.Count > 1 Then
MsgBox "attention, vous devez fermer tous les autres fichiers avant d'ouvrir
ce fichier !"
ThisWorkbook.Close True
End If
End Sub

*********
Amicalement
Siesting Hoax

"Paco" a écrit dans le message de news:
%23D1v%
Bonjour à tous, et bonne année.

SVP, je démarre excel avec le script suivant,
ce qui me premet de vérifier avant démarrage qu'il n'y a pas déja une
session excel ouverte.
c'est utile car multiples utilisateurs et les ouvertures multiples
provoquaient un plantage.

SVP, que faut-il ajouter ou remplacer pour démarrer excel en "priorité
haute" ?
Merci beaucoup.
Pascal



Dim wsh
Set wsh = WScript.CreateObject("WScript.Shell")

If NbProcess("Excel.exe")=0 Then
wsh.Run "Excel.exe c:etienneprofsteffichiersclients.xls",1
Else
MsgBox "Attention : Excel est déjà ouvert"
End If

'Compter NbProcessus
Function NbProcess(LeProcess)
Dim LesProcess, UnProcess, i
NbProcess = 0
Set LesProcess = _
GetObject("winmgmts:").ExecQuery("select * from Win32_Process ")
For Each UnProcess In LesProcess
If UCase(UnProcess.Caption) = UCase(LeProcess) Then _
NbProcess = NbProcess + 1
Next
End Function





Avatar
Paco
Je m'excuse de vous demander pardon,

mais vous faites de la politique ou quoi?
Coluche disait: "les politiques, quand ils ont répondu à la question, tu
comprends meme plus la question."

le script que je vous soumet vérifie bien la présence ou non d'une session
d'excel déja ouverte et refuse d'ouvrir une deuxieme session en vous
expulsant de la procédure si excel est déja ouvert.

en ce sens, vos propositions sont interessantes mais permettent de facon
manuelle de faire ce que mon script fait déja de manière automatique !!!

mon script est automatique et marche parfaitement. c'est d'ailleurs misange
qui me l'avait proposé il y a un an et demi.

mon problème n'est pas la.
la question est: comment transformer pour intégrer la priorité à excel dans
les processus windows,
pour éviter de faire "gestionnaire de taches" puis "définir la priorité"
puis "priorité haute"

je crois qu'il existe une instruction whs du genre
run "excel.exe chemin de fichier high"
mais je ne retrouve pas la syntaxe.

quelqu'un peut-il m'aider?
Merci d'avance
Pascal


COPIE DU SCRIPT:

Dim wsh
Set wsh = WScript.CreateObject("WScript.Shell")

If NbProcess("Excel.exe")=0 Then
wsh.Run "Excel.exe c:etienneprofsteffichiersclients.xls",1
Else
MsgBox "Attention : Excel est déjà ouvert"
End If

'Compter NbProcessus
Function NbProcess(LeProcess)
Dim LesProcess, UnProcess, i
NbProcess = 0
Set LesProcess = _
GetObject("winmgmts:").ExecQuery("select * from Win32_Process ")
For Each UnProcess In LesProcess
If UCase(UnProcess.Caption) = UCase(LeProcess) Then _
NbProcess = NbProcess + 1
Next
End Function















"j-pascal" a écrit dans le message de news:

Bonjour,

Plutôt que de fermer le classeur dans lequel se trouve ce code, est-il
possible de fermer tous les autres classeurs ouverts, avec invite
d'enregistrement si nécessaire ... ?

Merci

JP

bonjour,
essaye cette macro à l'ouverture dans un module
vérifiant qu'il n'y a qu'un fichier ouvert.
*********
Sub auto_open()
If Workbooks.Count > 1 Then
MsgBox "attention, vous devez fermer tous les autres fichiers avant
d'ouvrir ce fichier !"
ThisWorkbook.Close True
End If
End Sub

*********

ou bien celle ci dans le module de ThisWorkbook
*********
Private Sub Workbook_Open()
If Workbooks.Count > 1 Then
MsgBox "attention, vous devez fermer tous les autres fichiers avant
d'ouvrir ce fichier !"
ThisWorkbook.Close True
End If
End Sub

*********
Amicalement
Siesting Hoax

"Paco" a écrit dans le message de news:
%23D1v%
Bonjour à tous, et bonne année.

SVP, je démarre excel avec le script suivant,
ce qui me premet de vérifier avant démarrage qu'il n'y a pas déja une
session excel ouverte.
c'est utile car multiples utilisateurs et les ouvertures multiples
provoquaient un plantage.

SVP, que faut-il ajouter ou remplacer pour démarrer excel en "priorité
haute" ?
Merci beaucoup.
Pascal



Dim wsh
Set wsh = WScript.CreateObject("WScript.Shell")

If NbProcess("Excel.exe")=0 Then
wsh.Run "Excel.exe c:etienneprofsteffichiersclients.xls",1
Else
MsgBox "Attention : Excel est déjà ouvert"
End If

'Compter NbProcessus
Function NbProcess(LeProcess)
Dim LesProcess, UnProcess, i
NbProcess = 0
Set LesProcess = _
GetObject("winmgmts:").ExecQuery("select * from Win32_Process ")
For Each UnProcess In LesProcess
If UCase(UnProcess.Caption) = UCase(LeProcess) Then _
NbProcess = NbProcess + 1
Next
End Function









Avatar
Modeste
Bonsour® Paco
Bonne année !!! Meilleurs voeux à tous !!!

Je m'excuse de vous demander pardon,
mon problème n'est pas la.
la question est: comment transformer pour intégrer la priorité à
excel dans les processus windows,
pour éviter de faire "gestionnaire de taches" puis "définir la
priorité" puis "priorité haute"



faut pas engeuler les bénévoles qui essaient de t'aider ... :-(
l'omniscience n'existe pas ;o)))
soit ils n'ont pas compris, soit ta question n'est pas claire...

tu fournis par ailleurs (ci-dessus) une partie de la réponse dans ta question.
ce n'est pas un probleme Excel (excel ne gère pas les processus)
c'est un probleme Windows... !!!
;o)))

poser la question là :
news://news.microsoft.com/microsoft.public.fr.windowsxp
ou là :
news://news.microsoft.com/microsoft.public.scripting.vsh
news://news.microsoft.com/microsoft.public.fr.scripting
Avatar
michdenis
Voici le script que tu as besoin.

Tu places ce script dans un fichier NotePad et tu le baptises
du nom que tu désires mais en t'assurant que l'extension
du fichier est .vbs

Attention aux coupures de ligne inappropriées par le service de messagerie


'Const IDLE = 64
'Const BELOW_NORMAL = 16384
'Const NORMAL = 32
'Const ABOVE_NORMAL = 32768
'Const HIGH_PRIORITY = 128
'Const REAL_TIME = 256

Dim wsh

Set wsh = WScript.CreateObject("WScript.Shell")

If NbProcess("Excel.exe") = 0 Then
wsh.Run "Excel.exe"
strProcess = "Excel.exe"
strComputer = "."
Const ABOVE_NORMAL = 128
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!" & strComputer & "rootcimv2")
Set objStartup = objWMIService.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
objConfig.PriorityClass = ABOVE_NORMAL
Set objProcess = GetObject("winmgmts:rootcimv2:Win32_Process")
objProcess.Create "excel.exe", Null, objConfig, intProcessID
Else
MsgBox "Attention : Excel est déjà ouvert"
End If

'Compter NbProcessus
Function NbProcess(LeProcess)
Dim LesProcess, UnProcess, i
NbProcess = 0
Set LesProcess = _
GetObject("winmgmts:").ExecQuery("select * from Win32_Process ")
For Each UnProcess In LesProcess
If UCase(UnProcess.Caption) = UCase(LeProcess) Then _
NbProcess = NbProcess + 1
Next
End Function





"Paco" a écrit dans le message de groupe de discussion :

Je m'excuse de vous demander pardon,

mais vous faites de la politique ou quoi?
Coluche disait: "les politiques, quand ils ont répondu à la question, tu
comprends meme plus la question."

le script que je vous soumet vérifie bien la présence ou non d'une session
d'excel déja ouverte et refuse d'ouvrir une deuxieme session en vous
expulsant de la procédure si excel est déja ouvert.

en ce sens, vos propositions sont interessantes mais permettent de facon
manuelle de faire ce que mon script fait déja de manière automatique !!!

mon script est automatique et marche parfaitement. c'est d'ailleurs misange
qui me l'avait proposé il y a un an et demi.

mon problème n'est pas la.
la question est: comment transformer pour intégrer la priorité à excel dans
les processus windows,
pour éviter de faire "gestionnaire de taches" puis "définir la priorité"
puis "priorité haute"

je crois qu'il existe une instruction whs du genre
run "excel.exe chemin de fichier high"
mais je ne retrouve pas la syntaxe.

quelqu'un peut-il m'aider?
Merci d'avance
Pascal


COPIE DU SCRIPT:

Dim wsh
Set wsh = WScript.CreateObject("WScript.Shell")

If NbProcess("Excel.exe")=0 Then
wsh.Run "Excel.exe c:etienneprofsteffichiersclients.xls",1
Else
MsgBox "Attention : Excel est déjà ouvert"
End If

'Compter NbProcessus
Function NbProcess(LeProcess)
Dim LesProcess, UnProcess, i
NbProcess = 0
Set LesProcess = _
GetObject("winmgmts:").ExecQuery("select * from Win32_Process ")
For Each UnProcess In LesProcess
If UCase(UnProcess.Caption) = UCase(LeProcess) Then _
NbProcess = NbProcess + 1
Next
End Function















"j-pascal" a écrit dans le message de news:

Bonjour,

Plutôt que de fermer le classeur dans lequel se trouve ce code, est-il
possible de fermer tous les autres classeurs ouverts, avec invite
d'enregistrement si nécessaire ... ?

Merci

JP

bonjour,
essaye cette macro à l'ouverture dans un module
vérifiant qu'il n'y a qu'un fichier ouvert.
*********
Sub auto_open()
If Workbooks.Count > 1 Then
MsgBox "attention, vous devez fermer tous les autres fichiers avant
d'ouvrir ce fichier !"
ThisWorkbook.Close True
End If
End Sub

*********

ou bien celle ci dans le module de ThisWorkbook
*********
Private Sub Workbook_Open()
If Workbooks.Count > 1 Then
MsgBox "attention, vous devez fermer tous les autres fichiers avant
d'ouvrir ce fichier !"
ThisWorkbook.Close True
End If
End Sub

*********
Amicalement
Siesting Hoax

"Paco" a écrit dans le message de news:
%23D1v%
Bonjour à tous, et bonne année.

SVP, je démarre excel avec le script suivant,
ce qui me premet de vérifier avant démarrage qu'il n'y a pas déja une
session excel ouverte.
c'est utile car multiples utilisateurs et les ouvertures multiples
provoquaient un plantage.

SVP, que faut-il ajouter ou remplacer pour démarrer excel en "priorité
haute" ?
Merci beaucoup.
Pascal



Dim wsh
Set wsh = WScript.CreateObject("WScript.Shell")

If NbProcess("Excel.exe")=0 Then
wsh.Run "Excel.exe c:etienneprofsteffichiersclients.xls",1
Else
MsgBox "Attention : Excel est déjà ouvert"
End If

'Compter NbProcessus
Function NbProcess(LeProcess)
Dim LesProcess, UnProcess, i
NbProcess = 0
Set LesProcess = _
GetObject("winmgmts:").ExecQuery("select * from Win32_Process ")
For Each UnProcess In LesProcess
If UCase(UnProcess.Caption) = UCase(LeProcess) Then _
NbProcess = NbProcess + 1
Next
End Function









Avatar
Paco
Bonjour Modeste, et bonjour à tous
excuses si mes propos ont été ressentis comme agressifs, ce n'était pas mon
intention.

je persiste à dire que si tu lis les mots sans colère,
tu verras que mes propos n'étaient pas agressifs mais
et il est inutile de m'inonder de points d'interrogation.
c"était seulement de l'humour, de citer Coluche !

et aussi un peu pour recentrer le fil de la discussion qui partait dans une
direction ne répondant pas à la question.

merci et excuses à tous.
Pascal







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

Bonsour® Paco
Bonne année !!! Meilleurs voeux à tous !!!

Je m'excuse de vous demander pardon,
mon problème n'est pas la.
la question est: comment transformer pour intégrer la priorité à
excel dans les processus windows,
pour éviter de faire "gestionnaire de taches" puis "définir la
priorité" puis "priorité haute"



faut pas engeuler les bénévoles qui essaient de t'aider ... :-(
l'omniscience n'existe pas ;o)))
soit ils n'ont pas compris, soit ta question n'est pas claire...

tu fournis par ailleurs (ci-dessus) une partie de la réponse dans ta
question.
ce n'est pas un probleme Excel (excel ne gère pas les processus)
c'est un probleme Windows... !!!
;o)))

poser la question là :
news://news.microsoft.com/microsoft.public.fr.windowsxp
ou là :
news://news.microsoft.com/microsoft.public.scripting.vsh
news://news.microsoft.com/microsoft.public.fr.scripting
Avatar
Modeste
Bonsour® Paco
c"était seulement de l'humour

et aussi un peu pour recentrer le fil de la discussion qui partait
dans une direction ne répondant pas à la question.



Te absolvo !!!
aurait dit notre MonSignore ;o)))

Comme dit précédement, l'omniscience n'existe pas...
La personne connaissant la solution n'est peut etre pas devant son écran, ni sur le forum correspondant.

;o)))
pour me contredire, Denis "contributeur multi-casquettes" (EXCEL, VBA, Wsh, Windows) en est l'illustration...
Avatar
michdenis
Vous aurez compris qu'il y avait une petite coquille dans
le code... au lieu de l'expression ABOVE_NORMAL
il aurait fallu écrire : HIGH_PRIORITY
Il faudra corriger...


Tu places ce script dans un fichier NotePad et tu le baptises
du nom que tu désires mais en t'assurant que l'extension
du fichier est .vbs

Attention aux coupures de ligne inappropriées par le service de messagerie


'Const IDLE = 64
'Const BELOW_NORMAL = 16384
'Const NORMAL = 32
'Const ABOVE_NORMAL = 32768
'Const HIGH_PRIORITY = 128
'Const REAL_TIME = 256

Dim wsh

Set wsh = WScript.CreateObject("WScript.Shell")

If NbProcess("Excel.exe") = 0 Then
wsh.Run "Excel.exe"
strProcess = "Excel.exe"
strComputer = "."
Const ABOVE_NORMAL = 128
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!" & strComputer & "rootcimv2")
Set objStartup = objWMIService.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
objConfig.PriorityClass = ABOVE_NORMAL
Set objProcess = GetObject("winmgmts:rootcimv2:Win32_Process")
objProcess.Create "excel.exe", Null, objConfig, intProcessID
Else
MsgBox "Attention : Excel est déjà ouvert"
End If

'Compter NbProcessus
Function NbProcess(LeProcess)
Dim LesProcess, UnProcess, i
NbProcess = 0
Set LesProcess = _
GetObject("winmgmts:").ExecQuery("select * from Win32_Process ")
For Each UnProcess In LesProcess
If UCase(UnProcess.Caption) = UCase(LeProcess) Then _
NbProcess = NbProcess + 1
Next
End Function





"Paco" a écrit dans le message de groupe de discussion :

Je m'excuse de vous demander pardon,

mais vous faites de la politique ou quoi?
Coluche disait: "les politiques, quand ils ont répondu à la question, tu
comprends meme plus la question."

le script que je vous soumet vérifie bien la présence ou non d'une session
d'excel déja ouverte et refuse d'ouvrir une deuxieme session en vous
expulsant de la procédure si excel est déja ouvert.

en ce sens, vos propositions sont interessantes mais permettent de facon
manuelle de faire ce que mon script fait déja de manière automatique !!!

mon script est automatique et marche parfaitement. c'est d'ailleurs misange
qui me l'avait proposé il y a un an et demi.

mon problème n'est pas la.
la question est: comment transformer pour intégrer la priorité à excel dans
les processus windows,
pour éviter de faire "gestionnaire de taches" puis "définir la priorité"
puis "priorité haute"

je crois qu'il existe une instruction whs du genre
run "excel.exe chemin de fichier high"
mais je ne retrouve pas la syntaxe.

quelqu'un peut-il m'aider?
Merci d'avance
Pascal


COPIE DU SCRIPT:

Dim wsh
Set wsh = WScript.CreateObject("WScript.Shell")

If NbProcess("Excel.exe")=0 Then
wsh.Run "Excel.exe c:etienneprofsteffichiersclients.xls",1
Else
MsgBox "Attention : Excel est déjà ouvert"
End If

'Compter NbProcessus
Function NbProcess(LeProcess)
Dim LesProcess, UnProcess, i
NbProcess = 0
Set LesProcess = _
GetObject("winmgmts:").ExecQuery("select * from Win32_Process ")
For Each UnProcess In LesProcess
If UCase(UnProcess.Caption) = UCase(LeProcess) Then _
NbProcess = NbProcess + 1
Next
End Function















"j-pascal" a écrit dans le message de news:

Bonjour,

Plutôt que de fermer le classeur dans lequel se trouve ce code, est-il
possible de fermer tous les autres classeurs ouverts, avec invite
d'enregistrement si nécessaire ... ?

Merci

JP

bonjour,
essaye cette macro à l'ouverture dans un module
vérifiant qu'il n'y a qu'un fichier ouvert.
*********
Sub auto_open()
If Workbooks.Count > 1 Then
MsgBox "attention, vous devez fermer tous les autres fichiers avant
d'ouvrir ce fichier !"
ThisWorkbook.Close True
End If
End Sub

*********

ou bien celle ci dans le module de ThisWorkbook
*********
Private Sub Workbook_Open()
If Workbooks.Count > 1 Then
MsgBox "attention, vous devez fermer tous les autres fichiers avant
d'ouvrir ce fichier !"
ThisWorkbook.Close True
End If
End Sub

*********
Amicalement
Siesting Hoax

"Paco" a écrit dans le message de news:
%23D1v%
Bonjour à tous, et bonne année.

SVP, je démarre excel avec le script suivant,
ce qui me premet de vérifier avant démarrage qu'il n'y a pas déja une
session excel ouverte.
c'est utile car multiples utilisateurs et les ouvertures multiples
provoquaient un plantage.

SVP, que faut-il ajouter ou remplacer pour démarrer excel en "priorité
haute" ?
Merci beaucoup.
Pascal



Dim wsh
Set wsh = WScript.CreateObject("WScript.Shell")

If NbProcess("Excel.exe")=0 Then
wsh.Run "Excel.exe c:etienneprofsteffichiersclients.xls",1
Else
MsgBox "Attention : Excel est déjà ouvert"
End If

'Compter NbProcessus
Function NbProcess(LeProcess)
Dim LesProcess, UnProcess, i
NbProcess = 0
Set LesProcess = _
GetObject("winmgmts:").ExecQuery("select * from Win32_Process ")
For Each UnProcess In LesProcess
If UCase(UnProcess.Caption) = UCase(LeProcess) Then _
NbProcess = NbProcess + 1
Next
End Function









Avatar
michdenis
Bonjour Modeste,

Met en pas trop, justement je ne pourrai pas mettre ma casquette !
;-))



..
Avatar
Paco
yes, c'est nickel et ça marche effectivement beaucoup mieux.
je suis bien con de pas avoir vu d'ailleurs ;o)

merci beaucoup et a bientot, au prochain problème.
Pascal




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

Vous aurez compris qu'il y avait une petite coquille dans
le code... au lieu de l'expression ABOVE_NORMAL
il aurait fallu écrire : HIGH_PRIORITY
Il faudra corriger...