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

  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
    Lorsqu'un fichier est déjà ouvert par un utilisateur, si un deuxième essaie de l'ouvrir en même temps cela l'ouvre systématiquement en lecture seule.

    Pour remédier à cela, la solution est peut-être le partage de classeur, mais je dis bien peut-être car je n'y connais strictement rien à ça.

    Pour application.quit chez moi ça marche très bien. Peut-on voir le code dans lequel se situe cette ligne?

  3. #3
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 395
    Par défaut
    Bonjour,
    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.
    cela pourrait venir des droits de ton boss sur l'emplacement ou se trouve le fichier.

    Essaie ceci. Copie le fichier que tu mets à sa disposition sur le bureau (Desktop) et ouvre le via excel pour voir si cela change quelquechose.

    Regarde aussi dans ton traitement de sauverarde s'il n'y a apas quelquechose qui pourrait le mettre en lecture seule.

  4. #4
    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
    Le truc c'est que je lui envoie le fichier par mail.

    Il n'y a aucun partages où que ce soit...

    Le fichier est bien localement sur la machine de mon boss, et personne d'autre peut l'ouvrir.

    La lecture seule se fait dès l'ouverture du fichier, il n'y a rien dans le code qui pourrait causer ce phénomène.

    Je vous donne la fin du code du fichier (sauvegarde + fermeture) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Application.DisplayAlerts = False
        ThisWorkbook.SaveAs "C:\AXIS_V1\ATTENDUSURF_TEST.xls"
        Application.DisplayAlerts = False
        ThisWorkbook.Close
     
        'quitter l'appli
        Application.Quit
    Lorsque j'ouvre le fichier à partir d'Excel et qu'il est sur le bureau, celui-ci s'ouvre en lecture seule également.

    Merci d'avance pour votre aide.

  5. #5
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 395
    Par défaut
    ET au niveau du mail, tu as contrôlé ?

    Ton email est géré par VBA (et alors mieux vaudrait montrer le code complet ) ou bien c'est un envoi manuel ?

    Si l'envoi est manuel, regarde les propriété avant l'envoi et après.

    Tu peux aussi t'envoyer le même email en copie et voir si chez toi le problème se présente.

    En fait, il y tout un tas de variante à tester pour cibler le phénomène, au cas ou tu t'ennuie.

  6. #6
    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
    Je précise encore la situation (info que je viens d'avoir).

    Apparemment ce n'est pas le seul fichier où l'on a ce problème.
    A chaque fois qu'il reçoit des fichiers Excel par mail et qu'il y a des macros dedans, il a ce problème de lecture seul.

    Il a beau enregistrer le fichier, le changer de nom, redémarrer l'ordinateur (enfin tout ce qu'il faut logiquement pour enlever le lecture seul), cela reste ainsi.

    Des idées ?

  7. #7
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 395
    Par défaut
    Donc le problème est seulement chez ton boss ?

    Alors tu ne dois pas chercher dans ton fichier mais dans le niveau de sécurité de son pc.

  8. #8
    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
    Son niveau de sécurité ?

    Il est pourtant admin de sa machine...tout comme moi. Des pistes ?

  9. #9
    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
    Regarde au niveau de ses paramètres de sécurité dans Excel: il l'a peut-être paramétré pour bloquer toutes les macros ou quelque chose dans le genre.

  10. #10
    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
    Je viens de vérifier. Les sécurités sont au minimum. D'autres suggestions ? Personnellement je suis à cours d'idées.

  11. #11
    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
    Après avoir pu travailler sur le poste de mon boss pendant un moment j'ai trouvé d'où vient véritablement le problème.

    Lorsque la feuille se ferme, le processus EXCEL.EXE reste ouvert, ce qui fait qu'à la prochaine ouverture, celui-ci s'ouvre en lecture seule étant donné que Win croit que l'on travaille dessus.

    Je cherche en ce moment des solutions pour killer le processus de ce classeur uniquement (car des fichiers excel peuvent être ouvert au moment où j'execute ma macro excel, et je ne veux donc pas que tous mes processus EXCEL.EXE se ferme).

    Si vous avez des solutions, je suis preneur.

    EDIT : Je précise que je n'ai pas accès à VB.net (le plupart des solutions proposées sur le net sont dans ce langage).

  12. #12
    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.

  13. #13
    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.

  14. #14
    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

  15. #15
    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