Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1368 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°2170114
vallou94
Posté le 07-01-2013 à 14:31:22  profilanswer
 

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

mood
Publicité
Posté le 07-01-2013 à 14:31:22  profilanswer
 

n°2170156
vallou94
Posté le 07-01-2013 à 22:30:13  profilanswer
 

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.

n°2170170
tarteflamb​ee
Posté le 08-01-2013 à 08:10:52  profilanswer
 

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
n°2170174
vallou94
Posté le 08-01-2013 à 09:15:35  profilanswer
 

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

n°2170297
tarteflamb​ee
Posté le 08-01-2013 à 19:36:02  profilanswer
 

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
n°2170310
vallou94
Posté le 08-01-2013 à 21:25:41  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 

Sujets relatifs
Merge de 2 fichiers textRécupérer des fichiers via wget et SFTP
Attribuer des .ico à des dossiers[VB.NET] Stocker des données non visibles par l'utilisateur
Envoyer plusieurs mails avec des conditions dans le message[c][Transfer de donnees d´un tableau bidimensionel vers unidimensione]
macro recherche cellules dans 2 fichiersEchanger simultanement des données
Extraire table mysql pour copier avec modif dans une autre 
Plus de sujets relatifs à : copier des données de plusieurs fichiers pour en faire un seul


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR