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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Gestion de plusieurs fichiers Excel.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Gestion de plusieurs fichiers Excel.

n°1585064
lestagiair​e
Posté le 11-07-2007 à 10:25:33  profilanswer
 

Bonjour à toutes et à tous,  
 
Tout d'abord je veux remercier ce forum qui continue est continuera à m'enlever de grosses épines du pied!!!
Merci à toutes et à tous pour votre patience et vos idées!
 
 
Aujourd'hui je suis confronté à un problème de haut niveau (en tout cas pour moi!)  :ouch: .  
Je dispose d'un dossier contenant un certain nombre de fichier Excel, tous renomés sous la forme "lot n°xxxxxxx ../../2006" ou (2007).
Mon but serai de creer par macro, une application qui demanderait à l'utilisateur période qu'il souhaiterai se voir afficher (il taperait donc par ex: 11/05/2006 jusqu'a 11/06/2007) et ensuite irait selectionner les fichiers correspondant à la période pour copier dans chaque fichier 3 cellules se trouvant sur la meme feuille, pour les coller dans un autre nouveau classeur.
Un affichage des valeurs via graphique se fera dans un autre temps.
 
 
J'ai déjà lu l'excellent lien de kiki29 qui concerne à peu près le même type d'application mais je n'y comprend malheureusement pas grand chose :sweat: :
 
http://forum.hardware.fr/hfr/Progr [...] 0232_1.htm
 
La première étape serait déja de savoir la dynamique que mon programme doit avoir, mais je n'ai strictement aucune idée de par où commencer!
 
Première question: Comment je peux faire pour selectionner les fichiers voulu?
 
Si quelqu'un à une idée, une suggestion, ou même un lien qui parlerait de la même chose qu'il n'hésite pas.
Merci d'avoir lu ce long post et merci d'avance.

mood
Publicité
Posté le 11-07-2007 à 10:25:33  profilanswer
 

n°1585075
tegu
Posté le 11-07-2007 à 10:54:47  profilanswer
 

La fonction Dir() permet de récupérer la liste des fichiers d'un répertoire avec la possibilité d'utiliser des caractères génériques (? *)
Le sujet est abordé régulièrement sur le forum.
Le problème est qu'on ne peut pas faire un filtre entre bornes avec Dir()

 

Il faudrait donc plus probablement récupérer dans un tableau tous les noms de fichiers (avec Dir() quand même), transformer la date du fichier en date exploitable par VB (-> CDate(Mid$(...)) ) et filtrer ensuite par rapport à la période saisie.

  


Message édité par tegu le 11-07-2007 à 10:55:14
n°1585143
kiki29
Posté le 11-07-2007 à 13:04:17  profilanswer
 

Comment sont dénommés les fichiers à traiter ?
Ces noms comportent-ils une date et sous quelle forme ? Fichier_20060101.xls ?
Ou est ce la date de création, modification qui doit être prise en compte ?


Message édité par kiki29 le 11-07-2007 à 13:12:15
n°1585188
lestagiair​e
Posté le 11-07-2007 à 14:18:07  profilanswer
 

Hello tegu et kiki29,  
 
Merci à vous deux de vous pencher sur mon problème.
 
>tegu
Ma réponse st tardiev désolé mais j'étais en train de me reseigner sur la fonction Dir() et CDate().
Pour la fonction Dir, je ne saisi pas comment je peux lister l'intégrale de tous mes fichiers, dans l'aide il me dise que Dir ne renvoi que le premier fichier trouvé, mais si on veut les autres fichiers il faut rappeler la fonction. Mais comment faire si on ne connait pas le nombre exact de fichiers qui composent le classeur.
 
>kiki29
Mes fichiers sont sous la forme jj-mm-aaaa lot n°............xls.
 
 
Merci !
 
Julien.

n°1585204
lestagiair​e
Posté le 11-07-2007 à 14:48:32  profilanswer
 

Hello tout le monde,  
 
Pour la fonction Dir c'est bon, j'ai pu récuperer tous les fichiers de mon répertoire. (un simple tant que suffisait...) :)
 
Par contre j'ai lu l'aide, mais pourquoi faut il que j'utilise un CDate??

n°1585314
tegu
Posté le 11-07-2007 à 16:29:04  profilanswer
 

