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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Ouvrir un fichier txt sans spécifier son nom

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Ouvrir un fichier txt sans spécifier son nom

n°1429047
Fant0mas
Posté le 22-08-2006 à 00:03:59  profilanswer
 

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
mood
Publicité
Posté le 22-08-2006 à 00:03:59  profilanswer
 

n°1429048
kiki29
Posté le 22-08-2006 à 00:08:57  profilanswer
 

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
n°1429741
Fant0mas
Posté le 23-08-2006 à 07:09:59  profilanswer
 

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
n°1429744
seniorpapo​u
Posté le 23-08-2006 à 07:23:48  profilanswer
 

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

n°1430252
Fant0mas
Posté le 23-08-2006 à 22:16:44  profilanswer
 

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)

n°1430278
galopin01
Posté le 23-08-2006 à 22:54:06  profilanswer
 

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+

n°1431728
Fant0mas
Posté le 26-08-2006 à 06:20:11  profilanswer
 

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

n°1431730
seniorpapo​u
Posté le 26-08-2006 à 07:00:44  profilanswer
 

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
n°1433939
Fant0mas
Posté le 30-08-2006 à 19:43:16  profilanswer
 

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)

n°1433941
galopin01
Posté le 30-08-2006 à 19:52:01  profilanswer
 

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+

mood
Publicité
Posté le 30-08-2006 à 19:52:01  profilanswer
 

n°1433942
Fant0mas
Posté le 30-08-2006 à 19:52:34  profilanswer
 

haha, merci, j'essaie tout de suite

n°1433947
Fant0mas
Posté le 30-08-2006 à 19:57:02  profilanswer
 

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!

n°1433951
seniorpapo​u
Posté le 30-08-2006 à 20:02:01  profilanswer
 

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

n°1434260
Fant0mas
Posté le 31-08-2006 à 14:16:36  profilanswer
 

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


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

  Ouvrir un fichier txt sans spécifier son nom

 

Sujets relatifs
Récupérer morceau par morceau le contenu binaire d'un fichierTelechargement de fichier
Gestion de fichier et de dossierBatch - Supprimer l'espace à la fin de chaque ligne d'un fichier.txt
creer toutes les minutes un fichier au format RSS en C#[C#.Net] Bouton pour télécharger un fichier
Forcer l'enregistrement d'un fichier RTF ouvert via IEProbleme de socket ? ou de mise en place dans un fichier ?
[Help] Renommer une liste de fichier 
Plus de sujets relatifs à : Ouvrir un fichier txt sans spécifier son nom


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