Suppression d'un onglet pouvant avoir plusieurs noms

roulax

XLDnaute Nouveau
Bonjour,

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

Une idée ?
 

porcinet82

XLDnaute Barbatruc
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.

@+
 

Pierrot93

XLDnaute Barbatruc
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

bon après midi
@+
 

roulax

XLDnaute Nouveau
Re : Suppression d'un onglet pouvant avoir plusieurs noms

Re porcinet82, Pierrot93,

Les deux codes fonctionnent, je vais privilégier le deuxième et l'adapter, j'ai plusieurs onglets à supprimer sur le même modèle.

Merci pour vos réponses rapides.
 

roulax

XLDnaute Nouveau
Re : Suppression d'un onglet pouvant avoir plusieurs noms

Re porcinet82, Pierrot93,

Nouveau petit problème,

Dans une feuille de calcul, j'ai plusieurs fois le nom report.
Dans ce cas, la macro supprime pas les onglets;
Y-a-t-il une subtilité ?

Merci d'avance pour vos réponse.
 

porcinet82

XLDnaute Barbatruc
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.

@+
 

Pierrot93

XLDnaute Barbatruc
Re : Suppression d'un onglet pouvant avoir plusieurs noms

Re,

A noter, si le nom de la feuille ne commence pas par "report" mais que ce mot est contenu dans la feuille, il faut modifier ainsi la comparaison :
Code:
Like "[COLOR="Red"][B][SIZE="4"]*[/SIZE][/B][/COLOR]report*"

@+
 

roulax

XLDnaute Nouveau
Re : Suppression d'un onglet pouvant avoir plusieurs noms

Re,

Voilà un des fichiers dans lequel je veux supprimer les onglets.
J'ai ajouté le code, mais il ne me supprime pas tout !

A voir.
 

Pièces jointes

  • Classeur1.xls
    31.5 KB · Affichages: 71
  • Classeur1.xls
    31.5 KB · Affichages: 61
  • Classeur1.xls
    31.5 KB · Affichages: 58

Pierrot93

XLDnaute Barbatruc
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
 

Pierrot93

XLDnaute Barbatruc
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
 

Discussions similaires