Comment vérifier si une feuille existe à l’aide de VBA ?
Si vous souhaitez créer une feuille, la supprimer, la déplacer ou la copier, vous devez savoir si cette feuille existe ou non.
Pour écrire du code pour vérifier si la feuille existe ou non, vous avez besoin d’une boucle qui parcourt chaque feuille du classeur et correspond au nom que vous avez fourni. Mais voici le truc, vous pouvez utiliser deux boucles différentes pour cela ( For Next et For Each ), et aujourd’hui nous utiliserons les deux.
Dans ce didacticiel, nous examinerons différentes façons de procéder. Assurez-vous donc d’avoir l’ onglet développeur sur votre ruban et ouvrez l’ éditeur VBA pour écrire ce code.
Vérifier si une feuille existe dans le classeur actuel
Avec cette boucle, vous pouvez faire référence à toutes les feuilles du classeur et les parcourir une par une pour faire correspondre le nom de la feuille avec le nom de la feuille que vous souhaitez rechercher.
Suivez ces étapes:
- Tout d’abord, déclarez une variable à utiliser pour la feuille lors de l’exécution de la boucle et pour stocker le nom de la feuille que vous souhaitez rechercher.
- Ensuite, écrivez une ligne de code pour une zone de saisie pour entrer le nom de la feuille que vous souhaitez rechercher.
- Après cela, démarrez votre boucle avec le mot-clé For Each. Et utilisez la variable pour faire référence à chaque feuille de calcul du classeur.
- À partir de là, vous devez écrire une instruction IF THEN ELSE pour faire correspondre le nom de la feuille avec le nom que vous avez entré dans la zone de saisie, puis afficher une boîte de message si la correspondance est trouvée et quitter la procédure.
- À la fin, une boîte de message pour vous informer s’il n’y a pas de correspondance trouvée.
Liens utiles : Exécuter une macro – Enregistreur de macros – Visual Basic Editor – Manuel de macros personnelles
Code complet :
Sub vba_check_sheet()
Dim sht As Worksheet
Dim shtName As String
shtName = InputBox(Prompt:="Enter the sheet name", _
Title:="Search Sheet")
For Each sht In ThisWorkbook.Worksheets
If sht.Name = shtName Then
MsgBox "Yes! " & shtName & " is there in the workbook."
Exit Sub
End If
Next sht
MsgBox "No! " & shtName & "is not there in the workbook."
End Sub
Laissez-moi vous expliquer comment cela fonctionne : lorsque vous exécutez ce code, un message s’affiche dans lequel vous devez saisir le nom de la feuille que vous souhaitez rechercher.
Après cela, il parcourt chaque feuille pour faire correspondre le nom avec le nom que vous avez entré, et si le nom correspond à une feuille, il vous montre un message et un autre message s’il n’y a pas de correspondance.
Voici un autre code pour vérifier si une feuille existe ou non.
Sub vba_check_sheet()
Dim sht As Worksheet
Dim shtName As String
Dim i As Long
i = Sheets.Count
shtName = InputBox(Prompt:="Enter the sheet name", _
Title:="Search Sheet")
For i = 1 To i
If Sheets(i).Name = shtName Then
MsgBox "Yes! " & shtName & " is there in the workbook."
Exit Sub
End If
Next i
MsgBox "No! " & shtName & " is not there in the workbook."
End Sub
Ce code utilise la boucle FOR NEXT et utilise le nombre total de feuilles dans le classeur, et sur cette base, effectuez une boucle dans chaque feuille qui correspond au nom avec le nom que vous avez entré.
Vérifier si la feuille existe dans le classeur fermé
Dans le code suivant, vous avez une boucle qui recherche le nom de la feuille dans un classeur fermé. Pour faire référence au fichier, nous avons utilisé l’adresse du fichier.
Sub vba_check_sheet()
Dim wb As Workbook
Dim sht As Worksheet
Dim shtName As String
shtName = InputBox(Prompt:="Enter the sheet name", _
Title:="Search Sheet")
Application.ScreenUpdating = False
Set wb = Workbooks.Open _
("C:UsersDellDesktopsample-file.xlsx")
For Each sht In wb.Worksheets
If sht.Name = shtName Then
wb.Close SaveChanges:=True
MsgBox "Yes! " & shtName & " is there in the workbook." _
, vbInformation, "Found"
Exit Sub
End If
Next sht
Application.ScreenUpdating = False
MsgBox "No! " & shtName _
& " is not there in the workbook.", _
vbCritical, "Not Found"
End Sub
Lorsque vous exécutez cette macro, elle ouvre le fichier à l’arrière lorsque vous avez désactivé la mise à jour de l’écran, et une fois qu’elle parcourt toutes les feuilles, vous avez le code pour activer la mise à jour de l’écran.
Remarque : Comme vous pouvez le voir, dans l’adresse d’emplacement du fichier, nous avons l’extension de fichier, ce qui signifie que vous devez avoir l’extension correcte du fichier pour vous y référer.