Macro : aller chercher des informations dans une série de classeur Excel

jujuh

XLDnaute Nouveau
Bonjour à tous,
je débute les macros et voici ce que j'aimerais réaliser :

J'ai une série de classeurs Excel : "réponse_1", "réponse_2"...."réponse_30".... (en fait je ne sais pas combien exactement...) qui sont rangés dans un fichier "01. Réponses Dep A1"

Et dans chacun de ces classeurs, je dois aller chercher des informations, les copier et les coller dans mon classeur base de données.

j'aimerais pouvoir automatiser les copier-coller à partir des classeurs réponse vers mon classeur base de données

Avez vous une idée ? Merci d'avance pour vos suggestions, je suis un peu " paumée :(

d'avance merci
 

CBernardT

XLDnaute Barbatruc
Re : Macro : aller chercher des informations dans une série de classeur Excel

Bonjour jujuh,

Tu écris :

"J'ai une série de classeurs Excel : "réponse_1", "réponse_2"...."réponse_30".... (en fait je ne sais pas combien exactement...) qui sont rangés dans un fichier "01. Réponses Dep A1""

Faut-il lire "répertoire" au lieu de "fichier" dans :

"qui sont rangés dans un fichier "01. Réponses Dep A1"
 

jujuh

XLDnaute Nouveau
Re : Macro : aller chercher des informations dans une série de classeur Excel

Bonjour Bernard,
oui tout à fait
ma série de classeurs source : "réponse_1.xls", "réponse_2.xls"...."réponse_30.xls"
dans un répertoire windows ""01. Réponses Dep A1"" dont le chemin est
D:\Mes Documents\01. Réponses Dep A1

J'ai l'impression qu'il faut que j'utilise un for each classeur de ma collection.. next.. mais je ne sais pas comment l'utiliser ...
aaaarghhh

si tu as des idées.. ;))
Merci d'avance
 

skoobi

XLDnaute Barbatruc
Re : Macro : aller chercher des informations dans une série de classeur Excel

Bonjour jujuh, Bernard,

pour manipuler des fichiers, utilise "FileSearch" par exemple, comme ceci:

Code:
Sub rechfich()
With Application.FileSearch
    .LookIn = "D:\VBA\Forum Excel"
    .SearchSubFolders = False
    .Filename = "*.xls"
    .FileType = msoFileTypeExcelWorkbooks
    If .Execute > 0 Then
        For i = 1 To .FoundFiles.Count
            Range("A" & i + 1).Value = .FoundFiles(i)
        Next i
    End If
End With
End Sub

Cette exemple écrit en colonne A la liste des fichiers excel se trouvant dans le répertoire "D:\VBA\Forum Excel".

Ca devrait t'aider.
 

jujuh

XLDnaute Nouveau
Re : Macro : aller chercher des informations dans une série de classeur Excel

Bonjour Skoobi,
merci pour ta réponse . mais je n'ai pas besoin de rechercher les fichiers.

Je voudrais automatiser une commande qui me permette d'aller chercher plusieurs infos dans des classeurs excel source tous rangés dans un repertoire (le nombre de classeurs excel source n'est pas défini).
le but étant de coller les info récupérées dans un classeur base de donnée.

Je pense que le code devrait donner à peu près ça :

Pour chaque classeur excel ("réponse_1.xls", "réponse_2.xls"...."réponse_n.xls"..) rangés dans le répertoire "01. Réponses Dep A1" (dont le chemin est
D:\Mes Documents\01. Réponses Dep A1)

faire les actions suivantes : copier XXXXX cellules pour les coller dans le classeur base de données : "base_de_données.xls"

.. et recommencer pour le classeur suivant..

mais franchementje n'en suis pas sure ..


Merci à tous pour votre aide!
Jujuh
 

jujuh

XLDnaute Nouveau
Re : Macro : aller chercher des informations dans une série de classeur Excel

En fait,pour aller jusqu'au bout de mon idée, j'ai l'impression que je bloque parce que je ne sais pas définir la "collection" de ma boucle for each.. Next

En fait je commencerais bien comme ça :
Dim WB as Worbook
For each WB in ?????? (comment définir cette "collection" ?)




.. to be continued...
 

Batiscaf

XLDnaute Occasionnel
Re : Macro : aller chercher des informations dans une série de classeur Excel

Bonjour Jujuh,
Il y a justement un fil qui pourrait t'aider car je viens de faire une macro dans ce but. J'ai aussi bénéficié du coup de main de KJIN.
Remonte de quelques minutes à un post qui s'appelle "VBA passer au classuer suivant sans rien faire".
Cdlt.
Batiscaf.
 

skoobi

XLDnaute Barbatruc
Re : Macro : aller chercher des informations dans une série de classeur Excel

Re,

je te propose ce code, commenté:

Code:
Sub test()
Dim Fich As Workbook
Dim Ws As Worksheet

With Application.FileSearch
'on recherche dans ce dossier:
    .LookIn = "D:\Mes Documents\01. Réponses Dep A1"
    .SearchSubFolders = False
'tous les fichiers xls
    .Filename = "*.xls"
    .FileType = msoFileTypeExcelWorkbooks
'si on trouve au-moins 1 fichier
    If .Execute > 0 Then
    'ici la boucle sur le nombre de fichier
        For i = 1 To .FoundFiles.Count
        'on attribue à la variable "Fich" le n'ième fichier "i" trouvé dans la boucle.
        'Ce fichier est chargé dans la mémoire (afin de pouvoir le consulter)
        'mais n'est pas ouvert, traitement plus rapide.
            Set Fich = GetObject(.FoundFiles(i))
          '"Ws" correspond à la feuille 1 du fichier
            Set Ws = Fich.Sheets(1)
          'on copie la plage A1:A10 dans la colonne A pour le fichier1,
          'dans la colonne B pour le fichier2, etc...
            Ws.Range("A1:A10").Copy = Cells(1, i)
[COLOR=Red][B]'TRES IMPORTANT: FERMER LE FICHIER. Et oui, même si le fichier n'est pas ouvert,[/B][/COLOR]
[B][COLOR=Red]'il faut néanmoins le "décharger" de la mémoire.[/COLOR][/B]
            Fich.Close
        Next i
    End If
End With
End Sub
bon test.
 

Discussions similaires

Statistiques des forums

Discussions
312 916
Messages
2 093 581
Membres
105 758
dernier inscrit
RIFAHI MOHAMED