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 :

Vérifier si un classeur n’est pas ouvert, sur ce poste, un autre poste ou une autre instance [XL-2003]


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
    Inscrit en
    Novembre 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 116
    Par défaut Vérifier si un classeur n’est pas ouvert, sur ce poste, un autre poste ou une autre instance
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlApp.Workbooks.Open "U:\XX\XX\bdd.xls"
    Le programme va chercher le fichier sur le réseau.
    Par contre lorsque le fichier est ouvert sur un autre PC, le programme l'ouvre et ouvre la boite "enregistrer sous".
    Il n'y a pas un code qui permet d'ouvrir une fenetre d'erreur, lorsque le fichier est deja ouvert?

    Merci de votre aide

  2. #2
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    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 403
    Par défaut
    Bonjour,

    essaie ceci mais sans garantie:

    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
     
    Sub test
        If Not CheckExcelFileOpen("U:\XX\XX\bdd.xls") Then
           'code si le fichier n'est pas ouvert
        End If
     
    End sub
     
     
    Function CheckExcelFileOpen(fichier As String) As Boolean
        Dim x As Integer
     
        On Error Resume Next
        x = FreeFile()
     
        Open fichier For Input Lock Write As #x
        Close x
     
        If Err.Number = 0 Then CheckExcelFileOpen = False
        If Err.Number = 70 Then CheckExcelFileOpen = True
     
        On Error GoTo 0
    End Function

  3. #3
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    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
    Sub Testeur()
    Dim wbkAtester As Workbook
    Dim strChemin As String
    Dim strNom As String
    '********************* rajouter pour si macro dans cible : Application.EnableEvents = False / True
    strNom = "Fichier a tester.xls"
    On Error Resume Next
    Set wbkAtester = Workbooks(strNom) 'Si le classeur n'est pas ouvertdans cette instance, on affecte à la variable Objet un objet qui n'existe pas dans l'Application. Le on Error Resume next passe à la lignee suivante, wbkAtester est donc resté à Nothing.
    On Error GoTo 0
    If wbkAtester Is Nothing Then
        MsgBox "Ce Classeur n'est pas ouvert dans cette instance d'Excel"
    Else
        MsgBox "Déjà Ouvert dans cette instance d'Excel!"
        Set wbkAtester = Nothing
        Exit Sub
    End If
     
    strChemin = "E:\+ Cliparts\"
    'strChemin = "\\Toto-PC\Users\Public\Documents\"
    Set wbkAtester = Workbooks.Open(strChemin & strNom)
        If wbkAtester.ReadOnly Then
            MsgBox "Déjà Ouvert sur un autre poste ou dans une autre instance"
            wbkAtester.Close
        Else
            MsgBox "Ce Classeur n'est pas ouvert sur un autre poste ou dans une autre instance !"
            wbkAtester.Close 'ligne à activer ou non selon le test voulu classeur reste ouvert ou non
        End If
    End Sub
    cordialement,

    Didier

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 116
    Par défaut
    Merci marche parfaitement..


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

Discussions similaires

  1. [AC-2010] Vérifier le nom saisi s'il est pas déjà le nom d'un champ d'une table
    Par freeman3869 dans le forum VBA Access
    Réponses: 4
    Dernier message: 20/05/2015, 09h21
  2. Vérifier si un classeur Excel déterminé est ouvert
    Par ouskel'n'or dans le forum Contribuez
    Réponses: 2
    Dernier message: 15/09/2008, 15h31
  3. Réponses: 4
    Dernier message: 15/03/2007, 20h32
  4. erreur d'execution 3704, ...:objet n'est pas ouvert
    Par cari dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 29/11/2005, 15h44

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