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 :

Fermeture à distance d'un fichier Excel - ne fonctionne pas [XL-365]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2015
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 243
    Par défaut Fermeture à distance d'un fichier Excel - ne fonctionne pas
    Bonjour tout le monde

    Je suis sur un noeud. Je ne comprends pas et je n'arrive pas à fermer un fichier Excel à distance.

    J'ai recherché sur le forum:
    https://www.developpez.net/forums/d2...ouvert-module/

    J'ai essayé avec toutes les explications, rien y fait ... le fichier reste ouvert.

    https://stackoverflow.com/questions/...se-not-working

    J'ai également essayé ce qui est expliqué ici ... même résultat: le fichier reste ouvert

    J'explique mon problème:

    A - Description:

    Dans l'entreprise, il y a différentes unitées. Chaque unité possède un nom (et donc, un fichier Excel existe sous ce nom)
    Il y a un fichier de configuration (Setup_UMP.xslm), qui contient toutes les données qui permettent de remplir le fichier d'unité

    Les valeurs à recopier pouvant être différentes entre chaque unité.

    B - Fonctionnement:

    Lorsqu'un utilisateur ouvre son fichier, le système ouvre le fichier de configuration.
    Si la date de la dernière mise à jour du fichier "utilisateur" est la même que la date de la dernière sauvegarde du fichier de "configuration", je ferme le fichier de config (rien à faire).
    Si ces dates sont différentes, alors, le fichier de config reste ouvert, la macro remet à jours les données, enregistre la date de sauvegarde du fichier de config.
    Pour terminer, fermeture du fichier de configuration.

    C'est la théorie

    En pratique, la fermeture du fichier de configuration ne s'éffectue pas. Il reste en arrière plan et visible.
    Pas de message d'erreur ... rien. Il reste ouvert !
    J'ai regardé dans tous les sens ... rien


    Le code est ci-dessous

    Ce code se trouve dans l'évènement "Workbook Open" du fichier utilisateur

    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
        Dim wb As Workbook                                           ' La variable "SharePoint" contient l'URL qui pointe vers les fichiers Excel - https://.....
        fichier_setup_UMP = SharePoint & "Setup_UMP.xlsm"            ' Nom du fichier à ouvrir (se trouve dans SharePoint Version 365)
        Workbooks.Open Filename:=fichier_setup_UMP
        Workbooks("Setup_UMP.xlsm").Activate
        Set wb = ActiveWorkbook
    
         ...            ' Ici se trouve le traitement que la macro doit éffectuer
    
        ' Les essais ci-dessous proviennent de différents forum dont le votre
    
        ' code d'essai n° 1:
    
          wb.activate             
          wb.Close SaveChanges:=False
    
         ' Code d'essai n° 2:
    
          Application.Windows("Setup_UMP.xlsm").Activate
          wb.Close SaveChanges:=False
    
          ' Code d'essai n° 3:
    
           wb.Activate
           ThisWorkbook.Close SaveChanges:=False
    
           ' Code d'essai n° 4:
    
          Application.Windows("Setup_UMP.xlsm").Activate
          Workbooks("Setup_UMP.xlsm").Close SaveChanges:=False
    Rien ne fonctionne. Aucune erreur et le fichier reste ouvert !

    Info: Le fichier de configuration s'ouvre dans la même session d'Excel en local (pas Excel Web version - Les macros ne fonctionnent pas avec cette version)

    J'appelle Au secours

    Toutes les idées sont les bienvenues

    Merci d'avance

    Bonne journée
    André

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 234
    Billets dans le blog
    53
    Par défaut
    Bonjour André,
    Avez-vous essayé le code de fermeture depuis un répertoire local (pas dans SharePoint pour voir si cela fonctionne ?

    Voici un code que je viens de tester et qui fonctionne parfaitement. Je ne l'ai pas encore tester dans OneDrive mais je pense qu'il n'y aura pas de souci particulier

    Cette procédure est placée das un module standard nommé mMain
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Main()
        Dim wkb As Workbook                           
        Const wkbName As String = "Setup.xlsx"
        Set wkb = Workbooks.Open(Filename:=ThisWorkbook.Path & "\" & wkbName)
          If MsgBox("Voulez-vous fermer le fichier " & _
                     wkbName, Buttons:=vbQuestion + vbYesNo + vbDefaultButton2, _
                     Title:="Test fermeture") _
                     = vbYes Then
             wkb.Close SaveChanges:=False
          End If
       Set wkb = Nothing
    End Sub
    Ici le procédure événementielle qui l'invoque et qui est placée dans ThisWorkbook
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
      mMain.Main
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2015
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 243
    Par défaut En local ... Cela fonctionne
    Bonjour,

    Merci pour votre réaction très rapide.

    Je n'ai même pas dû recopier votre code. J'ai simplement copié les 2 fichiers sur le C drive

    De cette manière, tout fonctionne bien.

    Problème, en pratique, je ne peux pas laisser les utilisateurs faire cela.

    Donc, je vais maintenant essayer votre code en laissant les fichiers sur le serveur SharePoint

    Je tiens au courant

    Encore merci

    André

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 234
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je n'ai pas "SharePoint" donc je ne sais pas effectuer ce test dans cette condition.
    En revanche, j'ai testé sur "OneDrive" et cela fonctionne parfaitement
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 574
    Par défaut
    Hello,

    As tu essayé d'ouvrir ton fichier dans une nouvelle instance d'Excel, plutot que l'instance courrante ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim Path As String
    Path = SharePoint & "Setup_UMP.xlsm"
     
    Dim App As Excel.Application
    Set App = New Excel.Application
    Application.Visible = True    '// Pour debug, l'instance est invisible par defaut
     
    Dim Wb as Excel.Workbook
    Set Wb = App.Workbooks.Open(Path)
     
        '// Code quelconque
     
    Wb.Close SaveChanges:=False
    App.Quit    '// Optionnel si la variable portant l'instance est locale à la fonction
    En bonus, ce sera plus agréable pour l'utilisateur final (Pas de fenêtre qui pop / change / clignotte comme un sapin de Noël).

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2015
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 243
    Par défaut Cela fonctionne ... YEAH !
    Bonjour

    deedolith ... t'es mon sauveur ... JE T'AIME !

    Cela fonctionne très bien.

    Je vais mettre à jour le code en fonction de mon business.


    Je n'y ai pas pensé de travailler avec 2 sessions
    L'idée est excellente

    Encore merci

    Bonne après-midi

    André

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

Discussions similaires

  1. Mes appels vers es fichiers .js ne fonctionnent pas.
    Par jmgodson dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 30/01/2008, 09h51
  2. Ouverture fichier excel ne marche pas
    Par Breizh22p dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 25/01/2008, 22h53
  3. La modification des fichiers jsp ne fonctionne pas
    Par red210 dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 10/09/2007, 14h11
  4. Fonction Excel : ne fonctionne pas
    Par jojodoudou dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 19/09/2006, 15h44
  5. Fichiers SWF ne fonctionnent pas
    Par Alma dans le forum Flash
    Réponses: 14
    Dernier message: 29/06/2006, 16h50

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