Ouvrir un fichier txt sans spécifier son nom

Ouvrir un fichier txt sans spécifier son nom - VB/VBA/VBS - Programmation

Marsh Posté le 22-08-2006 à 00:03:59    

dans un répertoire, j'ai une trentaine de fichiers txt
Je voudrais les ouvrir, un par un, et à chaque fois récupérer un morceau du contenu afin de les enregistrer sous un nom qui dépendra de ce que la macro a lu dans le fichier txt.
 
Est il possible d'ouvrir tous les fichiers de ce répertoire, un par un, sans connaitre le nom de chaque fichier ou faut il absolument spécifier le nom des fichiers que l'on veut ouvrir?
 
Autrement dit: s'il y a A.txt , B.txt et C.txt dans mon répertoire.
Ma macro peut elle: ouvrir 1er fichier, ouvrir 2è fichier, ouvrir 3è fichier
ou faut il lui dire: ouvrir fichier "A.txt", ouvrir "B.txt" et "C.txt"?
 
pour le moment je fais tout ca à la main, et évidemment c un peu gavant
merci


Message édité par Fant0mas le 22-08-2006 à 00:04:54
Reply

Marsh Posté le 22-08-2006 à 00:03:59   

Reply

Marsh Posté le 22-08-2006 à 00:08:57    

s'inspirer pour la lecture des noms de fichiers dans un dossier de http://forum.hardware.fr/hardwaref [...] 5080-1.htm
 
Affecter un bouton à la macro Tst
Placer les noms récupérés dans les cellules d'une colonne d'une feuille excel
( en remplaçant le Debug.Print )
 
Puis un autre à ta macro de traitement en lui passant les noms de fichiers


Message édité par kiki29 le 22-08-2006 à 00:31:03
Reply

Marsh Posté le 23-08-2006 à 07:09:59    

merci bcp
j'ai utilisé la sub pour pouvoir ouvrir les fichiers sans en connaitre le nom
pour le reste j'ai pu me débrouiller
en gros j'ouvre le fichier txt dans excel
j'extrais des informations de ce fichier txt pour déterminer le nom que je veux lui donner
je l'enregistre sous ce nouveau nom
 
par contre, si je demande a excel de le fermer, il me demande systématiquement si je veux l'enregistrer, ce qui est gavant étant donné que plusieurs dizaines de fichiers sont traités
j'ai essayé de créer une macro avec l'assistant pour voir comment il codait la fermeture d'un fichier sans qu'on en demande l'enregistrement
mais ca donne juste un truc du genre activewindow.close, sans spécification du fait qu'on ne veut pas ou qu'on veut enregistrer en fermant
 
qn sait comme fermer lefichier sans qu'on nous demande si on veut enregistrer?


Message édité par Fant0mas le 23-08-2006 à 07:11:03
Reply

Marsh Posté le 23-08-2006 à 07:23:48    

Bonjour,
Cet exemple montre comment fermer le classeur Book1.xls sans inviter l'utilisateur à enregistrer les modifications. Les modifications apportées à Book1.xls ne sont pas enregistrées.
 
Application.DisplayAlerts = False
Workbooks("BOOK1.XLS" ).Close
Application.DisplayAlerts = True
 
C'est cela que tu veux?
Cordialement

Reply

Marsh Posté le 23-08-2006 à 22:16:44    

oui, totalement
merci bcp pour ton aide
 
j'aurais galéré un (très) long moment si tous les deux vous ne m'aviez pas aidé franchement
 
