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 plusieurs onglets sur plusieurs fichiers [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 48
    Points : 35
    Points
    35
    Par défaut Supprimer plusieurs onglets sur plusieurs fichiers
    Bonjour à tous,

    J'aurai besoin d'aide pour compiler deux macros en seule.

    En fait, je souhaiterai pouvoir ouvrir plusieurs classeurs contenus dans un dossier et par la suite pour chaque classeur ouvert ne conserver que le premier onglet.

    Voici mon code :

    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
    Sub delete()
     
     
      Dim repertoire As String
      Dim Feuille As Worksheet
      Dim wbook As Workbook
      repertoire = "C:\Users\dupond\Desktop\Testing\"
     
    unFichier = Dir(repertoire & "*.xls")
    While unFichier <> ""
        Set wbook = Workbooks.Open(repertoire & unFichier, , False)
        ThisWorkbook.Activate
        For Each Feuille In ThisWorkbook.Worksheets
            If Feuille.Name <> "compta" Then
           'on empêche le message d'alerte à l'utilisateur
            Application.DisplayAlerts = False
            'on supprime la feuille
                Feuille.Delete
            'on remets le message d'alerte excel !!! très important !!!
            Application.DisplayAlerts = True
    'fin du test
            End If
    'feuille suivante
        Next Feuille
           unFichier = Dir
    Wend
        End Sub
    Le problème c'est qu'il ouvre bien les classeurs contenus dans mon dossier mais n'effectue pas le traitement demandé, à savoir conserver la feuille compta.

    Je vous remercie de bien vouloir m'aider

  2. #2
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 124
    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 124
    Points : 9 952
    Points
    9 952
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    en ligne 12, tu actives le classeur contenant ton code VBA (Thisworkbook) ... ce qui n'est pas nécessaire
    Mais surtout, en ligne 13, tu indiques clairement que tu parcours les feuilles de Thisworkbook, au lieu des feuilles de wbook
    Donc à chaque ouverture de fichier, tu analyses les feuilles de ton classeur maître au lieu du fichier ouvert

    Bonnes corrections

  3. #3
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Bonjour,

    Petites remarques :
    1 - évites d'appeler tes macros comme le nom d'une fonction (vaut mieux "SuppFeuille" ou autres …)

    2- quand tu ouvres un classeur, par défaut il est déjà activé et là tu fais :
    qui est inutile et qui appel le classeur contenant la macro et non celui que tu ouvres et tu refait la même erreur ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each Feuille In ThisWorkbook.Worksheets
    pourtant tu as donné une variable pour le classeur ouvert :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set wbook = Workbooks.Open(repertoire & unFichier, , False)
    qui est wbook ce qui donnerai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each Feuille In wbook.Worksheets
    3 - Ne pas oublier de supprimer ta variable wbook à la fin de ta macro :
    voilà
    Edit : Salut Joe, désolé j'avais pas fais attention que l'on s'était croisé

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 48
    Points : 35
    Points
    35
    Par défaut
    Merci beaucoup pour vos explications,

    je comprends mieux l'erreur. Toutefois, la macro s’exécute bien mais j'ai une erreur d'exeécution '91' Variable objet ou variable de bloc With non définie

    Comme j'ai du mal avec la macro, je n'arrive pas à repérer cette nouvelle erreur.

    Le Nouveau code

    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
    28
    29
     
    Sub SuppFeuille
      Dim repertoire As String
      Dim Feuille As Worksheet
      Dim wbook As Workbook
      repertoire = "C:\Users\dupond\Desktop\Testing\"
     
    unFichier = Dir(repertoire & "*.xls")
    While unFichier <> ""
        Set wbook = Workbooks.Open(repertoire & unFichier, , False)
     
        For Each Feuille In wbook.Worksheets
       'si son nom est différent de "Feuil2" (à adapter bien sur) alors.....
            If Feuille.Name <> "compta" Then
           'on empêche le message d'alerte à l'utilisateur
            Application.DisplayAlerts = False
            'on supprime la feuille
                Feuille.Delete
            'on remets le message d'alerte excel !!! très important !!!
            Application.DisplayAlerts = True
    'fin du test
            End If
     
    'feuille suivante
        Next Feuille
           unFichier = Dir
       Set wbook = Nothing
    Wend
        End Sub

  5. #5
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Re,
    Pour :
    Il faut le mettre après le Wend
    Comme tu l'as fait , tu as supprimé le rattachement du classeur ouvert à la variable wbook
    Donc tu demandes à ta macro de supprimer une feuille sur aucun classeur.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 48
    Points : 35
    Points
    35
    Par défaut
    Merci beaucoup, ça fonctionne.

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

Discussions similaires

  1. [XL-2010] macro pour ouvrir des fichiers TXT sur plusieurs onglets
    Par dafchap dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/04/2016, 20h16
  2. Supprimer un mot dans une cellule sur plusieurs onglet
    Par mia64 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 25/06/2015, 15h47
  3. écrire sur plusieurs lignes dans un fichier
    Par kenny49 dans le forum Langage
    Réponses: 3
    Dernier message: 06/04/2007, 11h47
  4. Export requete sur excel sur plusieur onglets
    Par Renardo dans le forum Access
    Réponses: 10
    Dernier message: 26/01/2007, 17h13
  5. [VBA-E] Impression page paire sur plusieurs onglets
    Par liop49 dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 17/02/2005, 15h19

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