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 :

Exporter des feuilles Excel vers un autre classeur


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 15
    Points : 8
    Points
    8
    Par défaut Exporter des feuilles Excel vers un autre classeur
    Bonjour,
    J'ai fait un petit tour sur le forum mais je n'ai pas trouvé précisemment ce que je cherche.

    J'ai un ensemble de fichier excel dans un dossier specifique contenant chacun une feuille "Resultat".
    Mon but est de faire une macro qui en ouvrant ce dossier, récupère tous les Sheets resultats des différents classeurs associé au nom de fichier.
    Le tout est de mettre ça dans un autre classeur "Résumé".

    En fait je bloque pour pouvoir lire un dossier fichier par fichier et recupérer son contenu.

    MErci Beaucoup et désolé si cela vous parait trivial.

  2. #2
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Janvier 2007
    Messages : 132
    Points : 160
    Points
    160
    Par défaut
    Bonjour
    Sinon pour trouver tous les fichiers d'un répertoire, tu peux utiliser 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
     
    Dim Nom_Fichier as String
    Dim Chemin as String
     
    Chemin =ActiveWorkBook.Path
     
    Set fs = Application.FileSearch
    With fs
        .LookIn = chemin$
        .Filename = "*.xls"
        .SearchSubFolders = False 'ou True si tu veux lire les sous-répertoires
        If .Execute(SortBy:=msoSortByFileName, _
        SortOrder:=msoSortOrderAscending) > 0 Then
            For i = 1 To .FoundFiles.Count
                Nom_Fichier = .FoundFiles(i)
                ....... 'execution de ta procédure de récupération de données
           Next
       End If
    End With
    Slts

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup, je vais tester la macro en y implémentant ma procédure cet apres mimdi et je vous tiens au courant!
    merci encore!

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Re bonjour,

    J'aimerai savoir si c'est possible de récupérer dans Nom_Fichier non pas le chemin + nom mais juste le nom .

    Aussi pour ma procédure, est ce qu'il existe une fonction qui importe directement une feuille d'un classeur à un autre ou bien je fais une macro enregistrer copier coller??
    Merci!!

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Bonjour,
    pour copier une feuille dans un autre classeur,
    1°) il faut que les 2 classeurs soient ouvert.
    2°) Sélectionner la feuille qui doit étre copiée, et appliqué la ligne suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("FeuilleAcopier").Copy Before:=Workbooks("ClasseurOuCopier").Sheets(1)
    Ce code copie la feuille au début du classeur 'ClasseurOuCopier'
    Pour copier en dernier,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        a = Workbooks("ClasseurOuCopier").Worksheets.Count
        Sheets("FeuilleAcopier").Copy After:=Workbooks("ClasseurOuCopier").Sheets(a)
    A+
    EDIT:
    dans la macro de plateforme3 tu a ta réponse...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Nom_Fichier = .Filename

  6. #6
    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 546
    Points
    15 546
    Par défaut
    Pour avoir le nom du seul fichier, il me semble que fso propose quelque chose mais là tout de suite...
    Une solution de rechange
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Nom_Complet = Split(.FoundFiles(i),"\")
    Nom_Fich = Nom_Complet(Ubound(Nom_Complet))
    Regarde split dans l'aide

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Oui j'était tenter d'utilisé cela mais comme tu peux le voire dans la boucle je ne sais comment recupérer le nom du fichier sans son chemin d'acces.
    Comme il s'agit de plusieurs fichiers dans un dossier je dois faire en sorte de bien distinguer la source et la destination.
    Merci!!

    Merci, je viens de voir ton message juste après mon denrier post.
    j'essaye ça.

    Quand je fais un WorkBooks(Nom_Fich).Activate ou WorkBooks(Nom_Complet).Activate , il met met erreur subscript out of range.

    En fait j'arrive pas a réutiliser les variables nom de fichier pour bosser dessus apres ( copier coller etc)

  8. #8
    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 546
    Points
    15 546
    Par défaut
    Mets-nous ton code, et explique ce que tu veux faire, on ne peut pas répondre en aveugle. Exemple : Veux-tu choisir le fichier à ouvrir ou veux-tu ouvrir tous les fichiers du répertoire ?
    A+

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Alors voila 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
     
    Sub summarize()
     
    chemin = ActiveWorkbook.Path
     
    Set fs = Application.FileSearch
    With fs
        .LookIn = chemin
        .Filename = "*.xls"
        .SearchSubFolders = False 'ou True si tu veux lire les sous-répertoires
        If .Execute(SortBy:=msoSortByFileName, _
        SortOrder:=msoSortOrderAscending) > 0 Then
            For i = 1 To .FoundFiles.Count
                Nom_Fichier = .FoundFiles(i)
                Nom_Complet = Split(.FoundFiles(i), "\")
                Nom_Fich = Nom_Complet(UBound(Nom_Complet))
                Workbooks(Nom_Complet).Activate
                Sheets("Results").Copy Before:=ThisWorkbook("Result").Sheets(1)
     
               ' ....... 'execution de la procédure de récupération de données
           Next
       End If
    End With

    Je cherche à prendre toutes les feuilles "Result" de tous les fichiers xls du répertoire et les copier dans un fichier xls unique.
    C'est un sorte de résumé de tous les résultats obtenues dans un fichier excel "Summarize".

    Merci encore

  10. #10
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Janvier 2007
    Messages : 132
    Points : 160
    Points
    160
    Par défaut
    Bonsoir
    Change
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Nom_Complet = Split(.FoundFiles(i), "\")
    Nom_Fich = Nom_Complet(UBound(Nom_Complet))
    Workbooks(Nom_Complet).Activate
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks.Open(nom_fichier).Activate
    Je connais pas bien l'utilisation de Split, mais dans ton cas, ça renvoie rien du tout...
    Et tu peux utiliser le nom complet pour ouvrir ton fichier
    Testé et approuvé
    Slts

  11. #11
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    bonjour,
    encore une petite modif à faire
    après la modif de plateforme3
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Workbooks.Open(nom_fichier).Activate
        'Changer la ligne suivante
        Sheets("Results").Copy Before:=Workbooks("Result.xls").Sheets(1)
    Avec ces modifs, la routine 'tourne' normalement


    Petite explication sur Split
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'supposition.. .FoundFiles(i) contient "C:\Répertoir1\SouRép\Fichier.XLS"
        Nom_Complet = Split(.FoundFiles(i), "\")
    'Nom_Complet  est maintenant un tableau avec 4 variables séparées
    'Nom_Complet(0) = "C:"
    ' ....
    ' 'Nom_Complet(3) = "Fichier.XLS"
    A+

  12. #12
    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 546
    Points
    15 546
    Par défaut
    Citation Envoyé par Plateforme3
    Je connais pas bien l'utilisation de Split, mais dans ton cas, ça renvoie rien du tout...
    Renseigne-toi
    Citation Envoyé par Plateforme3
    Et tu peux utiliser le nom complet pour ouvrir ton fichier
    Testé et approuvé
    Citation Envoyé par Smogling
    J'aimerai savoir si c'est possible de récupérer dans Nom_Fichier non pas le chemin + nom mais juste le nom .
    Je répondais à cette question

    Citation Envoyé par LeForestier
    Petite explication sur Split
    'Nom_Complet(3) = "Fichier.XLS"
    Juste une petite correction : Si tu ignores le nombre de répertoires en cascade, préfère
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NomFich = Nom_Complet(Ubound(Nom_Complet)) '=> "Fichier.XLS"
    qui donnera le dernier item du tableau Nom_Complet

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    MErci beaucoup!
    votre code marche très bien.
    Je vais juste l'adapter pour qu'il fasse une copie par valeur et non pas par formule.

    merci encore!

  14. #14
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Janvier 2007
    Messages : 132
    Points : 160
    Points
    160
    Par défaut
    Renseigne-toi
    J'y manquerai pas...
    Je répondais à cette question
    Toujours aussi observateur..
    Slts

    PS: Comment on devient chef? Chef!

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Re bonjour,

    une dernière petite question,

    comment récupérer le nom de la feuille qui a été créee juste après
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Sheets("FeuilleAcopier").Copy Before:=Workbooks("ClasseurOuCopier").Sheets(1)
    Merci

  16. #16
    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 546
    Points
    15 546
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NomFeuil = Workbooks("ClasseurOuCopier").Sheets(2).name
    pas testé... mais ça devrait être bon

  17. #17
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Bonjour

    Finalement tout marche parfaitement de A à Z , et gràce a vous. merci encore.

    Avant de mettre [Resolu] je voulais juste savoir si c'était possible lors de l'ouverture et fermeture d'un classeur d'éviter les (UPDATE/ dont update) et ala fermeture les question sur save Clipboard. (j'utilise déjà )
    mais c pas suffisant

  18. #18
    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 546
    Points
    15 546
    Par défaut
    As-tu testé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.displayalerts = false
    dans Workbook_Open

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

Discussions similaires

  1. [WD17] Copier feuille excel vers un autre classeur‎
    Par THOMAS Patrice dans le forum WinDev
    Réponses: 4
    Dernier message: 30/05/2012, 16h17
  2. [XL-2007] exporter les une ligne excel vers un autre classeur excel en vba
    Par Maxim0 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/06/2011, 22h55
  3. [XL-2007] exporter les donnée excel vers un autre classeur excel en vba
    Par aminee1666 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/06/2011, 11h58
  4. Copier des données d'une feuille excel vers plusieurs autres
    Par LeeBamboo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/08/2008, 16h46
  5. Réponses: 4
    Dernier message: 27/04/2007, 13h19

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