Comment supprimer une feuille en utilisant VBA ?

Pour supprimer une feuille à l’aide de VBA, vous devez utiliser la méthode VBA Delete. Vous devez spécifier la feuille que vous souhaitez supprimer, puis utiliser cette méthode. Disons que si vous voulez supprimer le « Sheet1 », alors vous devez mentionner sheet1 puis tapez un point (.) et à la fin, tapez « Delete ».

Dans ce tutoriel, nous verrons différentes manières que vous pouvez utiliser pour supprimer une feuille à l’aide d’un code VBA. Assurez-vous d’avoir l’ onglet développeur sur le ruban à partir d’ici, vous pouvez accéder à l’éditeur de base visuel .

Supprimer une feuille en utilisant son nom

Chaque feuille a un nom et vous pouvez utiliser écrire un code pour supprimer une feuille en utilisant le nom. Donc, disons que vous voulez supprimer la feuille de calcul « Données », le code serait :

Sub vba_delete_sheet()
Sheets("Data").Delete
End Sub
écrire-un-code-supprimer

Supprimer une feuille sans avertissement (invite)

Lorsque vous supprimez une feuille de calcul, Excel affiche un message pour confirmer si vous souhaitez la supprimer ou l’annuler. Et lorsque vous utilisez un code VBA, dans ce cas, Excel le fera également.

boîte de dialogue pour confirmer la suppression ou l'annulation

Pour résoudre ce problème, vous pouvez désactiver la mise à jour de l’écran pour supprimer une feuille, puis l’activer.

Application.DisplayAlerts = False
Sheets("Data").Delete
Application.DisplayAlerts = True
désactiver l'alerte de la boîte de dialogue

Nom de la feuille d’une cellule

Supposons maintenant que vous souhaitiez utiliser une valeur de cellule pour utiliser le nom de la feuille de calcul. Dans ce cas, vous devez utiliser l’ objet de plage VBA pour le faire.

utiliser-une-valeur-de-cellule-pour-utiliser-le-nom-de-la-feuille-de-calcul

Supprimer la feuille à l’aide du numéro de feuille

C’est exact. Vous pouvez utiliser le numéro de la feuille pour la supprimer. Voici le code.

Sub vba_delete_sheet()
Sheets(1).Delete
End Sub
utiliser-le-numéro-de-feuille-pour-le-supprimer

Supprimer la feuille active

Pour supprimer la feuille active, vous pouvez utiliser l’objet « ActiveSheet » au lieu d’utiliser le nom de la feuille pour spécifier la feuille.

ActiveSheet.Delete
pour-supprimer-la-feuille-active-utiliser-la-feuille-active

Comme je l’ai dit, cela supprime la feuille active et vous pouvez l’activer avant de la supprimer. Mais forcément, vous n’avez pas besoin de le faire car vous pouvez vous référer à une feuille et la supprimer comme nous l’avons vu au début de ce tutoriel.

Vérifiez si la feuille existe avant de la supprimer

Vous pouvez également écrire du code de manière à ce qu’il puisse vérifier si la feuille existe ou non, puis la supprimer.

Sub check_sheet_delete()
Dim ws As Worksheet
Dim mySheet As Variant
mySheet = InputBox("enter sheet name")
Application.DisplayAlerts = False
For Each ws In ThisWorkbook.Worksheets
    If mySheet = ws.Name Then
      ws.Delete
    End If
Next ws
Application.DisplayAlerts = True
End Sub
écrire-un-code-pour-vérifier-si-la-feuille-existe

Dans ce code, vous avez FOR EACH pour parcourir toutes les feuilles de calcul. Et ensuite, une IF STATEMENT pour supprimer la feuille si son nom est égal au nom que vous avez tapé dans la zone de saisie.

Supprimer toutes les feuilles de calcul du classeur

Je suis sûr que vous avez cette question en tête, mais je crains qu’il ne soit impossible de supprimer toutes les feuilles de calcul que vous avez dans le classeur. Il vous reste au moins une feuille de travail.

Mais j’ai trouvé une solution à ce problème. Vous pouvez insérer une nouvelle feuille vierge, puis supprimer toutes celles qui s’y trouvent déjà.

Voici le code : Ce code ajoute une nouvelle feuille et supprime toutes les autres feuilles.

Sub vba_delete_all_worksheets()
Dim ws As Worksheet
Dim mySheet As String
mySheet = "BlankSheet-" & Format(Now, "SS")
Sheets.Add.Name = mySheet
Application.DisplayAlerts = False
For Each ws In ThisWorkbook.Worksheets
    If ws.Name <> mySheet Then
      ws.Delete
    End If
Next ws
Application.DisplayAlerts = True
End Sub

Ajouter un commentaire

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