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 :

Identifier et copier coller tous les fichiers Excel d'un rep + les sous rep


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mai 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Identifier et copier coller tous les fichiers Excel d'un rep + les sous rep
    Bonjour à tous,
    J'ai bien regardé les messages précédents, en ait intégré une partie mais je n'arrive pas exactement à ce que je veux faire. Dc je vais poser la question.

    Le chemin est en paramètre en A1 par ex (X:\Donnees\Emergency test)
    Je souhaite que la macro identifie tous les fichiers Excel (qu'ils soient ds le répertoire lui-meme, ou dans les sous-rep ou les sous-sous rep...), qu'elle ouvre les fichiers et les copie colle en valeur.

    Le dernière partie est facile. C'est le début qui me pose pb.
    J'ai essayé plusieurs choses mais mon code actuel ne marche que pour les ss dossiers

    OK pr les Excels ds le sous dossier X:\Donnees\Emergency test\1
    OK pr les Excels ds le sous dossier X:\Donnees\Emergency test\2
    mais pas OK pr les Excels ds le sous dossier X:\Donnees\Emergency test\1\ssss
    mais pas OK pr les Excels ds le sous dossier X:\Donnees\Emergency test\glegle.xls

    Voila, c'est tout simple, mais si vous avez qq minutes pour m'aider, ca serait sympa.merci

    Guillaume

    Le code pour lister les fichiers et leur chemin est:

    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
      Dim fso As FileSystemObject
      Dim oSourceFolder As Scripting.Folder
      Dim oSubFolder As Scripting.Folder
      Dim oFile As Scripting.File
      Dim oFolder As Scripting.Folder
      Dim strFolderName As String
      Dim i As Long
        Set fso = CreateObject("Scripting.FileSystemObject")
        Cells(1, 1).Value = "Parent folder"
        Cells(1, 2).Value = "File name"
       strFolderName = Path_General
        i = 2
     Set oSourceFolder = fso.GetFolder(strFolderName)
      For Each oFolder In oSourceFolder.SubFolders
                For Each oFile In oFolder.Files
                Cells(i, 1).Value = oFile.ParentFolder.Path
                Cells(i, 2).Value = oFile.Name
                i = i + 1
                Next oFile
        Next oFolder

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    Bonjour,

    il faut faire une fonction récursive ou plus simplement utiliser FileSearch avec SearchSubFolder à True.

    Exemple de fonction récursive
    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
    Public Fso, oSourceFolder, oSubfolder, oFile
    Dim i As Long
    Function GetFichier(FolderPath As String, FileExt As string, InSubFolder as boolean)
     Set oSourceFolder = Fso.GetFolder(FolderPath)
     For Each oFile In oSourceFolder.Files
        If Right(oFile.Name, 3) = FileExt Then
            Cells(i, 1) = FolderPath
            Cells(i, 2) = oFile.Name
            i = i + 1
        End If
     Next
     If Not InSubFolder Then Exit Function
    'Rechercher dans les sous-dossiers
     For Each oSubfolder In oSourceFolder.subFolders
       GetFichier oSubFolder.Path, FileType, True
     Next
    End Function
    Et pour utiliser la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub RecherFichier()
      Cells(1,1)="Parent Folder" : Cells(1 2)="File Name"
      i=2
     Set Fso=New Scripting.FileSystemObject 
     GetFichier "X:\Donnees\Emergency test", "xls", True 
     Set Fso=Nothing
    End sub

Discussions similaires

  1. [XL-97] Copier coller d'un fichier Excel '.xlsm' vers un fichier .csv
    Par TraderAS dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/03/2013, 12h18
  2. Copier / Coller entre 2 fichiers excel
    Par roberto75 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/03/2011, 12h25
  3. Copier coller entre deux fichiers excel par macro
    Par miss-o-21 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/11/2009, 14h45
  4. [XL-2003] Copier/Coller cellules entre fichiers excel
    Par Nairolf87 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/05/2009, 16h25
  5. boucle avec copier coller dans un fichier excel
    Par Chalu_C_Momo dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 20/11/2008, 16h45

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