Supprimer feuilles

Salut, j'aurais aimé supprimer des feuilles (2 feuilles) mais elles changent de nom à chaque démarrage d'Excel. Au début je voulais les supprimer par leurs noms (Sheets("feuille").Delete) mais ce n'est pas possible dans mon cas.

Est-ce que c'est possible de faire cela ?

Merci à vous.

Bonjour,

Qu'est-ce qui les identifie ?

C'est à dire ?

svp

A quoi on les reconnait ! Si tu ne peux les reconnaître, soit les identifier, je ne vois pas sur quel critère tu pourrais décider pour supprimer !!

En fait c'est les 4 mêmes qui reviennent aléatoirement dans la semaine, j'aurais voulu savoir si c'était possible de faire une boucle où on regarde si le nom de feuille est présent un jour et on fait ce test sur les 4 valeurs. On supprime alors les feuilles du jour.

On ne peut pas dire que tu t'exprimes de façon claire et définitive !

Si les feuilles à supprimer sont celles dont le nom correspond à celui du jour, rien de plus simple ! Mais il faut le dire ! et confirmer que le nom du jour ce sera bien : Lundi, Mardi, etc. Dimanche (et préciser s'il est écrit avec ou sans majuscules...)

Oui c'est bine ça mais on ne peut pas savoir les feuilles du lundi puisqu'elles changent chaque semaine.

Private Sub Workbook_Open()
    Dim ws$, i%
    ws = UCase(Format(Date, "dddd"))
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    For i = Worksheets.Count To 1 Step -1
        If UCase(Worksheets(i).Name) = ws Then Worksheets(i).Delete
    Next i
End Sub

A mettre dans le module ThisWorkbook.

S'exécute à l'ouverture du classeur.

(sous réserve du moment où intervient le changement de nom que tu n'as pas précisé.)

J'ai du mal m'expliquer.

En fait, j'ai 4 onglets (feuil1, feuil2, feuil3 et feuil4). Dans n'importe quel cas, je vais les supprimer tous. Et moi, en utilisant la simple formule, ça me pose des problème puisqu'il essaye de supprimer des feuilles qui peuvent ne pas être présente.

Sheets("feuil1").Delete

Sheets("feuil2").Delete

Sheets("feuil2").Delete

Sheets("feuil2").Delete

C'est pourquoi j'avais pensé à faire une boucle If qui vérifie si la feuille est là et auquel cas la supprime, sinon elle ne fait rien.

Est-possible de faire ça ?

Merci quand même d'avoir pris le temps de me répondre.

Tu ne t'exprimes toujours pas mieux ! Tu confirmes d'abord que tes feuilles sont nommées Lundi, Mardi, etc. (jours de la semaine) et qu'il faut supprimer les feuilles dont le nom correspond au nom du jour,

et tu dis maintenant qu'elles se nomment Feuil1, Feuil2...

Il faut savoir !

Quel est leur nom à chacune ?

Quels noms doivent être supprimés ?

En fait c'est chaque jour de la semaine (prenons l'exemple d’aujourd’hui).

Nous sommes le jeudi et j'ai 2 onglets qui sont apparu dans mon classeur (chercher et trouver) hors j'aimerais avoir un petit programme VBA qui me permet de supprimer mes feuilles mais je ne peux pas les supprimer par leurs noms puisque je ne sais pas c'est lesquelles qui doivent apparaître.

C'est pour cela que j'aimerais avoir une boucle qui créer une itération pour trouver le nom des onglets (je n'en ai que 4 ça devrait aller vite) et supprime donc les onglets du jour.

Merci à toi.

svp

Maintenant, cela change encore ! Elles se nomment chercher et trouver !

Comment veux-tu qu'on s'y retrouve !!!

Tu ne dis pas ce qui provoque ces apparitions, tu n'es pas foutu de dire quelque chose de clair et aucun classeur...

On perd son temps

C'est pour ça que j'ai dis que c'était un exemple.

Re,

Un autre exemple.

Mais il ton problème souci est mal expliqué.

Et avec un petit fichier joint, ta question serait certainement déjà résolue.

Cdlt.

Public Sub Delete_Worksheets()
Dim ws As Worksheet
    With Application
        .DisplayAlerts = False
        .ScreenUpdating = False
    End With
    Select Case ws.Name
        Case "Accueil", "Données"
            ' ne rien faire
        Case Else
            ' supprime la feuille
            ws.Delete
    End Select
End Sub
Jean-Eric a écrit :

Re,

Un autre exemple.

Mais il ton problème souci est mal expliqué.

Et avec un petit fichier joint, ta question serait certainement déjà résolue.

Cdlt.

Public Sub Delete_Worksheets()
Dim ws As Worksheet
    With Application
        .DisplayAlerts = False
        .ScreenUpdating = False
    End With
    Select Case ws.Name
        Case "Accueil", "Données"
            ' ne rien faire
        Case Else
            ' supprime la feuille
            ws.Delete
    End Select
End Sub

Merci encore pour ton aide, cependant, j'ai un message d'erreur me disant "Variable objet ou variable de bloc With non définie"

Comment cela se fait-il ?

Rechercher des sujets similaires à "supprimer feuilles"