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 :

copier toutes les feuilles d'un ensemble de fichiers Excel [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2011
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 8
    Par défaut copier toutes les feuilles d'un ensemble de fichiers Excel
    Bonjour,
    J'essaie de copier toutes les feuilles d'un ensemble de fichiers Excel se trouvant dans un même répertoire, dans un fichier Excel de compilation contenant le code suivant.
    Malheureument il ne fonctionne pas comme prévu.
    Quelqu'un pourrait-il m'aider ?
    Merci !
    Dimitri


    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
    Sub Copier()
     
     Chemin = "C:\...\" 'Répertoire où se trouvent les Excel à compiler
     Fichiersource = Dir(Chemin & "*.xlsx") ' Premier fichier à compiler
     Fichiercible = ThisWorkbook.Name ' Fichier de compilation
     
     Do While Fichiersource <> ""
     
        Workbooks(Fichiersource).Activate
     
        For Each Feuille In Workbooks(Fichiersource).Worksheets
     
            Feuille.Copy After:=Workbooks(Fichiercible).Sheets(1)
     
        Next Feuille
     
        Fichiersource = Dir ' Fichier suivant
     Loop
     
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour.

    Ton code suppose que tous les fichiers sont ouverts. Est-ce le cas ?

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2011
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 8
    Par défaut
    Bonjour,

    Non, au départ tous les fichiers à consolider sont fermés. Seul le fichier de consolidation (celui qui contient le code VBA) est ouvert. Je ne savais pas qu'il faut une manip pour les ouvrir car j'avais essayé mon code avec un seul fichier et ça marchait...

    Merci.
    Dimitri

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Non, il faut les ouvrir :

    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
    Sub Copier()
     
    Chemin = "C:\...\" 'Répertoire où se trouvent les Excel à compiler
    Fichiersource = Dir(Chemin & "*.xlsx") ' Premier fichier à compiler
    Fichiercible = ThisWorkbook.Name ' Fichier de compilation
     
    Do While Fichiersource <> ""
     
    Workbooks.Open Chemin & Fichiersource
     
    For Each Feuille In Workbooks(Fichiersource).Worksheets
     
    Feuille.Copy After:=Workbooks(Fichiercible).Sheets(1)
     
    Next Feuille
     
    Workbooks(Fichiersource).Close False
    Fichiersource = Dir ' Fichier suivant
    Loop
     
    End Sub

  5. #5
    Nouveau membre du Club
    Inscrit en
    Décembre 2011
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 8
    Par défaut
    Génial ! Ca marche nickel ! Dire que j'ai passé toute la journée là dessus !
    Je ne sais comment te remercier !
    Dimitri

  6. #6
    Nouveau membre du Club
    Inscrit en
    Décembre 2011
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 8
    Par défaut
    Au risque d'abuser de ta gentillesse...

    Maintenant, je cherche à compiler sur une feuille les informations en provenance d'autres feuilles (qui dont au départ étaient dans d'autres fichiers).

    Chaque feuille a la même structure :
    - la cellule B2 contient un nom de client
    - la plage A12-N23 contient des noms d'articles et le chiffre d'affaires par mois

    J'ai un code trouvé sur un forum qui boucle sur chaque feuille, récupère tout le contenu et colle ces infos à la suite des infos de la feuille précédente :


    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
    Sub Lister()
        Dim Fe As Worksheet
        Dim Plage As Range
        For Each Fe In ThisWorkbook.Worksheets
            If Fe.Name <> "Compil" Then        
                With Fe
                    Set Plage = .Range(.Cells(2, 1), _
                                .Cells( _
                                .Cells.Find("*", .[A1], -4123, , _
                                1, 2).Row, _
                                .Cells.Find("*", .[A1], -4123, , _
                                2, 2).Column))                            
                End With
                Plage.Copy _
                Worksheets("Compil").Range("A65536").End(xlUp).Offset(1, 0)            
            End If
        Next Fe
    End Sub
    Par contre je ne sais pas comment je peux coller le nom de mon client sur chaque ligne article dans ma feuille de consolidation. En fait je n'arrive pas à saisir la syntaxe de la définition de la plage et de la fonction de copie

    Voici ce que je voudrais obtenir :
    +---+---+---+
    |Jan|Fév|Mar|...etc
    +--------+--------+---+---+---+
    |Client 1|Article1| 0| 20|500|...etc
    +--------+--------+---+---+---+
    |Client 1|Article2| 1|100| 2|...etc
    +--------+--------+---+---+---+
    |Client 2|Article1| 25| 0|120|...etc
    +--------+--------+---+---+---+

    Merci de ton aide.
    Dimitri

  7. #7
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Tout dépend de la disposition de ton tableau initial. Où setrouvent les articles, où se trouvent les mois ?

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/06/2015, 10h21
  2. Réponses: 2
    Dernier message: 29/04/2014, 22h17
  3. [Toutes versions] copier colonnes de toutes les feuilles d'un fichier
    Par cyberboy00 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/04/2011, 17h18
  4. MACRO - Copier une feuille dans toutes les feuilles (sauf 2)
    Par macto dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/02/2011, 08h53
  5. Réponses: 4
    Dernier message: 08/04/2009, 19h44

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