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 :

Effacer les Feuilles dont les noms commencent tous par "Classe" [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2015
    Messages
    211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2015
    Messages : 211
    Points : 87
    Points
    87
    Par défaut Effacer les Feuilles dont les noms commencent tous par "Classe"
    Bonjour à toutes et à tous,

    Voici un bout de programme ci-dessous dont le but est d'effacer toutes les feuilles commençant par "Classe". Comment Est-ce que je peux faire car suivant les lycées, les noms de classes peuvent varier?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub suppclass()
        Sheets("Classe 2ASSP").Select
        ActiveWindow.SelectedSheets.Delete
        Sheets("Classe 1ASSP").Select
        ActiveWindow.SelectedSheets.Delete
        Sheets("Classe TASSP").Select
        ActiveWindow.SelectedSheets.Delete
        Sheets("Classe 2ARCU").Select
        ActiveWindow.SelectedSheets.Delete
        Sheets("Classe 1ARCU").Select
        ActiveWindow.SelectedSheets.Delete
    End Sub
    Merci d'avance.

    Novice72

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 661
    Points : 5 785
    Points
    5 785
    Par défaut
    Bonjour,

    Avec une boucle sur l'ensemble de tes feuilles, et la fonction left https://msdn.microsoft.com/fr-fr/lib...(v=vs.90).aspx
    J'aimerais bien aller vivre en Théorie, car en Théorie tout se passe bien.

  3. #3
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2015
    Messages
    211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2015
    Messages : 211
    Points : 87
    Points
    87
    Par défaut
    Bonjour Halaster08,

    Encore merci pour t'occuper encore d'un de mes problèmes....

    Toutefois, je ne comprends pas trop le lien que tu me donnes. J'y suis allé et n'ai pas tout compris !
    En recopiant l'exemple du lien que voici,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim TestString As String = "Hello World!"
    ' Returns "Hello".
    Dim subString As String = Microsoft.VisualBasic.Left(TestString, 5)
    je comprends que je peux récupérer la partie gauche d'une chaine de caractère.

    Alors comment récupérer la partie gauche d'un nom de feuilles et si condition requise effacer la feuille ?

    Encore merci.

    Novice72

  4. #4
    Expert confirmé Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Points : 4 299
    Points
    4 299
    Par défaut
    Salut,

    voici un bout de code qui parcourt le classeur et supprime les feuilles commençant pas "classe".

    En espérant que cela corresponde à ton besoin. Bonne utilisation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub suppr()
     
    'parcourt des feuilles du classeur
    For Each f In Worksheets
        'récupération les 6 premiers caractères du nom de la feuille
        nom = Left(f.Name, 6)
        'si le début du nom de la feuille est "classe"
        If nom = "classe" Then
            'suppression de la feuille
            f.Delete
        End If
    'passage à la feuille suivante
    Next
    End Sub
    juste comme çà, halaster08 je suis fan de ta signature. Et du coup tu m'emmènes quand tu veux avec toi ...
    Jérôme

    " Je pense donc je suis. Tu es donc j'apprends ". (GCM)

    Si ce message vous à aidé, merci de cliquer sur . Si ce message est résolu, cliquez sur .

  5. #5
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 661
    Points : 5 785
    Points
    5 785
    Par défaut
    Citation Envoyé par Novice72 Voir le message
    je comprends que je peux récupérer la partie gauche d'une chaine de caractère.
    le but est d'effacer toutes les feuilles commençant par "Classe".
    Jerome t'as déjà donné la solution finale mais ne pas réussir a faire le lien entre "commence par" et "récupérer la partie gauche" est peu dommage, surtout que dans ton autre sujet on t'a montrer comment manipuler le nom d'un feuille.
    Il ne te manquait que deux info:
    1)la boucle, que tu aurais trouvé facilement en cherchant sur le net, je le sais puisque j'ai effectué moi-même cette recherche quand j'en ai eu besoin récemment.
    2)la suppression de feuille, que l'enregistreur de macro te donne en quelques seconde.

    Bref avec un peu de recherche tu pouvais y arriver toute seule, et si tu veux progresser je te conseille vraiment d'essayer "des trucs" avant de demander un code tout fait, car il n'y aura pas toujours quelqu'un pour te le fournir.

    Citation Envoyé par jerome.vaussenat
    juste comme çà, halaster08 je suis fan de ta signature. Et du coup tu m'emmènes quand tu veux avec toi ...
    Malheureusement j'ai essayé la SNCF, plusieurs agences de voyages, des sites internets exotiques et j'en passe, personne n'accepte de vendre les billets pour y aller
    J'aimerais bien aller vivre en Théorie, car en Théorie tout se passe bien.

  6. #6
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 596
    Points : 34 282
    Points
    34 282
    Par défaut
    Bonjour,

    un petit ajustement pour ne pas avoir de probleme de casse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        nom = LCase(Left(f.Name, 6))
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  7. #7
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    une variante avec Like et la neutralisation de la casse directement dans le module.
    Ce qui évite à la fois d'utiliser les fonctions vba.Left() et VBA.LCase()


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Option Compare Text
     
    Sub toto()
    Dim Feuille As Worksheet
    For Each Feuille In ThisWorkbook.Worksheets
        If Feuille.Name Like "classe*" Then MsgBox Feuille.Name
        VBA.LCase
    Next Feuille
    End Sub

  8. #8
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2015
    Messages
    211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2015
    Messages : 211
    Points : 87
    Points
    87
    Par défaut
    Encore merci Jérôme et les autres forumistes !,

    Tout ceci fonctionne à un détail près.

    Lorsqu'il y a 6 feuilles à effacer ( par exemple ), à chaque fois il y a une boite de dialogue qui apparaît et me dit que je risque de perdre des données se trouvant sur la feuille. LA boîte de dialogue me propose donc de cliquer sur un des 2 boutons ( "Supprimer" ou "Annuler" ).
    La Boîte revient autant de fois qu'il y a de feuilles à supprimer.

    Y a t-il un moyen d'éviter l'arrivée de cette boîte de dialogue ?

    Encore merci à vous tous.

    Novice72

    pour comprendre
    Oui, c'est encore moi Jérôme.
    Peux-tu m'expliquer à quoi correspond le "f" qui se trouve dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     For each   ...  In Worksheets
    Novice72

  9. #9
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 199
    Points : 319
    Points
    319
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Application.DisplayAlerts = False
            f.Delete
     Application.DisplayAlerts = True
    Cordialement,

  10. #10
    Expert confirmé Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Points : 4 299
    Points
    4 299
    Par défaut
    Salut,

    En fait, ce f est une variable. Mais pourquoi f ?

    f pour feuille !
    Et on dit en Français dans le texte :
    Pour chaque feuille (f) du classeur ...

    Pour en savoir plus un super tuto :
    http://silkyroad.developpez.com/VBA/FeuilleDeCalcul/#LI

    Ce qui nous concerne est dans la partie introduction. Dans ce tuto, justement, ils utilisent comme nom de variable ws. Mais pourquoi ws ? pour WorkSheet par dit !

    Bonne lecture
    Jérôme

    " Je pense donc je suis. Tu es donc j'apprends ". (GCM)

    Si ce message vous à aidé, merci de cliquer sur . Si ce message est résolu, cliquez sur .

  11. #11
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2015
    Messages
    211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2015
    Messages : 211
    Points : 87
    Points
    87
    Par défaut
    Citation Envoyé par goldstar Voir le message
    Bonjour,



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    Application.DisplayAlerts = False
            f.Delete
     Application.DisplayAlerts = True
    Cordialement,
    SUPER MERCI

    Tout fonctionne.

    Novice72

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/11/2013, 01h10
  2. [XL-2010] Plantage feuille dont le nom commence par "C"
    Par charliejo dans le forum Excel
    Réponses: 1
    Dernier message: 18/06/2012, 16h17
  3. Réponses: 3
    Dernier message: 29/06/2010, 10h24
  4. supprimer toutes les feuilles dont le nom contient "produit"
    Par Amiral19 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/07/2007, 14h27

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