démarrer excel avec une priorité haute

Le
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: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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
laurent.daures
Le #18445661
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" %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



j-pascal
Le #18460331
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" %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





Paco
Le #18461011
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"
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" %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









Modeste
Le #18461061
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
michdenis
Le #18461161
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"
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"
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" %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









Paco
Le #18461981
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"
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
Modeste
Le #18462901
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...
michdenis
Le #18463991
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"
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"
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" %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









michdenis
Le #18464841
Bonjour Modeste,

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



..
Paco
Le #18473601
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"
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...


Publicité
Poster une réponse
Anonyme