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 :

Nombre de classeurs ouverts


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Par défaut Nombre de classeurs ouverts
    D'habitude je récupère le nombre de classeurs ouverts avec l'instruction : .

    Je viens de me rendre compte qu'elle ne donne pas le même résultat si elle est placée dans un module ou dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Workbook_Open()
    ou dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Savez vous pourquoi?
    Avez vous une solution qui marche dans tous les cas?

    Merci

    PPz

  2. #2
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    Bonjour

    essaye cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       MsgBox Application.Workbooks.Count
    comme cela même si tu ouvres plusieurs fenêtres pour un classeur ce ne dérange pas

  3. #3
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131
    Par défaut
    Citation Envoyé par wilfried_42 Voir le message
    Bonjour

    essaye cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       MsgBox Application.Workbooks.Count
    comme cela même si tu ouvres plusieurs fenêtres pour un classeur ce ne dérange pas
    OK mais seulement s'il se contente de ne récupérer que les classeurs de l'instance.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Par défaut Ok avec Workbooks.count
    Merci de votre aide, cela marche avec Workbooks.count

    Mais pourquoi diable Windows.count donne t-il le bon résultat quand il est dans un Module et un mauvais quand il se trouve dans le code exécuté à l'ouverture du classeur Excel?
    En fait j'ai besoin d'avoir le nombre de classeur ouverts dès l'ouverture.

    Merci
    PPz

  5. #5
    Membre chevronné Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Par défaut
    Alors fait appel à (avec le ta sub qui compte que tu places dans un module.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
        Call ProcedureQuiCompte
    End Sub
    Comme ça, tu auras ton nombre à l'ouverture mais sera compté dans un module!

    Et tu peux utiliser une fonction si tu veux que le nombre soit renvoyé!

    Bonne journée!

  6. #6
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 131
    Par défaut
    Citation Envoyé par PPz78 Voir le message
    Merci de votre aide, cela marche avec Workbooks.count

    Mais pourquoi diable Windows.count donne t-il le bon résultat quand il est dans un Module et un mauvais quand il se trouve dans le code exécuté à l'ouverture du classeur Excel?
    En fait j'ai besoin d'avoir le nombre de classeur ouverts dès l'ouverture.

    Merci
    PPz
    Si tu entends par «dès l'ouverture», «depuis l'ouverture du classeur»,
    alors crée une image à l'ouverture du classeur depuis le module ThisWorkbook afin de pouvoir comparer ultérieure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Workbook_Open()
        Dim x As Long
     
        For x = 1 To Application.Workbooks.Count
            ReDim Preserve Wks(1 To x)
            Set Wks(x) = Application.Workbooks(x)
        Next
    End Sub
    appelle ensuite la function suivante (installée dans un module standart) afin d'effectuer la comparaison
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Wks() As Workbook
     
    Function CompareWorkbooks()
        Dim wk As Workbook, x As Long, existWk As Boolean
        For Each wk In Application.Workbooks
            existWk = False
            For x = LBound(Wks) To UBound(Wks)
                If ObjPtr(wk) = ObjPtr(Wks(x)) Then existWk = True: Exit For
            Next
            If Not existWk Then MsgBox "Le classeur «" & wk.Name & "» a été ouvert depuis l'ouverture"
        Next
    End Function
    En pratiquant ainsi prendre en compte si des classeurs ont été ouverts et/ou fermés depuis l'ouverture et lesquels.

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

Discussions similaires

  1. [XL-2002] Compter le nombre de classeur ouvert et visible
    Par zoumzoum59 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/02/2015, 11h23
  2. [Toutes versions] Transformer les noms abrégés en anglais dans un classeur ouvert avec une version française en nombres
    Par Pierre Dumas dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 04/02/2011, 08h08
  3. limiter le nombres de fenetres ouvertes de IE
    Par Essilife dans le forum IE
    Réponses: 5
    Dernier message: 31/03/2006, 14h29
  4. Nombre de fichiers ouverts simultanément
    Par matrixfan dans le forum C++Builder
    Réponses: 3
    Dernier message: 27/05/2002, 17h47

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