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 :

Test si un classeur est ouvert sans Gestion d'erreur


Sujet :

Macros et VBA Excel

  1. #1
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

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

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut Test si un classeur est ouvert sans Gestion d'erreur
    Bonjour,
    peut-on tester si un classeur est déjà ouvert sans utiliser On Error ?

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonjour, Godzetla,

    Tu n'en parles pas, mais je suppose que tu veux savoir y compris s'il a été ouvert depuis ailleurs que ton appli ?

    Essaye ceci :

    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
    Private Declare Function lOpen Lib "kernel32" Alias "_lopen" (ByVal lpPathName As String, ByVal iReadWrite As Long) As Long
    Private Declare Function lClose Lib "kernel32" Alias "_lclose" (ByVal hFile As Long) As Long
    Private Function dejaouvert(FileName As String) As Boolean
        Dim lfic As Long, erreur As Long
        lfic = -1: erreur = 0
        lfic = lOpen(FileName, &H10)
        If lfic = -1 Then
            erreur = Err.LastDllError
        Else
            lClose (lfic)
        End If
        dejaouvert = (lfic = -1) And (erreur = 32)
    End Function
     
    Private Sub Command1_Click()
      MsgBox dejaouvert("d:\class1.xls") ' mets ici le chemin complet de TON classeur dont tu veux savoir s'il est déjà ouvert
    End Sub

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

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

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Bonjour Ucfoutu,

    et merci.

    Je n'avais pas besoin dasn ce cas de savoir si mon appli a été ouverte ailleurs, mais malgré tout, je prends bonne note de la solution pour ce cas de figure.

    Excellente journée;

    Je teste et je cloture dès que testé.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut Godzestla et le forum
    Autre proposition : une boucle qui teste si le nom des classeurs ouverts correspond.
    A+

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

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

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Salut Gorfael,
    merci pour ta réponse.
    Comment retrouves-tu le nom des classeurs ouverts ?

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut Godzestla et le forum
    tout simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub test()
    Dim C As Workbook
    For Each C In Workbooks
        MsgBox C.Name
    Next C
    End Sub
    A+

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

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

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Merci.

    Je mets cela dans ma collection "grandissante" de trucs importants.

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

Discussions similaires

  1. [XL-2010] Tester si un classeur est ouvert. Si non, l'ouvrir.
    Par Phouky dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 13/05/2014, 09h19
  2. [XL-2003] tester si un classeur est ouvert
    Par anfernus dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/07/2010, 18h21
  3. [XL-2002] Vérifier si un classeur est ouvert
    Par Ptikir dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/04/2009, 10h32
  4. Réponses: 9
    Dernier message: 22/10/2007, 13h34
  5. Test si un classeur est ouvert et plus si affinités...
    Par Azounet1529 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 30/07/2007, 17h41

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