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 :

Création d'une nouvelle feuille pour une liste de fichier [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Création d'une nouvelle feuille pour une liste de fichier
    Bonjour,

    Voici mon problème :

    Je voudrais rajouter une feuille dans plusieurs classeur à la suite. J'ai bien réussi à ouvrir les classeurs, mais les feuilles sont crées dans le fichier du lancement de la macro.

    Voici le 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
    Sub Workbook_Open()
    Dim LstFich, xfile
    Application.ScreenUpdating = False
    'Ouverture des fichiers
    LstFich = Application.GetOpenFilename("Fichiers Excel(*.xls),*.xls", , _
    "Sélection des fichiers à convertir", , True) 'true pour une selection multiple
     
    If Not IsArray(LstFich) Then Exit Sub
     
    For Each xfile In LstFich
     
        Workbooks.Open FileName:=xfile
        On Error Resume Next
        Workbooks(xfile).Activate
        Sheets.Add
        On Error GoTo 0
        ActiveWorkbook.Save
        ActiveWorkbook.Close
     
    Next xfile
     
    ActiveWorkbook.Close
    End Sub
    Si quelqu'un a une solution à me proposer je suis preneur.

    Merci.

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 281
    Points : 11 737
    Points
    11 737
    Par défaut
    en utilisant ActiveWorkbook.Sheets.Add plutôt que Sheets.Add tout court ?
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Bonjour
    A la place de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Workbooks(xfile).Activate
        Sheets.Add
        ActiveWorkbook.Save
        ActiveWorkbook.Close
    Essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Workbooks(xfile).Sheets.Add
          Workbooks(xfile).Close , True
    Frédéric
    Développeur d'Applications Access

  4. #4
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Une solution pour maitriser ce que l'on fait est d'instancier :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim wb As Workbook
    Dim F1 As Worksheet
     
    Set wb = Workbooks.Open(Filename:=xfile)
    Set F1 = wb.Worksheets.Add
    With F1
        .Name = "LanouvelleFeuille"
    End With
    Finalement en reprenant ton code ça donne ceci :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    Dim wb As Workbook
    Dim F1 As Worksheet
    Dim LstFich, xfile
     
    Application.ScreenUpdating = False
    '-------------------------------------'
    'Ouverture des fichiers
    '-------------------------------------'
    LstFich = Application.GetOpenFilename("Fichiers Excel(*.xls),*.xls", , _
    "Sélection des fichiers à convertir", , True) 'true pour une selection multiple
     
    If Not IsArray(LstFich) Then Exit Sub
     
    For Each xfile In LstFich
     
        Set wb = Workbooks.Open(Filename:=xfile)
        '-----------------------'
        ' Ajout d'une feuille
        '-----------------------'
        Set F1 = wb.Worksheets.Add
        With F1
         .Name = "LanouvelleFeuille"
        End With
     
        '-------------------------------------'
        ' Sauvegarde et fermeture du classeur
        '-------------------------------------'
        With wb
            .Save
            .Close
        End With
     
     
    Next xfile
     
    '-----------------------------------------------'
    ' Fermeture du classeur ou se trouve cette macro
    '-----------------------------------------------'
    ThisWorkbook.Close
     
    Application.ScreenUpdating = True ' il parait que c pas ncr mais je le met tjrs
    End Sub

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Merci c'est impécable !

    Ca fonctionne à merveille

    Merci pour les conseils et la solution !

  6. #6
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Une dernière chose que j'ai oublié dans le code, liberer les objets.

    Fin du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    '-----------------------------------------------'
    ' On libère les objets
    '-----------------------------------------------'
    Set F1 = Nothing
    Set wb = Nothing
    '-----------------------------------------------'
    ' Fermeture du classeur ou se trouve cette macro
    '-----------------------------------------------'
    ThisWorkbook.Close
    Ca fonctionne à merveille
    Je trouve aussi, le code est intéressant

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

Discussions similaires

  1. [XL-2007] TCD à partir d'une plage nommée vers une nouvelle feuille nommée
    Par MushuLeDragon dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 15/01/2015, 10h49
  2. Réponses: 82
    Dernier message: 05/02/2011, 14h34
  3. Réponses: 4
    Dernier message: 09/04/2010, 10h42
  4. Copier les valeurs d'une feuille dans une nouvelle feuille en VBA
    Par muska78 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/06/2008, 10h44
  5. insertion d'une nouvelle feuille quand une autre est pleine
    Par rom05 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/04/2008, 08h50

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