Quitter un Query

CerberusPau Messages postés 377 Date d'inscription lundi 3 avril 2006 Statut Membre Dernière intervention 22 août 2018 - Modifié le 23 août 2018 à 10:22
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 23 août 2018 à 16:53
Bonjour à tous,

Voilà mon code :
Public Function ProcessusActif(NomProcess) As Boolean
    Application.ScreenUpdating = False
    Dim svc As Object
    Dim squery As String
    Dim oproc
    Dim Actif As Boolean
    Set svc = GetObject("winmgmts:root\cimv2")
    squery = "select * from win32_process"
    Actif = False
    For Each oproc In svc.execquery(squery)
        If oproc.Name = NomProcess And SoftOpen = True Then
            Actif = True
            ProcessusActif = Actif
            Exit For
        End If
    Next
    Set svc = Nothing
End Function


Il n'y a pas de problème, il tourne parfaitement.
Toutefois, le "Exit For" reste sans effet, et le rebouclage continue, alors que "ProcessusActif" est passé à "True".

Pour info, la fonction est déclenchée quand la macro "Private Sub Workbook_Open()" écrit dans la cellule AD1 et la formule dans la cellule : AF1 = ProcessusActif(AD1) renvoie le résultat : VRAI ou FAUX.

Je n'ai pas trouvé comment éviter le rebouclage... Quelqu'un aurait-il une idée? Merci d'avance. Cordialement.


1 réponse

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
23 août 2018 à 16:53
Bonjour,

As-tu essayé en mettant un Stop après la boucle For...Next pour voir si la Function n'était pas appelée en boucle?

Je pensais à mettre Application.EnableEvents à False en début de Function et à True à la fin
Ou encore mettre un DoEvents en début de boucle.
0
Rejoignez-nous