dernière question, pas vraiment solvable je pense:
si je lance ma macro, qui va ouvrir puis enregistrer sous un autre nom ces qq dizaines de fichiers, elle ne va pas parvenir à ouvrir le premier fichier si je n'ai pas précédémment ouvert un des fichiers txt à la main avec excel (je le referme ensuite et lance la macro)
c comme ci le chemin des fichiers était un peu trop compliqué pour qu'excel s'y retrouve tout seul.  (il y a 6 sous répertoires avant d'accéder aux fichiers txt, et plusieurs répertoires ont des noms un peu long, ce qui m'a déjà posé des pbs avec windows)
mais si je déplace mes fichiers txt dans un répertoire au chemin moins long, ca ne marche tjs pas
c pas bien grave, je sais qu'il faut simplement ouvrir un fichier a la main "pour amorcer la pompe" mais c bizarre
ca me rappelle qd au boulot VB avait un comportement bizarre (genre une variable integer, boucle de 1 à 100, ne s'arrêtait jamais car à aucun moment la boucle ne détectait i=100. Ca peut arriver qd on déclare i comme un double et alors on peut avoir i=100,00000000001 d'oà le pb dans le test de sortie de la boucle itérative. Mais là ce n'était pas le cas. Donc 15min a se creuser la tete, au final je reboote et ca fonctionne. Comme quoi VB c tjs super "professionnel comme language)

Reply

Marsh Posté le 23-08-2006 à 22:54:06    

Bonsoir,
Bien sur que ça peut se résoudre :
il faut juste faire la différence entre le CurDir : Dossier par défaut d'Excel (Outils / Options / Général ) et le CurDir que tu as si tu ouvres un classeur dans un autre répertoire. Pour passer du CurDir actuel à un autre CurDir utilise ChDir...
Voir l'aide d'Excel pour ces mots.
 
A+

Reply

Marsh Posté le 26-08-2006 à 06:20:11    

str1 = CurDir() <=on obtient str1="D\:"
ChDir "C:\"
str1 = CurDir() <=on obtient str1="D\:" alors qu'on s'attendait àà obtenir "C:\"

Reply

Marsh Posté le 26-08-2006 à 07:00:44    

Bonjour,
j'ai essayé , avecC:/ et C:\  et les deux fonctionnent, la séquence que tu donnes dans ton post est-elle vraiment celle que tu as dans ton code?
Cordialement


Message édité par seniorpapou le 26-08-2006 à 10:34:04
Reply

Marsh Posté le 30-08-2006 à 19:43:16    

oui, tout a fait, voici le copier coller de ce qu'il y a dans mon prog:
strAn = CurDir()
ChDir "C:\"
strAn = CurDir()
 
(et dim strAn as string en début de sub)

Reply

Marsh Posté le 30-08-2006 à 19:52:01    

Quand vous aurez tout dit...
 
Pour changer de lecteur il faut utiliser  
 
ChDrive "C"
(avec cette syntaxe)
en suite on peut travailler sur les Dir, ChDir
 
A+

Reply

Marsh Posté le 30-08-2006 à 19:52:01   

Reply

Marsh Posté le 30-08-2006 à 19:52:34    

haha, merci, j'essaie tout de suite

Reply

Marsh Posté le 30-08-2006 à 19:57:02    

voilà donc la syntaxe "définitive" qui marche chez moi
ChDrive "C"
ChDir "C\blabla\blabla\blabla\" bref j'entre le chemin complet
 
merci à tous pour votre aide!

Reply

Marsh Posté le 30-08-2006 à 20:02:01    

Bonsoir,
bien vu galopin01, j'avais testé avec des répertoires sur C: seulement.
Conclusion: j'ai très mal lu la question
Cordialement

Reply

Marsh Posté le 31-08-2006 à 14:16:36    

seniorpapou a écrit :

Bonsoir,
bien vu galopin01, j'avais testé avec des répertoires sur C: seulement.
Conclusion: j'ai très mal lu la question
Cordialement


salut seniorpapou
franchement t'en fais pas car tu m'as énormément aidé, notamment sur le fait de fermer chaque fichier sans que l'algo me demande à chaque fois si je veux enregistrer, car avec 50 fichier ct super galère
merci encore
bye

Reply

Sujets relatifs:

Leave a Replay

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