IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Tuer processus Excel cachés


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 21
    Par défaut Tuer processus Excel cachés
    Bonjour a tous

    J'ai lu cette discussion.
    Je reviens sur ce sujet parce que j'en ai absolument besoin et que j'ai essai de faire ce que avez fait mais sans résultat !
    mon problème est que j'ai une macro qui crée un nouveau classeur et qui par la suite du programme on va lui ajouté de nouvelle feuille copier ... ! mais quand je crée ce nouveau claseur il n'est malheureusement accessible qu'en lecture ! et c'est par la suite que j'ai découvert que c'est un processus en arrière plan de excel qui m’empêcher de le modifier même si le fichier était fermé ! et du coup j'ai simplement a tué cette tache pour que je puisse le modifier ou redémarrer mon pc ! mais c'est pas l'objectif ! du coup quand j'ai vu votre discutions cela m’intéresse beaucoup même si je ne suis pas trop fort en ça ! mais le code de Hindioumax ne marche pas ! je suis sous windows 10 avec un pc 64b pouvez vous m'aidez ?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    49
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 49
    Par défaut
    Nouveau code compatible avec Excel 2013 et win10, testé et approuvé
    il faut ajouter les "PtrSafe" dans les déclarations et modifier le paramètre de l'appel en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FermerProcessAvecFenetreInvisible "excel"
    Code complet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    Option Explicit
     
    Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As Long, ByVal lpWindowName As Long) As Long
    Declare PtrSafe Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
    Declare PtrSafe Function GetWindow Lib "user32" (ByVal hWnd As Long, ByVal wCmd As Long) As Long
    Declare PtrSafe Function IsWindowVisible Lib "user32" (ByVal hWnd As Long) As Long
    Declare PtrSafe Function GetWindowThreadProcessId Lib "user32" (ByVal hWnd As Long, lpdwProcessId As Long) As Long
    Declare PtrSafe Function OpenProcess Lib "Kernel32.dll" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessID As Long) As Long
    Declare PtrSafe Function CloseHandle Lib "Kernel32.dll" (ByVal hObject As Long) As Long
    Declare PtrSafe Function TerminateProcess Lib "Kernel32.dll" (ByVal hProcess As Long, ByVal dwExitCode As Long) As Long
    Const PROCESS_TERMINATE As Long = &H1
     
    Sub FermerProcessAvecFenetreInvisible(sNomFenetre As String)
    '---------------------------------------------------------------------------------------
    ' Procedure : FermerProcessAvecFenetreInvisible
    ' Date      : 16/04/2012
    ' Purpose   : Ferme les processus comportant des fenêtres cachées (testé sur XP et Win7 32bits et 64)
    ' Argument  : une partie du nom de la fenêtre (minuscule ou majuscule indifférent)
    '---------------------------------------------------------------------------------------
        Dim titre As String
        Dim hWnd As Long
        Dim pid As Long
        Dim i As Long
        Dim colPid As Collection
        Set colPid = New Collection
     
        '1ère fenêtre
        hWnd = FindWindow(0, 0)
     
        Do While hWnd <> 0
            If IsWindowVisible(hWnd) = 0 Then
                'Si n'est pas visible => récupération du nom de la fenêtre
                titre = String(100, Chr$(0))
                GetWindowText hWnd, titre, 100
                titre = Left$(titre, InStr(titre, Chr$(0)) - 1)
                If LCase(titre) Like "*" & LCase(sNomFenetre) & "*" Then
                    'Fenêtre trouvée
                    'Récupération de l'ID du processus (pid) lié à la fenêtre
                    GetWindowThreadProcessId hWnd, pid
     
                    'Ajout du pid dans la collection
                    colPid.Add pid
                End If
            End If
            hWnd = GetWindow(hWnd, 2) 'Prochaine fenêtre
        Loop
     
        'Fermeture de tous les processus stockés dans la collection
        For i = 1 To colPid.Count
            KillProcess colPid(i)
        Next i
     
        Set colPid = Nothing
    End Sub
     
    Sub KillProcess(pid As Long)
        'Fermeture du processus
        Dim hProc As Long
        Dim Retval As Long
     
        hProc = OpenProcess(PROCESS_TERMINATE, 0, pid)
        If hProc <> 0 Then
            Retval = TerminateProcess(hProc, 0)
            ' Si Retval = 0 échec de la fonction TerminateProcess(..)
            CloseHandle hProc
        End If
    End Sub
     
    Sub TesterFermeture()
        'Autre exemple
        FermerProcessAvecFenetreInvisible "excel"
     
    '    'Nécessite la référence Microsoft Word x.0 Object Library
    '    Dim oAppWord As Word.Application, oAppWord2 As Word.Application
    '    Set oAppWord = CreateObject("Word.Application")
    '    Set oAppWord2 = CreateObject("Word.Application")
    '
    '    oAppWord2.Visible = True 'une instance visible
    '    oAppWord.Visible = False 'une instance invisible
    '
    '    MsgBox "Ouvrez le gestionnaire des tâches, une fois cliqué sur 'OK' les instances Word invisibles doivent disparaitre"
    '    FermerProcessAvecFenetreInvisible "microsoft word"
    End Sub

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour ouais si tu veux

    depuis le temps j'aurais cru que tu aurais entendu parler de WMI
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 21
    Par défaut résolu
    merci Hindioumax pour ton code ! il marche bien ! mais je vais pas en rester la ! je dois maintenant bien le comprendre !! personnellement je connais pas le WMI je vais me documenté sur ca ! bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] [VBA-E] Tuer processus Excel cachés sous Win7
    Par Hindioumax dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 18/04/2012, 13h53
  2. Application Excel - Tuer le processus EXCEL.EXE?
    Par xVINCEx dans le forum VB.NET
    Réponses: 21
    Dernier message: 18/04/2012, 10h43
  3. Tuer un processus (Excel pour ne pas le citer)
    Par PsykotropyK dans le forum Access
    Réponses: 11
    Dernier message: 11/10/2006, 10h05
  4. Tuer un processus Excel dans Access
    Par Jordmund dans le forum Access
    Réponses: 4
    Dernier message: 29/08/2006, 08h59
  5. VB6: tuer le processus Excel
    Par Svart26 dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 20/07/2006, 08h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo