Vérifier l’existence d’une feuille Excel

Dans le cadre du pilotage d’Excel par Automation, comment vérifier si une feuille de calcul existe dans un classeur donné ?

Principe

Si vous pilotez Excel par Automation, vous aurez peut-être besoin de savoir si une feuille précise existe.

Voici 2 fonctions qui font la même chose (vous en garderez une seulement, en principe) :

  • Vous leur fournissez le classeur Excel (une instance du classeur concerné) à inspecter, ainsi que le nom de la feuille dont il faut vérifier l’existence (sous forme de chaîne).
  • Les fonctions renvoient True si la feuille existe, False sinon.

Deux fonctions pour le prix d’une !

Comme d’habitude…

  1. Démarrez Visual Basic Editor (touches ALT + F11).
  2. Commencez par établir une référence à Microsoft Excel Objects, dans le menu Outils / Références.
  3. Cliquez sur le menu Insertion / Module, puis recopiez dans le module le code suivant :

Test des fonctions

Dans le même module, recopiez ce bloc de code, puis exécutez-le :

Cette procédure démarre Excel, crée un nouveau classeur (qui contient donc par défaut les feuilles Feuil1, Feuil2 et Feuil3), et utilise les 2 fonctions pour tester l’existence de Feuil1 et Feuil4. Par conséquent, le premier MsgBox doit confirmer l’existence de Feuil1, le second doit indiquer que Feuil4 est introuvable…

Vous aimerez aussi...

2 réponses

  1. Toto dit :

    Bonjour,

    Si on boucle sur les .Sheets comment une feuille de .Sheets pourraient ne pas exister…?
    J’ai été confronté au cas de figure, en bouclant sur les feuilles, une feuille « n’existe pas »…
    Première fois que je suis confronté à ça après 7 ans de vba…

    Quelqu’un aurait-il une explication ?
    Toto

    • Hervé Inisan dit :

      Quelle est le code exact ?
      Sinon, est-ce que ça peut être un problème de casse ? Par exemple, le code ci-dessous échoue toujours sur le If, le « Trouvé » ne s’affichera pas :

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *