VBA & Excel: Vérifier si une Feuille existe

Dans cet article, vous trouverez une fonction VBA très utile – vérification si une Feuille particulière existe dans le Classeur Excel. Cette fonction peut être utilisée telle quelle, il vous suffit de la copier dans un Module de votre Projet VBA.

VBA – vérifier si une Feuille existe

Pour éviter des erreurs lors d'exécution d'un code VBA, il est préférable de s'assurer que tous les Objets (Classeurs, Feuilles,…) qui doivent être manipulés existent bel et bien. Rien de plus pénible qu'une macro bloquée parce que l'utilisateur a supprimé une des Feuilles requises. Il est préférable de s'assurer soi-même si tous les éléments nécessaires à la macro sont présents et si ce n'est pas le cas, cela nous permettra de terminer la macro "proprement" avec (éventuellement) un message d'erreur indiquant ce qui empêche l'exécution correcte de la macro. Ceci fait tout simplement partie des bonnes pratiques de la programmation

La fonction VBA qui suit teste si la Feuille (dont le nom est utilisé comme argument de la fonction), est présente dans le Classeur. Elle retourne VRAI ou FAUX (ou TRUE / FALSE) en tant que Boolean.

Et voici donc le code de la fonction VBA prêt à l'utilisation:

Public Function FeuilleExiste(FeuilleAVerifier As String) As Boolean
'fonction qui vérifie si la "FeuilleAVerifier" existe dans le Classeur actif
'par Excel-Malin.com ( https://excel-malin.com )

On Error GoTo SiErreur
Dim Feuille
    
    FeuilleExiste = False
    For Each Feuille In Sheets
        If UCase(Feuille.Name) = UCase(FeuilleAVerifier) Then
            FeuilleExiste = True
            Exit Function
        End If
    Next Feuille
Exit Function

SiErreur:
    FeuilleExiste = CVErr(xlErrNA)
End Function

 

Exemple d'utilisation de la fonction

L'exemple suivant teste si la Feuille "Test_1" est présente dans le Classeur et si oui, la renomme en "Test_2". Si la Feuille n'existe pas, un message est affiché à l'utilisateur.

Attention: pour faire fonctionner cet exemple, vous avez besoins des deux codes VBA (le code de la fonction plus haut & le code de l'exemple qui suit).

Sub Test()
'exemple d'utilisation de la fonction "FeuilleExiste"

    If FeuilleExiste("Test_1") = True Then
        Sheets("Test_1").Name = "Test_2"
    Else
        MsgBox "La Feuille 'Test_1' n'existe pas!"
    End If
    
End Sub

 

Attention aux solutions "trop" faciles

Vous allez peut-être trouver cette fonction "longue" par rapport à ce qu'elle fait. Et c'est vrai que sur internet, vous pouvez trouver des solution plus "courtes" mais attention aux solutions trop faciles!

Nombreuses fonctions que vous pouvez trouver sur le net utilisent la méthode "directe" – c'est-à-dire activer (Activate) directement la Feuille que l'on veut tester et ensuite vérifier si la fonction fonctionne ou se solde par une erreur. Si la Feuille "MaFeuille" n'existe pas, le code Sheets("MaFeuille").Activate va déclencher une erreur. Et certains utilisent ce déclenchement d'erreur comme preuve que la Feuille en question n'existe pas…

Mais est-ce la meilleure manière de créer une programme? Dans des macros / applications VBA plus complexes, cela ne peut que créer des problèmes. Donc, cette solution "miracle" est à utiliser en toute connaissance de cause…

Le code VBA qui suit est la fonction "courte" proposée par Cduigou dans les commentaires. Elle n'active pas les feuilles mais utilise la méthode de la "preuve par l'erreur". Vous pouvez donc choisir laquelle vous voulez utiliser.

Public Function FeuilleExiste(FeuilleAVerifier As String) As Boolean
'fonction qui vérifie si la "FeuilleAVerifier" existe dans le Classeur actif

On Error Resume Next
Sheets(FeuilleAVerifier).Name = Sheets(FeuilleAVerifier).Name
FeuilleExiste = (Err.Number = 0)
End Function

Pourrait également vous intéresser

Et pour terminer, voici quelques autres articles qui pourraient vous être utiles…

 

34 0

Laissez un commentaire

Votre adresse e-mail ne sera pas publiée.

4 commentaires sur “VBA & Excel: Vérifier si une Feuille existe”