J'utilise ce code pour supprimer des onglets existants car je veux les recréer tous les mois.
Dans mon exemple, mon onglet s'appelle Report DPU HFO, je voudrais pouvoir supprimer cet onglet qu'il s'appelle report, report dpu, report dpu hfo avec la même ligne de code. Le nom commence toujours par Report
PHP:
Application.DisplayAlerts = False
On Error Resume Next
ActiveWorkbook.Sheets("Report DPU HFO").Delete
On Error GoTo 0
Re : Suppression d'un onglet pouvant avoir plusieurs noms
Salut,
Essayes avec ceci :
Code:
Dim k%
Application.DisplayAlerts = False
For k = 1 To Sheets.Count
If InStr(1, Sheets(k).Name, "Report") > 0 Then Sheets(k).Delete
Next k
Application.DisplayAlerts = True
En gros, on boucle sur toutes les feuilles du classeur et on regarde si le nom de chacune des feuilles contient le mot Report, auquel cas, on la supprime.
Re : Suppression d'un onglet pouvant avoir plusieurs noms
Bonjour roulax, Romain
une autre solution comme ceci :
Code:
Option Explicit
Sub test()
Dim ws As Worksheet
Application.DisplayAlerts = False
For Each ws In Worksheets
If LCase(ws.Name) Like "report*" And Worksheets.Count > 1 Then
ws.Delete
Exit For
End If
Next ws
Application.DisplayAlerts = True
End Sub
Re : Suppression d'un onglet pouvant avoir plusieurs noms
re,
Non, normalement ça devrait supprimer les feuilles.
Par contre, dans le code de l'ami Pierrot, il faut que le nom de ta feuille commence par report pour qu'elle soit supprimée, contrairement à mon code.
Si ça ne vient pas de la, mets nous un exemple qu'on essais de voir en détails ou ça merdouille.
Re : Suppression d'un onglet pouvant avoir plusieurs noms
Re,
enlève les lignes comme celle-ci
Code:
Exit For
, je pensais qu'il y avait qu'une feuille à supprimer... par contre attention, il restera au moins une feuille.... A noter, ce code serait mieux placé dans un module standard, dans l'éditeur vba => barre de menu => insertion => Module
Re : Suppression d'un onglet pouvant avoir plusieurs noms
Re,
si tu veux qu'une seule boucle :
Code:
Sub test()
Dim ws As Worksheet
For Each ws In Worksheets
If (LCase(ws.Name) Like "report*" Or LCase(ws.Name) Like "fault*" _
Or LCase(ws.Name) Like "mean*" Or LCase(ws.Name) Like "alert*") And Worksheets.Count > 1 Then
Application.DisplayAlerts = False
ws.Delete
Application.DisplayAlerts = True
End If
Next ws
End Sub