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 :

[partage] Enlever le lecture seule + autre question bonus


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur .NET
    Inscrit en
    Février 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2006
    Messages : 107
    Par défaut [EXL 2000] Killer un processus Excel
    Bonjour,

    Ne trouvant pas de réponses satisfaisantes sur le net, je vous pose la question sur le forum.

    Situation :

    version : Office2002
    J'ai créée un fichier excel qui va récupérer des données sur une page web, met en forme les données, envoie par mail le résultat et sauvegarde le fichier (traitement scheduler).

    Problème :

    Lorsque je fourni ce fichier à mon boss, celui-ci s'ouvre en lecture seule, ce qui interfère avec la sauvegarde du fichier. Sur le mien, en revanche, tout fonctionne bien.

    La proriété lecture seul n'est pas cocher dans les propriétés du fichier. J'ai fais un autre test en sauvegardant sur le poste de mon boss ce fichier sous un autre nom, supprimer l'ancien fichier et renommer de nouveau le fichier que j'avais renommé, même chose si je reboot -> toujours en lecture seule.

    Note :

    Le fichier lance du code vba à l'ouverture. Pour éviter que la question de l'activation de la macro se fasse, j'ai créé un certificat et rajouter la signature dans le fichier Excel.

    Question subsidiaire

    Comment faire pour que l'application Excel se ferme après le traitement du fichier ?
    J'ai testé "Application.quit" mais cela ne fonctionne pas.

    Merci d'avance pour vos réponses.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    Je sais plus d'où j'ai tiré les infos pour, mais j'utilise ceci pour arrêter un processus:
    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
    Public Function ArreterProcessus(ByVal nom_processus As String) As Boolean
        Dim liste_processus As Object
        Dim reponse As String
        Dim oproc
        ArreterProcessus = True
        On Error GoTo erreur
        Set liste_processus = GetObject("winmgmts:root\cimv2")
        reponse = "select * from win32_process where name='" & nom_processus & "'"
        For Each oproc In liste_processus.execquery(reponse)
            oproc.Terminate
        Next
        Set liste_processus = Nothing
        Exit Function
    erreur:
        ArreterProcessus = False
    End Function
    Le nom à saisir est celui qui figure dans l'onglet "processus" du gestionnaire des taches.

  3. #3
    Membre confirmé
    Profil pro
    Développeur .NET
    Inscrit en
    Février 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2006
    Messages : 107
    Par défaut
    Merci beaucoup pour ta réponse, ça va pas mal m'aider.

    Ta solution permet de killer les processus embêtants, maintenant je cherche une solution pour ne killer qu'un seul processus (le processus excel qui a été lancée 5 mn avant).

    En tout cas pour l'instant ca sera une solution à utiliser.

  4. #4
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    bonjour,

    tu peux essayer ça pour fermer un classeur en connaissant le nom du classeur
    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
    Option Explicit
    '*****************************************
    'API Find applcation by full caption
    Private Declare Function FindWindow Lib "User32" Alias "FindWindowA" ( _
      ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    '*****************************************
    'API Bring Window to foreground
    Private Declare Function SetForegroundWindow Lib "User32" ( _
      ByVal hwnd As Long) As Long
    '*****************************************
    'API Send message to application
    Private Declare Function PostMessage Lib "User32" Alias "PostMessageA" ( _
      ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    '*****************************************
    Const WM_CLOSE = &H10
    '*****************************************
    Function Close_By_Caption(AppCaption As String)
      Dim hwnd As Long
      hwnd = FindWindow(vbNullString, AppCaption)
     
      If hwnd Then _
      'Bring to Front
        SetForegroundWindow hwnd
      'Close the app nicely
        PostMessage hwnd, WM_CLOSE, 0&, 0&
      End If
    End Function
     
    Sub Test()
    Close_By_Caption "Nom_Du_Classeur.xlsm" 'Place le nom du classeur à fermer ici, le même que dans l'onglet application du gestionnaire de tâche
    End Sub
    Cordialement

  5. #5
    Membre confirmé
    Profil pro
    Développeur .NET
    Inscrit en
    Février 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2006
    Messages : 107
    Par défaut
    Merci beaucoup!

    Exactement ce que je voulais, et cela fonctionne!

    Je clos le sujet...encore merci.

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

Discussions similaires

  1. enlever message base en lecture seule
    Par azur668 dans le forum VBA Access
    Réponses: 11
    Dernier message: 18/12/2013, 16h49
  2. Impossible d'enlever la lecture seule
    Par celtic29 dans le forum Word
    Réponses: 3
    Dernier message: 17/07/2012, 12h21
  3. Enlever protection lecture seul fichier excel
    Par maximilien59 dans le forum Modélisation
    Réponses: 5
    Dernier message: 27/01/2012, 18h35
  4. un user en mise à jour, les autres en lecture seule
    Par Fribosque dans le forum Administration
    Réponses: 4
    Dernier message: 05/07/2009, 17h31
  5. Réponses: 1
    Dernier message: 14/03/2006, 11h24

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