Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

vérifier qu'une application est ouverte

  • Initiateur de la discussion Initiateur de la discussion fredl
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

fredl

XLDnaute Impliqué
Bonjour à tous,
dans une application, quand un utilisateur clique dans une case excel qui contient un nom de fichier (tout type de fichier possible 😛df,xls,doc,txtetc...), le fichier en question est ouvert par l'instruction :
ActiveWorkbook.FollowHyperlink Address:=VRepertoireFichier & "\" & Range("BnomFichier").Value, NewWindow:=True

Tout se passe bien si l'application concernée pour l'ouvrir n'est pas déjà ouverte.
En effet, si cette derniere est déjà ouverte, le fichier est ouvert, mais une erreur apparait et semble liée à l'instruction :
"NewWindow:=True"

Apres essai avec l'appli ouverte et l'instruction "NewWindow:=false", plus d'erreur.

Quelle type d'instruction puis je, selon vous, ajouter en amont pour vérifier si l'appli en question est ouverte ou non afin d'adapter l'instruction avec true ou false?

Merci d'avance pour votre aide.
Cordialement
Frédéric
 
Re : vérifier qu'une application est ouverte

Bonjour à tous

Voici une possibilité en utilisant un objet WMI
(ici le test regardes si excel est ouvert 😉 )
A copier dans un module standard, puis lancer la macro test

(PS: test OK sous Windows + Excel 2003)

VB:
Sub test()
'Script VBS adapté à VBA
Dim strComputer, strProcess
strComputer = "."
strProcess = "excel.exe"
MsgBox UCase(strProcess) & IIf(isProcessRunning(strComputer, strProcess), _
    " est déjà en cours d'éxécution", " inactif"), _
    vbCritical, "Informations"
End Sub


VB:
Function isProcessRunning(ByVal strComputer, ByVal strProcessName)
    Dim objWMIService, strWMIQuery
    strWMIQuery = "Select * from Win32_Process where name like '" & strProcessName & "'"
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" _
            & strComputer & "\root\cimv2")
    If objWMIService.ExecQuery(strWMIQuery).Count > 0 Then
        isProcessRunning = True
    Else
        isProcessRunning = False
    End If
End Function
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…