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 :

Message (MSGBOX) lorsqu'un fichier Excel vient d'être fermé [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 86
    Par défaut Message (MSGBOX) lorsqu'un fichier Excel vient d'être fermé
    Bonjour,

    Je souhaiterai,
    - depuis un fichier Excel A,

    être alerté (msgbox) lorsque,

    - dans un répertoire bien défini (dont le nom ne change pas)
    - un fichier Excel B (seul et unique dans le répertoire, mais dont le nom n'est pas toujours le même)

    ce fichier vient d'être fermé.


    N'ayant pas de grandes connaissances en VBA, je m'en remets à vous.

    D'avance merci et bonne journée

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 436
    Par défaut
    Bonjour,

    Une façon de faire est d'utiliser l'instruction OnTime au niveau du fichier A pour aller périodiquement (par exemple toutes les 15 secondes) vérifier que le fichier B est refermé, par exemple ainsi, applicable s'il n'y a que 1 seul fichier (de nom non connu) dans le dossier.

    Code au niveau de ThisWorkbook pour lancer la vérification dès l'ouverture du fichier A:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Option Explicit
     
    Private Sub Workbook_Open()
        Application.OnTime Now + TimeValue("00:00:15"), "EstRefermé"
    End Sub
    Code dans un module:
    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
    Option Explicit
     
    Sub EstRefermé()
        Dim sDir As String
        Dim sFileName As String
        Dim FileNum As Integer
        Dim ErrNum As Integer
        sDir = "D:\Dossier\SousDossier\"                     '--- à adapter, bien mettre une \ en fin
        If Dir(sDir, vbDirectory) <> "." Then
            MsgBox "Ce répertoire " & sDir & vbLf & "n'existe pas ou est mal présenté."
        End If
        On Error Resume Next
        FileNum = FreeFile()
        sFileName = sDir & Dir(sDir)
        Open sFileName For Input Lock Read As #FileNum
        Close FileNum
        ErrNum = Err
        On Error GoTo 0
        Debug.Print Now
        If ErrNum = 0 Then
            '--- arrêt procédure
            MsgBox "Fichier " & sFileName & "  refermé.", , "Pour info"
        ElseIf ErrNum = 70 Then
            '--- relance procédure
            Application.OnTime Now + TimeValue("00:00:15"), "EstRefermé", , True
        Else
            MsgBox "Anomalie sur dossier " & sDir, , "Pour info"
        End If
    End Sub
    Cordialement.
    Fichiers attachés Fichiers attachés

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 86
    Par défaut
    Bonjour,

    Le classeur que vous m'avez envoyé fonctionne à merveille et je vous en remercie.

    Par contre, je souhaiterai améliorer cela en utilisant DropBox, avec deux classeurs comme suit :

    L'emplacement du classeur B est (sur mon PC) :

    C:\DROPBOX\Dossier1\
    Et pour plus de précisions le nom de ce classeur se termine toujours par la lettre A (xxxA.xlsx)

    Un second classeur C est (sur mon PC) :
    C:\DROPBOX\Dossier2\
    Le nom de ce second classeur se termine toujours par la lettre T (xxxT.xlsx)

    Ces deux classeurs sont ouverts via Internet par deux tablettes sous Android. Et la version d'Excel qui est sur ces deux tablettes ne permet pas d'utiliser VBA.

    Quant au classeur A qui est également sur mon PC, lui est enregistré dans :
    D:\TOURNOI A 7\
    Ce classeur est ouvert toute la durée du tournoi. Et dans ce classeur j'ai besoin d'être informé lorsque, l'un ou l'autre, des classeurs qui sont sur les tablettes, est fermé.

    Je n'arrive pas à utiliser votre fichier dans cette configuration avec DropBox.
    En effet, lorsque ces deux classeurs sont ouverts sur les tablettes, Excel les trouvent fermés sur mon PC.

    J'espère avoir été assez précis.

    Merci et bonne journée

  4. #4
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 436
    Par défaut
    Bonjour,

    D'après ce que j'ai pu comprendre, avec Dropbox celui qui ouvre le fichier sur un autre pc n'ouvre pas le fichier qui se trouve sur le pc mais travaille sur une copie qui en faite sur sa propre machine et c'est quand il referme et enregistre ce fichier qu'il y a remplacement (mise à jour, synchronisation) du fichier qui se trouve sur le pc de départ par celui qui vient d'être modifié.

    N'ayant pas une configuration de machines permettant de vérifier, voir si cette autre façon de faire fonctionne: signalement quand une version modifiée du fichier apparait.
    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
    Option Explicit
     
    Public DateFichierA As Date, DateFichierT As Date
     
    Sub SuiviFichierA()
        Dim sDir As String, sFileName As String
        Dim fs As Variant, f As Variant
        sDir = "C:\DROPBOX\Dossier1\"                       '--- à adapter, bien mettre une \ en fin
        If Dir(sDir, vbDirectory) <> "." Then
            MsgBox "Ce répertoire " & sDir & vbLf & "n'existe pas ou est mal présenté."
        End If
        sFileName = sDir & Dir(sDir & "*A.xlsx")            '--- à adapter
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set f = fs.GetFile(sFileName)
        If DateFichierA = 0 Then
            DateFichierA = f.DateLastModified
            'Debug.Print "DateFichierA: "; DateFichierA
            Application.OnTime Now + TimeValue("00:00:15"), "SuiviFichierA", , True
        Else
            If f.DateLastModified = DateFichierA Then
                '--- relance procédure
                'Debug.Print "Relance à " & Now
                Application.OnTime Now + TimeValue("00:00:15"), "SuiviFichierA", , True
            Else
                '--- arrêt procédure
                'Debug.Print "Terminé à " & Now
                MsgBox "Fichier " & sFileName & "  modifié.", , "Pour info"
            End If
        End If
        Set f = Nothing
        Set fs = Nothing
    End Sub
    Cordialement.
    Fichiers attachés Fichiers attachés

  5. #5
    Membre actif
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 86
    Par défaut
    Bonjour EricDgn,

    Effectivement DropBox fonctionne bien comme tu l'as indiqué et ton code fonctionne très bien.

    Par contre, je souhaiterai être alerté lorsque les classeurs sont fermés et pas uniquement lorsqu'ils sont enregistrés.

    Cordialement.

  6. #6
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 436
    Par défaut
    A mon avis ce n'est pas possible: impossible de savoir à partir du pc ce qui se passe sur une tablette.

    Cordialement.

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

Discussions similaires

  1. [XL-2010] Envoyer un mail lorsqu'un fichier Excel est enregistré
    Par MichaSarah dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/11/2016, 13h28
  2. Réponses: 2
    Dernier message: 19/03/2008, 20h34
  3. Une msgBox lorsque le fichier est en lecture seule..
    Par ncazanav dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/01/2008, 12h47
  4. Réponses: 15
    Dernier message: 20/09/2007, 18h26
  5. Message à l'ouverture fichier Excel
    Par Kloun dans le forum Access
    Réponses: 1
    Dernier message: 23/02/2007, 13h52

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