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 :

Tester si un fichier est ouvert sur mon PC


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 725
    Points : 184
    Points
    184
    Par défaut Tester si un fichier est ouvert sur mon PC
    Bonjour,

    J'ai cette macro qui fonctionne presque, mais il y a un petite erreur de positionnement

    Lorsque le fichier n'est pas ouvert sur mon PC la MsgBox "Pas ouvert" s'affiche

    Par contre si le fichier est ouvert les 2 msgbox s'affiche

    Merci pour votre aide
    Philippe


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Macro1() 'Vérifier si le fichier OLD est ouvert
    Dim Classeur_OLD As Workbook
        For Each Classeur_OLD In Workbooks
            If Classeur_OLD.Name = "old.xlsm" Then
                MsgBox "ouvert"
    End If
            Next Classeur_OLD
                If Classeur_OLD Is Nothing Then
                    MsgBox "Pas ouvert"
    End If
    End Sub

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par goninph Voir le message
    Bonsoir,

    Essayez cette fonction :

    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
     
    Sub Test()
     
        MsgBox DejaOuvert("XXXX.xlsm")
     
     
    End Sub
     
    Function DejaOuvert(ByVal NomClasseur_Old As String) As Boolean 
    Dim I As Integer
     
        DejaOuvert = False
        For I = 1 To Workbooks.Count
            If Workbooks(I).Name = NomClasseur_Old Then DejaOuvert = True
        Next I
     
    End Function

  3. #3
    Membre habitué Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 725
    Points : 184
    Points
    184
    Par défaut
    Hello,


    Merci, mais je veux juste savoir si le fichier old.xlsm est ouvert sur mon PC, la macro est dans le fichier new.xlsm

    Le but est de lancer une macro suite à un événement dans le fichier new.xlsm à la condition que le fichier old.xlsm est déjà ouvert sur mon PC.

    Merci et bon dimanche
    Philippe

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par goninph Voir le message
    Bonjour,

    Vous avez la réponse dans cette ligne où vous remplacez "XXXX.xlsm" par le nom de votre fichier. Il vous suffit de mettre cette ligne dans votre code principal en remplaçant le Msgbox par un If .... Then.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     MsgBox DejaOuvert("XXXX.xlsm")

  5. #5
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Macro1() 'Vérifier si le fichier OLD est ouvert
        Dim Classeur_OLD As Workbook, Ouvert As Boolean
     
        Ouvert = False
        For Each Classeur_OLD In Workbooks
            If Classeur_OLD.Name = "old.xlsm" Then Ouvert = True
        Next Classeur_OLD
        If Ouvert Then MsgBox "ouvert" Else MsgBox "Pas ouvert"
     
    End Sub
    Pour optimiser, j'aurais pu mettre un Exit For mais c'est plus simple à comprendre ainsi.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  6. #6
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, voir ici

  7. #7
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    Bonjour
    le probleme c'est que si ton old classeur est ouvert dans une autre instance de excel que celle du fichier new avec la macro la boucle (dans la collection Workbooks) ne le trouvera pas
    pas d'autre choix que d'utiliser certaines api windows
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  8. #8
    Membre habitué Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 725
    Points : 184
    Points
    184
    Par défaut
    Bonjour,

    Merci à tous ça marche du tonnerre, manquai juste un end if à la fin

    Merci à tous
    Philippe

    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
    Option Explicit
     
    Sub Macro1() 'Vérifier si le fichier OLD est ouvert
        Dim Classeur_OLD As Workbook, Ouvert As Boolean
        Ouvert = False
        For Each Classeur_OLD In Workbooks
            If Classeur_OLD.Name = "old.xlsm" Then Ouvert = True
        Next Classeur_OLD
        If Ouvert Then
    'Action si le fichier est ouvert
        MsgBox "Fichier ouvert"
        Else
    'Action si le fichier est fermé
        MsgBox "Fichier fermé"
    End If
    End Sub










    Citation Envoyé par Menhir Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Macro1() 'Vérifier si le fichier OLD est ouvert
        Dim Classeur_OLD As Workbook, Ouvert As Boolean
     
        Ouvert = False
        For Each Classeur_OLD In Workbooks
            If Classeur_OLD.Name = "old.xlsm" Then Ouvert = True
        Next Classeur_OLD
        If Ouvert Then MsgBox "ouvert" Else MsgBox "Pas ouvert"
     
    End Sub
    Pour optimiser, j'aurais pu mettre un Exit For mais c'est plus simple à comprendre ainsi.

  9. #9
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par goninph Voir le message
    Merci à tous ça marche du tonnerre, manquai juste un end if à la fin
    Avec l'intégralité de l'instruction If sur une seule ligne de code, le End If était inutile. Mon code était fonctionnel.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

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

Discussions similaires

  1. Visual basic - Tester si un fichier est ouvert
    Par juliep dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 16/03/2015, 19h19
  2. Réponses: 6
    Dernier message: 07/07/2014, 12h13
  3. Tester si un fichier est ouvert
    Par aragog dans le forum Débuter
    Réponses: 13
    Dernier message: 17/04/2013, 16h49
  4. Tester si 1 fichier est ouvert
    Par Jeanvaljean44 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 14/08/2008, 09h43
  5. Réponses: 2
    Dernier message: 10/01/2007, 17h28

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