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 :

[VBA Excel] supprimer tous les onglets sauf un


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Inscrit en
    Juin 2003
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 270
    Points : 216
    Points
    216
    Par défaut [VBA Excel] supprimer tous les onglets sauf un
    Bonjour,

    Je souhaite supprimer dans un fichier Excel tous les onglets sauf un. Pour cela, j'ai essayé le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            For i = 1 To (Sheets.Count - 1)
                Sheets(i).Delete
            Next i
    Le problème: j'obtiens l'erreur d'exécution 9: "L'indice n'appartient pas à la sélection". Cette erreur n'apparaît au bout de quelques suppressions.

    De plus, pour chaque suppression, une boîte de dialogue s'affiche et demande à l'utilisateur de confirmer la suppression. Pour la suppresion de 20 onglets, il faut donc cliquer 19 fois...

    Est-ce que quelqu'un a une idée pour corriger ce problème ? Ou alors, y-a t-il un autre moyen de le faire ?

    Merci

  2. #2
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut
    Salut,

    Un post précédent m'a fait pensé à un code de réponse pour ton problème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For i = 1 To Sheets.Count
       if Sheets.Count >1 then 
          Sheets(1).Delete 'Efface la 1ère feuille
       end if
    Next i
    ou encore plus simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    While Sheets.Count > 1
          Sheets(1).Delete 'Efface la 1ère feuille
    Wend
    J'espère que cela pourra t'aider

    @+

    Théo
    Forums VB : lire la notice
    La touche existe pour être utilisée
    Pensez au tag
    Pour ceux n'ayant pas l'aide installée :
    - Aide MSDN pour VB6
    - Aide MSDN pour VBA
    Je ne réponds pas aux questions techniques par MP. Merci d'utiliser le forum fait pour çà.

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour

    une autre possibilité en complément de la reponse de Theo

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim i As Integer
    For i = Sheets.Count To 2 Step -1
    Sheets(i).Delete
    Next i

    cordialement
    michel

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Enfin, si tu connais le nom de la feuille à conserver, tu utilises les codes précédent et par un test sur le nom, tu exclus cette feuille.

    La mousse du cosse

  5. #5
    Membre actif
    Inscrit en
    Juin 2003
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 270
    Points : 216
    Points
    216
    Par défaut
    Non, je ne connais pas le nom de la feuille à conserver. Mais les solutions proposées me conviennent parfaitement.

    Merci !

    Néanmoins, j'ai toujours la demande de confirmation pour la suppression. Il n'y a pas de moyen de supprimer une feuille sans qu'il y ait d'avertissement ?

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    rebonjour

    dans ce cas tu peux tester

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Application.DisplayAlerts = False
    For i = Sheets.Count To 2 Step -1
    Sheets(i).Delete
    Next i
    Application.DisplayAlerts = True


    cordialement
    michel

  7. #7
    Membre actif
    Inscrit en
    Juin 2003
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 270
    Points : 216
    Points
    216
    Par défaut
    C'est parfait.

    Merci !

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

Discussions similaires

  1. [XL-2003] supprimer tous les onglets sauf
    Par toutletoutim dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/04/2010, 07h33
  2. VBA-E supprimer tous les graphique d'une feuille
    Par ferronimus dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/04/2009, 19h01
  3. Supprimer tous les enregistrements sauf 5
    Par kacedda dans le forum Développement
    Réponses: 4
    Dernier message: 14/04/2009, 11h22
  4. [Shell] Supprimer tous les fichiers sauf XX et YY
    Par 84mickael dans le forum Linux
    Réponses: 9
    Dernier message: 25/07/2007, 10h37
  5. Réponses: 3
    Dernier message: 24/04/2007, 19h01

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