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…
- Démarrez Visual Basic Editor (touches
ALT
+F11
). - Commencez par établir une référence à Microsoft Excel Objects, dans le menu Outils / Références.
- Cliquez sur le menu Insertion / Module, puis recopiez dans le module le code suivant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
' --- ' TEST DE L'EXISTENCE D'UNE FEUILLE EXCEL ' --- Function FeuilleExiste( _ wbk As Excel.Workbook, _ ByVal strFeuille As String) As Boolean Dim sht As Excel.Worksheet For Each sht In wbk.Sheets If sht.Name = strFeuille Then FeuilleExiste = True Exit Function End If Next FeuilleExiste = False End Function ' --- ' TEST DE L'EXISTENCE D'UNE FEUILLE EXCEL - VARIANTE ' --- Function FeuilleExiste2( _ wbk As Excel.Workbook, _ ByVal strFeuille As String) As Boolean Dim strNom As String On Error Resume Next strNom = wbk.Sheets(strFeuille).Name FeuilleExiste2 = (Err.Number = 0) End Function |
Test des fonctions
Dans le même module, recopiez ce bloc de code, puis exécutez-le :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
Sub TestExistenceFeuille() Dim xl As Excel.Application Dim wbk As Excel.Workbook ' Démarrer Excel et le rendre visible Set xl = New Excel.Application xl.Visible = True ' Créer un classeur pour le test Set wbk = xl.Workbooks.Add() ' Test de l'existence d'une feuille If FeuilleExiste(wbk, "Feuil1") Then MsgBox "La feuille Feuil1 existe.", vbInformation Else MsgBox "Feuille Feuil1 introuvable !", vbExclamation End If ' Variante If FeuilleExiste2(wbk, "Feuil4") Then MsgBox "La feuille Feuil4 existe.", vbInformation Else MsgBox "Feuille Feuil4 introuvable !", vbExclamation End If ' Fermer le classeur sans l'enregistrer wbk.Close False Set wbk = Nothing ' Quitter Excel xl.Quit Set xl = Nothing End Sub |
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…
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
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 :