Rechercher pour modifier

vegetalain Messages postés 747 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 11 août 2022 - 14 déc. 2006 à 10:57
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 - 14 déc. 2006 à 11:39
Slt, voilà : Je voudrais savoir si l'on peut rechercher par ex. tout
les fichiers txt d'un disque dur, et modifier le contenu de façon
automatique.

J'ai des tas de fichiers text (c'est un format que j'aime bien :P) sur
mon pc qui concerne un peu tout les sujets, et je me suis amusé à faire
une mise en page qui m'est particulière (asciiart et cie). Problème :
j'aimerais changer la "tronche" de mes documents text, seulement tout
reprendre un à un c'est pas top (j'en ai pas loin de 850). Donc,
peut-on genre rechercher tous les fichiers txt sur un hd, puis
remplacer une chaine par une autre, ou sélectionner genre "tout" enfin
ce genre d'action quoi...


J'avais pensé pitète à tout chercher et à tout lister dans une liste
déroulante, et puis à chaque ligne de cette liste faire les actions
suivantes :


1 - ouvrir le fichier dans une textbox (ça ok)


2 - rechercher remplacer les caractères (ça roule...)


3 - enregistrer ! (c bon aussi)


4 - fermer en vidant le champ texte ! (vivi !!!)


5 - passer au fichier de la ligne suivante, dans la liste déroulante (alors ça par contre...)


et ainsi de suite... mais j'avoue de pas savoir comme combiner tout ça :S


Merci pour vos idées parce que là je sais pas.

4 réponses

drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
14 déc. 2006 à 11:04
Salut voir la fonction recurcive de jrivet sur codyx pour parcourir les disques, voir utiliser InStr, et sur un topic posté ces derniers jours jrivet a apporté la solution à cette question, fais une petite recherche et tu auras ce que tu veux!

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
14 déc. 2006 à 11:06
http://www.vbfrance.com/infomsg_RECHERCHE-DOSSIERS_857539.aspx



(je sais julien j'aurai pas du lol!)

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
14 déc. 2006 à 11:19
Salut,
Merci pour la pub:
J'atais en train de préparer un réponse...

@+: Ju£i?n
Pensez: Réponse acceptée
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
14 déc. 2006 à 11:39
Salut,

Bon revenons à nos moutons. [auteurdetail.aspx?ID= 74457 vegetalain]
Pas besoin de passer par des textbox, ca va etre plus lent. (surtout si tu as 850 fichiers )

Je ne sais pas si ce qui est très rapide mais ca peu peu etre répondre à tes besoins (c'est bientôt noël alors soyons généreux).
Le code suivant va chercher de facon récursive dans le répertoire passé en paramètre la premiere des fichiers TXT

Il passe en revu tout les fichiers text les ouvrent, lit le contenu, remplace le text cherche par le text souhaite et sauvegarde de nouveau.
ATTENTION Si tu cherche dans tout C:\ ca va peu etre prendre du temps et toucher des fichiers que tu ne souhaites pas....
ATTENTION Bis, la recherche est sensible à la casse si il y a "Ceci " dans le fichier et que tu cherches "ceci" cela ne remplacera rien

Aller voici la procédure magique...

Private Sub ListeAllText(ByRef FSo As Object, ByVal Repertoire As String, ByVal Cherche As String, ByVal Remplace As String) 
Dim Fol 
Dim SubFol 
Dim Fil 
Dim Contenu As String 

    Set Fol = FSo.GetFolder(Repertoire) 
    'Pour chaque fichiers contenu dans repertoire
    For Each Fil In Fol.Files 
        'si l'extensiono correspond
        If  UCase (FSo.GetExtensionName(Fil.Path))  = "TXT" Then 
            'Lit le fichier
            Contenu =  FSo.OpenTextFile(Fil.Path, ForReading, False).ReadAll 
            'remplace le text cherche par le text voulu
            Contenu =  Replace (Contenu, Cherche, Remplace) 
            'sauvegarde le fichier
            Call FSo.OpenTextFile(Fil.Path, ForWriting, False).Write(Contenu) 
        End If 
    Next 

    For Each SubFol In Fol.SubFolders 
        'Appelle de la meme fonction pour les sous repertoire
        Call ListeAllText(FSo, SubFol.Path, Cherche, Remplace) 
    Next 

End Sub 

A appeler de la facon suivante:

Call ListeAllText(CreateObject("Scripting.FileSystemObject"), "C:", "Ca marche ", "C'est bientôt noël") 

@+: =89254 Ju£i?n
Pensez: Réponse acceptée
0
Rejoignez-nous