Effacer des feuilles sauf celles nommées...

Bonjour,
J' ai un ficher EXCEL comprenant diverses feuilles que je dois conserver et d' autres, commençant par "R", que je veux supprimer.
J' ai la macro suivante qui supprime les feuilles que je veux supprimer mais qui supprime également les deux dernières feuilles qui doivent être conserver.

For Each sh In Worksheets

If sh.Name <> "Liste" And sh.Name <> "F.P.8" And sh.Name <> "VPC" And sh.Name <> "F.MERE" And sh.Name <> "Lisez-moi" _
And sh.Name <> "POUV" And sh.Name <> "FormVPC" And sh.Name <> "ConvAG" And sh.Name <> "P.V.A.G" _
Then sh.Delete

Next

Un grand merci pour l' aide.

4 réponses

  1. Contributeur
    Bonjour,

    comme ceci:

    Option Explicit
    Sub supprimer()
    'Déclare la variable objet Worksheet
    Dim Ws As Worksheet
    Application.DisplayAlerts = False
    'Boucle sur toutes les feuille de calcul du classeur. Les onglets graphiques ne sont pas pris
    'en compte.
    'ThisWorkbook correspond à l'objet classeur contenant la macro
    For Each Ws In ThisWorkbook.Worksheets
    If Ws.Name <> "Feuil1" And Ws.Name <> "Feuil3" Then 'adapter nom feuille à conserver
       Ws.Delete
        End If
    Next Ws
    Application.DisplayAlerts = True
    End Sub
    


    0
    1. Merci de vous avoir penché, rapidement, sur mon problème.

      A la ligne 13 Next Ws j' ai le message suivant :" Référence de contrôle incorrect dans Next"

      Cdt,
      JB22
      0
      1. Contributeur
        un problème dans la dénomination des feuilles à conserver

        si tu ne veux garder que les 2 dernières feuilles tu peux faire comme ceci:

        Option Explicit
        Sub supprimer()
        'Déclare la variable objet Worksheet
        Dim Ws As Worksheet
        Application.DisplayAlerts = False
        'Boucle sur toutes les feuille de calcul du classeur. Les onglets graphiques ne sont pas pris
        'en compte.
        'ThisWorkbook correspond à l'objet classeur contenant la macro
        For Each Ws In ThisWorkbook.Worksheets
        If Ws.Index <> Worksheets.Count And Ws.Index <> Worksheets.Count - 1 Then
           Ws.Delete
            End If
        Next Ws
        Application.DisplayAlerts = True
        End Sub
        


        @+ Le Pivert
        0
    2. Pour comprendre mon problème je vous expose les données.
      Il s' agit de la gestion des votes en Assemblée générale, j' ai donc des feuilles qui doivent être conservées et des feuilles correspondantes à chaque question à l' ordre du jour, ces feuilles ne doivent pas être conservées dans le dossier d' une nouvelle A.G.
      Toutes les feuilles de vote crées commencent par "R."
      Dans la macro de création d" un dossier pour une nouvelle A?G. je veux supprimer les feuilles de résolution de l' ancienne A.G.
      Je reste à votre disposition pour toutes informations complémentaires, je vous remercie de votre aide.
      0
      1. Contributeur
        Si j'ai bien compris tu veux supprimer les feuilles commençant par la lettre R ou r, c'est bien cela?

        Option Explicit
        Option Compare Text
        Sub supprimer()
        'Déclare la variable objet Worksheet
        Dim Ws As Worksheet
        Application.DisplayAlerts = False
        'Boucle sur toutes les feuille de calcul du classeur. Les onglets graphiques ne sont pas pris
        'en compte.
        'ThisWorkbook correspond à l'objet classeur contenant la macro
        For Each Ws In ThisWorkbook.Worksheets
        If Left(Ws.Name, 1) = "R" Then
           Ws.Delete
            End If
        Next Ws
        Application.DisplayAlerts = True
        End Sub
        


        Voilà

        @+ le Pivert
        0
    3. Cette suppression à partir de la première lettre des feuilles à supprimer fonctionne très bien, après avoir supprimer les trois premières lignes :
      1- Option Explicit
      2- Compare Text
      3- Sub supprimer

      Je vous suis reconnaissant de votre aide et vous remercie grandement;

      Cordialement,
      Jean Braconnier
      0