Avoir accée au Process ID (PID) à partir d'excel en VBA

Fermé
shinxy Messages postés 4 Date d'inscription mercredi 10 avril 2013 Statut Membre Dernière intervention 12 avril 2013 - 10 avril 2013 à 15:33
shinxy Messages postés 4 Date d'inscription mercredi 10 avril 2013 Statut Membre Dernière intervention 12 avril 2013 - 12 avril 2013 à 15:11
Bonjour,

Je vous met en situation :)

Je suis entrain de coriger un bug asser chiant sur une macro excel, en gros ce bug fait ceci :

-lorsque je ferme excel, et que je veux partir sans sauvegarder, une fenétre vien me demander un mot de passe.

Aprés plusieurs test j'en est conclu qu'il s'agissait d'un probléme de compatibilité avec un autre logiciel et ma macro. Bréf, le seul moyen que j'ai trouver pour ne plus avoir cette fenétre, c'est de faire une macro qui se déclenche juste aprés que excel m'est demander de sauvegarder, et qui réalise ceci :

shell "taskkill /IM EXCEL.EXE /F"

Le gros inconvénient est que je ne peut pas avoir d'autre fenétres excel ouverte en même temps, sinon dés le déclenchement de cette macro, et de cette commande toute mes fenétres EXCEL se ferme ( normal, je tue tout le proces).

Mon idée est donc de ne fermer que la fenétre que je veux fermer (comme si j'appuier sur la croix rouge mais avec la commande : shell "taskkill /PID N° PID /F"), donc je voulais savoir si il exister une fonction en VBA qui permétais de connaitre le PID de notre page excel.


j'éspère avoir étais le plus claire possible, et j'attend vos réponse car je galére vraiment ...
A voir également:

5 réponses

f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
10 avril 2013 à 20:29
Bonjour,

apres une petite recherche:

Sub test()
    Dim objProcess
    objProcess = "EXCEL.EXE"
    For Each Process In GetObject("winmgmts:").InstancesOf("Win32_process") 'Scan chaque processus actif
        If UCase(Process.Name) = UCase(objProcess) Then 'Si un processus nommé EXCEL.EXE alors on affiche un message
            MsgBox "Le programme à détecté un processus Excel" & vbCrLf & "ID du processus détecté : " & Process.ProcessID, vbOKOnly + vbExclamation, "Excel"
        End If
Next
End Sub


Devrait vous aider

Bonne suite
2
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
11 avril 2013 à 10:55
1
shinxy Messages postés 4 Date d'inscription mercredi 10 avril 2013 Statut Membre Dernière intervention 12 avril 2013 1
12 avril 2013 à 15:11
Merci beaucoup,

aprés combinaisons des deux codes, j'obtient exactement ce que je désirais avoir.
1
shinxy Messages postés 4 Date d'inscription mercredi 10 avril 2013 Statut Membre Dernière intervention 12 avril 2013 1
11 avril 2013 à 08:39
Merci pour cette réponse rapide, je vais aller faire un petit test voir si ça fonctionne, et si cela coréspond à mes attentes.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
shinxy Messages postés 4 Date d'inscription mercredi 10 avril 2013 Statut Membre Dernière intervention 12 avril 2013 1
11 avril 2013 à 10:32
Alors, je vien de tester ce petit bout de code, aprés quelque modif, j'arrive presque à obtenir le résultat désirer. Le gros probléme de cette méthode est que l'on ne peut pas savoir le quel des process est celui que je veux fermer ....

En gros si j'ouvre plein de page excel, il va me donner tout les process ID (normale) mais je ne peut pas savoir le quel de ces ID est le PID de ma page que je souhaite fermer.

Donc, je voudrais savoir si il peut étre possible de connaitre le PID de la fenétre excel ouverte grâce à une macro, sinon je me dirigerais vers une autre piste pour la coréction de mon bug ...
0