IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Supprimer des feuilles sans faire de boucle [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Secrétaire
    Inscrit en
    Avril 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Secrétaire
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2020
    Messages : 51
    Points : 44
    Points
    44
    Par défaut Supprimer des feuilles sans faire de boucle
    Bonjour,

    Est-il possible de supprimer les feuilles dont le CodeName commence par "Feuil"
    J'ai cette macro mais je me demande s'il n'y a pas plus simple

    Merci pour votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    Sub suppfeuil()
      Application.ScreenUpdating = False 'Désactivation de la mise à jour de l'écran pour gain de temps
      Application.Calculation = xlCalculationManual 'Désactivation du calcul auto sur modif
      '  supprimer tous les onglets qui ne sont ni "SOURCE" ni "LISTE"
      For Each nomfeuil In Worksheets
        Select Case nomfeuil.CodeName
          Case "SOURCE"
          Case "LISTE"
          Case Else
            Application.DisplayAlerts = False ' Désactivation de la demande de suppression
            nomfeuil.Delete
            Application.DisplayAlerts = True ' Activation de la demande de suppression
        End Select
      Next nomfeuil

  2. #2
    Membre émérite
    Homme Profil pro
    ingénieur
    Inscrit en
    Mars 2015
    Messages
    1 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : ingénieur
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2015
    Messages : 1 095
    Points : 2 597
    Points
    2 597
    Par défaut
    Bonjour

    Je ne sais pas si c'est plus simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Application.DisplayAlerts = False
           
        For i = Worksheets.Count To 1 Step -1
                If vos conditions Then Worksheets(i).Delete
        Next i
        Application.DisplayAlerts = True
    Stéphane

  3. #3
    Membre du Club
    Homme Profil pro
    Secrétaire
    Inscrit en
    Avril 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Secrétaire
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2020
    Messages : 51
    Points : 44
    Points
    44
    Par défaut
    Merci pour cet autre code mais par plus simple j'entends ne pas faire de boucle du style :
    Select all worksheets if left(codename,5)="Feuil"
    puis
    delete.select

    Pas de boucle avec select case ou for next

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 301
    Points : 1 900
    Points
    1 900
    Par défaut
    Hello,

    La collection Worksheets contient les index / noms des feuilles.
    Hors, tu as besoin de la propriété CodeName, tu n'as pas 36 solutions:
    1) Faire une boucle.
    2) Passer par un gestionnaire d'erreur, mais c'est très moche, je ne recommande pas.

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 910
    Points : 28 889
    Points
    28 889
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    A moins de connaître à l'avance le nom des feuilles, je ne vois pas comment on pourrait se passer d'une boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub t()
      Dim sht As Worksheet
      Application.DisplayAlerts = False
      For Each sht In ThisWorkbook.Worksheets
        With sht
         If Left(.CodeName, 5) = "Feuil" Then .Delete
        End With
      Next
      Application.DisplayAlerts = True
      Set sht = Nothing
    End Sub
    En connaissant le nom des feuilles (pas le CodeName)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub T1()
      Application.DisplayAlerts = False
      Sheets(Array("Feuil35", "Feuil36", "Feuil37")).Delete
      Application.DisplayAlerts = True
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Membre du Club
    Homme Profil pro
    Secrétaire
    Inscrit en
    Avril 2020
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Secrétaire
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2020
    Messages : 51
    Points : 44
    Points
    44
    Par défaut
    Merci pour vos réponses
    Tant pis, je vais faire une boucle

  7. #7
    Membre averti Avatar de Nain porte koi
    Homme Profil pro
    a
    Inscrit en
    Novembre 2023
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : a

    Informations forums :
    Inscription : Novembre 2023
    Messages : 321
    Points : 436
    Points
    436
    Par défaut
    juste pour rigoler parce que ça n'exclu pas une boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ' suppression des feuilles sans faire de boucle
        Application.DisplayAlerts = False
        Sheets(Feuille).Delete
        Application.DisplayAlerts = True
    Ah mais il manque le contenu de "Feuille"... qui est un tableau... rempli par une boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Option Explicit
    Option Base 1
     
    Sub t()
     
        Dim i As Long
        Dim Nb_Feuille As Long
        Dim Num_Feuille As Long
     
        Nb_Feuille = ThisWorkbook.Worksheets.Count
        Dim Feuille() As String
        ReDim Feuille(Nb_Feuille)
     
        For i = 1 To ThisWorkbook.Worksheets.Count
            If Left(Worksheets(i).CodeName, 5) = "Feuil" Then
                Num_Feuille = Num_Feuille + 1
                Feuille(Num_Feuille) = Worksheets(i).Name
            End If
        Next i
        ReDim Preserve Feuille(Num_Feuille)
     
    ' suppression des feuilles sans faire de boucle
        Application.DisplayAlerts = False
        Sheets(Feuille).Delete
        Application.DisplayAlerts = True
     
    End Sub
    JièL
    Membre des AMIS
    Anti Macro Inutilement Superfétatoire

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 301
    Points : 1 900
    Points
    1 900
    Par défaut
    @Nain porte koi:

    Ca ne peut pas fonctionner.
    La propriété par defaut (Item) de la collection Sheets prend en paramètre soit l'index (un entier au sens mathématique) soit le nom (une chaine de caractères) d'une et une seule feuille.
    En aucun cas un tableau ni conteneur quelconque.

  9. #9
    Membre averti Avatar de Nain porte koi
    Homme Profil pro
    a
    Inscrit en
    Novembre 2023
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : a

    Informations forums :
    Inscription : Novembre 2023
    Messages : 321
    Points : 436
    Points
    436
    Par défaut
    @deedolith euh... chez moi ça fonctionne et l'enregistreur le propose aussi
    JièL
    Membre des AMIS
    Anti Macro Inutilement Superfétatoire

  10. #10
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 301
    Points : 1 900
    Points
    1 900
    Par défaut
    Etonnant,
    Office 365 ?

    Sur 2016, ca fait coin coin.

  11. #11
    Membre averti Avatar de Nain porte koi
    Homme Profil pro
    a
    Inscrit en
    Novembre 2023
    Messages
    321
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : a

    Informations forums :
    Inscription : Novembre 2023
    Messages : 321
    Points : 436
    Points
    436
    Par défaut
    Ah oui, effectivement c'est du 365, je ne pensais pas que ça avait évolué depuis 2016, surtout que la suppression de feuille n'est pas un truc spécifique à 365
    JièL
    Membre des AMIS
    Anti Macro Inutilement Superfétatoire

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Supprimer une feuille sans confirmation dans une boucle
    Par buigui dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 24/04/2018, 14h33
  2. [XL-2007] Supprimer des feuilles sans confirmation
    Par lucarno dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/04/2018, 10h34
  3. [XL-2003] Supprimer des données sans effacer les formules sur plusieurs feuilles
    Par graphikris dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 04/04/2013, 11h18
  4. Réponses: 1
    Dernier message: 10/09/2008, 15h52
  5. Réponses: 2
    Dernier message: 07/07/2004, 17h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo