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 toutes les feuilles dont le nom contient "produit"


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 55
    Points : 27
    Points
    27
    Par défaut supprimer toutes les feuilles dont le nom contient "produit"
    Bonjour à tous,

    voici encore une petite question que je me pose :
    je souhaiterais pouvoir effacer toutes les feuilles dont le nom contient "Produit"
    Voici ce que j'ai écrit, et qui, vous vous en serez douté ne fonctionne pas...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    For Each Feuille In ActiveWorkbook.Worksheets
            If Feuille.Name = "Produit*" Then
                Application.DisplayAlerts = False
                Feuille.Delete
                Application.DisplayAlerts = True
                Exit For
            End If
        Next Feuille
    Ne serait-ce pas qu'un problème d'utilisation du signe * ?

    PS : je remercie l'auteur de ce bout de macro que j'ai tenté de mettre à ma sauce (il me semble que c'est Pierre Fauconnier. Pierre Fauconnier, si c'est toi, je te remercie)

  2. #2
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Tu peux aussi faire comme ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If left(Feuille.Name,7) = "Produit" Then
    et pour eviter les problemes de casse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If left(ucase(Feuille.Name),7)= "PRODUIT" Then
    Jérôme

  3. #3
    Membre régulier
    Inscrit en
    Juin 2007
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 147
    Points : 103
    Points
    103
    Par défaut
    Ce bon vieux Pierre, il est vraiment étonnant, présent sur tout les tableaux et ayant des réponses déconcertantes à plus d'un titre.

    Comment as-tu déclaré la variable : Feuille ? Sinon il faudrais que tu la déclare en tant que feuille Excell, que l'on me dise si je me trompe.

    Mais ne devrais-tu pas mettre une étoile aussi devant "*Produit*", comme ça ?
    N'oubliez pas de cliquer sur Résolu, une fois la réponse donnée.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 55
    Points : 27
    Points
    27
    Par défaut
    Merci jfontaine !

    On dirait que çà marche pas mal du tout ton petit tuyau
    Et puis cà a l'air intéressant cette fonction left. Je vais creuser un peu la question.

    A bientôt...

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 55
    Points : 27
    Points
    27
    Par défaut
    Evidemment, j'ai voulu compliquer la chose, et je bute encore :

    Cà, çà marche très bien,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For Each Feuille In ActiveWorkbook.Worksheets
            If Left(Feuille.Name, 7) = "Produit" Then
                Application.DisplayAlerts = False
                Feuille.Delete
                Application.DisplayAlerts = True
            End If
        Next Feuille
    Mais çà, du moins sa deuxième partie, ne fonctionne pas (Lorsque je fais tourner pas à pas, le programme n'entre jamais dans la deuxième boucle if, alors que j'ai une feuille qui s'appelle Resultats1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    For Each Feuille In ActiveWorkbook.Worksheets
            If Left(Feuille.Name, 7) = "Produit" Then
                Application.DisplayAlerts = False
                Feuille.Delete
                Application.DisplayAlerts = True
            End If
        Next Feuille
        For Each Feuille In ActiveWorkbook.Worksheets
            If Left(Feuille.Name, 7) = "Resultats" Then
                Application.DisplayAlerts = False
                Feuille.Delete
                Application.DisplayAlerts = True
            End If
        Next Feuille
    Pas plus que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        For Each Feuille In ActiveWorkbook.Worksheets
            If Left(Feuille.Name, 7) = "Produit" Or Left(Feuille.Name, 7) = "Resultats" Then
                Application.DisplayAlerts = False
                Feuille.Delete
                Application.DisplayAlerts = True
            End If
        Next Feuille
    .


    Un problème de syntaxe ? Autre chose ?
    J'espère que quelqu'un y verra plus clair que moi.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 55
    Points : 27
    Points
    27
    Par défaut
    Ok ! Shame on me

    Je n'avais pas regardé l'aide de cette fonctin, et j'avais oublié de remplacer la longueur de la chaîne (9 au lieu de 7).

    Du coup, c'est à nouveau résolu.

    Merci à tous.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/07/2011, 19h27
  2. Réponses: 11
    Dernier message: 20/08/2009, 22h27
  3. Réponses: 3
    Dernier message: 06/01/2009, 13h39
  4. [E-00] Supprimer toutes les feuilles sauf une
    Par imaril dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/10/2008, 10h30
  5. Réponses: 1
    Dernier message: 12/09/2008, 10h36

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