Tu vas extraire du nom de tes fichiers la date qui leur est associée (jj-mm-aaaa) par un mid$() ou un truc du genre, puis stocker cette date dans une variable de type Date grâce à CDate().
C'est le meilleur moyen de pouvoir faire des traitements de comparaison de dates (entre bornes pour ton cas).

n°1585323
lestagiair​e
Posté le 11-07-2007 à 16:37:04  profilanswer
 

Re tegu,  
 
D'accord je comprends mieu pourquoi utiliser CDate mais uen fois que j'aurai à part dans uen variables toutes les dates extraites ensuite comment je reviens à mes lignes contenant le nom des différents fichiers pour savoir lesquels suprimer?

n°1585361
tegu
Posté le 11-07-2007 à 17:32:30  profilanswer
 

Si tu stockes les noms des fichiers dans un tableau en remplissant une zone de celui-ci avec la conversion de date pour chacun des fichiers, tu vas t'en sortir.

n°1585416
86vomito33
Posté le 11-07-2007 à 19:26:59  profilanswer
 

avec cette structure c'est faisable à mon avis
Set fs = CreateObject("Scripting.FileSystemObject" )
Set f = fs.GetFolder(specdossier)
Set fc = f.Files
For Each f1 in fc
...tu verifie que ca appartient à la période et tu copie
Next
 
faut voire
 

n°1585596
lestagiair​e
Posté le 12-07-2007 à 10:21:27  profilanswer
 

Hello tegu et 86vomito33,  
 
Merci pour vos conseils,  
 
> et ensuite Tegu je fais une sorte de tri personnalisé où je selectionne les colones avec les dates compatibles et je supprimes les dates n'appartenant pas à la période. c'est ça ? :)
 
>86vomito33, je vais essayer ta fonction mais je ne comprend pas ce que dois faire de For Each f1 in fc???
 
Merci.

mood
Publicité
Posté le 12-07-2007 à 10:21:27  profilanswer
 

n°1585639
tegu
Posté le 12-07-2007 à 11:17:00  profilanswer
 

Dans le code de 86vomito33, fc est la collection des fichiers récupérés.
f1 étant un objet fichier, la syntaxe « for each f1 in fc » signifie qu'il boucle dans la collection des fichiers et à chaque itération copie un objet fichier dans f1.
Donc pour chaque f1 tu pourras lire son nom, en extraire la date (comme je te l'ai dit), puis comparer cette date à ta période, et enfin choisir si tu dois exploiter ce fichier.
C'est plus clair ?


Message édité par tegu le 12-07-2007 à 11:17:29
n°1585680
lestagiair​e
Posté le 12-07-2007 à 11:53:58  profilanswer
 

Re tegu,  
 
Donc si j'ai bien compris c'est dans la boucle For il faudra que je sorte la date du fichier et que je la compare avec la période.
Mais existe t'il uen fonction en VBA qui compare toute seule des dates? ou bien dois je reprendre par exemple un code que me donnera un enregistrement de macro sur un filtre personnalisé?
 
Merci tegu pour ton aide c'est super sympa. :)
 
Julien.

n°1585759
tegu
Posté le 12-07-2007 à 13:40:06  profilanswer
 

Si je te dis de convertir au format Date c'est que la comparaison entre deux variable de type Date se fait aussi simplement qu'entre deux nombres : If date1 > date2 Then...

 

Tu devrais un peu te renseigner sur le langage que tu utilises, lire l'aide en ligne, et un bouquin. Ça t'éviterai de perdre du temps sur des notions de base.


Message édité par tegu le 12-07-2007 à 13:40:36

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

  Gestion de plusieurs fichiers Excel.

 

Sujets relatifs
[VBA/EXCEL] Ligne ignorée dans la macro[SQL Server][Gestion de fichier] Ouvrir lire créer un fichier via SQL?
[AS3]gestion d'évènement [RESOLU] mais autre problèmeALT+TAB pour feuilles EXCEL
[Excel] extraire une valeur d'un tableau en fonction de 2 indextri tableau excel
[EXCEL] Insérer contenu d'une feuille dans un autre fichierCréer une gestion de comptes pour des downloads
VBA Excel Impression sur critèrespasser plusieurs tableaux dans un formulaire
Plus de sujets relatifs à : Gestion de plusieurs fichiers Excel.


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