copier des données de plusieurs fichiers pour en faire un seul

copier des données de plusieurs fichiers pour en faire un seul - VB/VBA/VBS - Programmation

Marsh Posté le 07-01-2013 à 14:31:22    

Bonjour,
Je souhaite créer un fichier excel récapitulatif reprenant les données de plusieurs autres fichiers situés dans le même dossier.
Le nombre de fichier augmente régulièrement.
Les fichiers sont tous identiques, donc les données à copier sont toutes dans les mêmes cellules.
J'ai réussi à faire une macro pour lister tous les fichiers compris dans mon dossier.
Comment puis-je copier les données dont j'ai besoin ? (dois-je forcément ouvrir à chaque fois le fichier puis le refermer à la fin de la manip ?)
 
Merci d'avance pour vos réponses

Reply

Marsh Posté le 07-01-2013 à 14:31:22   

Reply

Marsh Posté le 07-01-2013 à 22:30:13    

J'ai réussi à ouvrir un fichier, copier ce dont j'avais besoin puis le fermer mais tout ceci en donnant précisemment le nom du fichier à ouvrir. Je souhaiterais pouvoir ouvrir un à un tous les fichiers de ce dossier (fichier1.xls, fichier2.xls,fichier3.xls etc...) pour qu'il copie les données interressantes.
Je pense qu'il faut utiliser une boucle avec une incrémentation mais je ne sais pas quoi utiliser.

Reply

Marsh Posté le 08-01-2013 à 08:10:52    

Hello,
 
Ajoute la référence microsoft scripting runtime  
 
puis:

Citation :


Sub dfg()
 
Dim filename As String
Dim oFSO As Scripting.FileSystemObject
Dim oFld As Scripting.Folder
Dim oFl As Scripting.File
 
Set oFSO = New Scripting.FileSystemObject
Set oFld = oFSO.GetFolder("E:\stellina_pics\" )  :o  
For Each oFl In oFld.Files
    filename = oFl.Name
    filename = oFl.Path
Next oFl
 
Set oFld = Nothing
Set oFSO = Nothing
 
End Sub


 
sinon il y a moyen de faire des requetes sans ouvrir les fichiers avec la librairie ADO.
En faisant des requetes SQL avec le path du fichier dans le FROM de mémoire.
 
Mais c'est + compliqué et je suis pas sur que ce soit + rapide surtout si tes fichiers sont petits...

Message cité 1 fois
Message édité par tarteflambee le 08-01-2013 à 08:19:58
Reply

Marsh Posté le 08-01-2013 à 09:15:35    

tarteflambee a écrit :

Hello,
 
Ajoute la référence microsoft scripting runtime  
 
puis:

Citation :


Sub dfg()
 
Dim filename As String
Dim oFSO As Scripting.FileSystemObject
Dim oFld As Scripting.Folder
Dim oFl As Scripting.File
 
Set oFSO = New Scripting.FileSystemObject
Set oFld = oFSO.GetFolder("E:\stellina_pics\" )  :o  
For Each oFl In oFld.Files
    filename = oFl.Name
    filename = oFl.Path
Next oFl
 
Set oFld = Nothing
Set oFSO = Nothing
 
End Sub


 
sinon il y a moyen de faire des requetes sans ouvrir les fichiers avec la librairie ADO.
En faisant des requetes SQL avec le path du fichier dans le FROM de mémoire.
 
Mais c'est + compliqué et je suis pas sur que ce soit + rapide surtout si tes fichiers sont petits...


 
Bonjour tarteflambee,
Je m'excuse mais étant débutant en vba j'ai du mal à comprendre ces lignes de commande.
Je vais poster les fichiers ce sera peut être plus simple à comprendre.
Merci tout de même pour cette réponse

Reply

Marsh Posté le 08-01-2013 à 19:36:02    

ok je détaille. En fait c'est une boucle qui permet de lister tous les fichiers du dossier:

 

Sub dfg()
 
Dim filename As String
Dim oFSO As Scripting.FileSystemObject 'objet qui permet de parcourir le disque dur
Dim oFld As Scripting.Folder 'objet qui représente un dossier
Dim oFl As Scripting.File 'objet qui représente un fichier
 
Set oFSO = New Scripting.FileSystemObject  'on crée le gestionnaire de fichier
Set oFld = oFSO.GetFolder("E:\stellina_pics\" )  :o   'on défini quel dossier on veut parcourir => ici le dossier stellina_pics dans le disque E => dans la variable oFld
For Each oFl In oFld.Files 'boucle qui liste les fichiers qui sont dans le dossier
    filename = oFl.Name 'on récupère le nom de chaque fichier
    filename = oFl.Path 'ou le chemin complet
    Tu peux donc insérer ta macro qui traite un fichier ici, tu as le nom du fichier dans la variable filename
    et ca va boucler sur tous les fichiers du dossier
Next oFl
 
Set oFld = Nothing
Set oFSO = Nothing
 
End Sub

 

et pour la référence c'est dans Outils > Référence: tu coches "Microsoft scripting runtime" et tu sauvegardes


Message édité par tarteflambee le 08-01-2013 à 19:39:42
Reply

Marsh Posté le 08-01-2013 à 21:25:41    

OK merci pour cette réponse je vais tester cela.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed