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 :

Comptage du nombre de feuilles dans un classeur


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2018
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2018
    Messages : 37
    Par défaut Comptage du nombre de feuilles dans un classeur
    Alors me revoilà,

    Après ma question sur la permutations de colonnes, je continue d'améliorer ma macro de mise en forme de fichiers de mesures.

    Je vous épargne les détails, mais je souhaite (pq pas) afficher une Msgbox m'indiquant le nombre de feuilles dans mon classeur.
    J'ai fouillé un peu partout sur Google, et j'en suis arrivé ici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub nb_feuilles_du_classeur()
    Dim nbfeuilles As Long
    nbfeuilles = ThisWorkbook.Sheets.Count
    MsgBox ("Ce Classeur contient maintenant : " & nbfeuilles & " Feuille(s)")
     
    End Sub
    Par contre, quand je test sur un classeur bidon, avec 3 feuilles par exemple, la Msgbox me renvoie qu'il n'y a qu'1 feuille(s).

    D'où vient mon erreur svp?

    Merci

    Bertrand

  2. #2
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour Bertrand, bonjour le forum,

    Ton code prend en cause le classeur dans lequel il se trouve (ThisWorkbook). Remplace ThisWorkbook par ActiveWorkbook et le code prendra en compte le classeur actif...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub nb_feuilles_du_classeur()
    Dim nbfeuilles As Long
    nbfeuilles = ActiveWorkbook.Sheets.Count
    MsgBox ("Ce Classeur contient maintenant : " & nbfeuilles & " Feuille(s)")
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2018
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2018
    Messages : 37
    Par défaut
    Merci Thautheme,

    Cela marcche.
    par contre, je n'ai pas compris la différence entre ThisWorkSheet et ActiveWorkSheet...

  4. #4
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Re,

    Je n'ai pas parlé de ThisWorksheet (qui n'existe pas) mais de ThisWorkbook, ni d'ActiveWorksheet mais d'ActiveWorkbook, qui font référence à des classeur (fichiers Excel) et pas à des onglets (ou feuilles)...

    Imaginons que la macro se trouve dans le classeur A.xlsm et que tu as un autre classeur ouvert, B.xlsm. A contient 3 onglet et B n'en contient qu'un seul. B est le classeur actif.
    ThisWorkbook ne contera toujours que 3 onglets (quel que soit le classeur actif), car elle fait référence au classeur où se trouve la macro. ActiveWorkbook contera 1 seul onglet et, si A redevient le classeur actif, alors elle en contera 3.
    Est-ce plus clair ? c'est bien pratique quand tu travailles avec plusieurs classeur d'utiliser ThisWorkbook et ActiveWorkbook pour les différencier.


  5. #5
    Expert éminent 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
    Par défaut
    Citation Envoyé par bert35 Voir le message
    par contre, je n'ai pas compris la différence entre ThisWorkSheet et ActiveWorkSheet...
    Prends l'habitude de rechercher dans l'aide VBA (la touche F1 est magique).
    https://msdn.microsoft.com/library/6...ice.15%29.aspx
    https://msdn.microsoft.com/library/0...ice.15%29.aspx

Discussions similaires

  1. Ole Excel et nombre de feuille dans un classeur
    Par kurul1 dans le forum C++Builder
    Réponses: 2
    Dernier message: 11/10/2006, 11h23
  2. [VBA-E]Existence d'une feuille dans un classeur EXCEL
    Par marie10 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 06/04/2006, 15h58
  3. Comptage du nombre d'objets dans une image
    Par fire.stone dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 27/02/2006, 21h26
  4. VB6 : création de feuilles dans un classeur Excel
    Par getea85 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 04/11/2005, 16h37
  5. Changer de feuille dans un classeur Excel
    Par couiss dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 09/05/2005, 10h05

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