1. Ce site utilise des "témoins de connexion" (cookies) conformes aux textes de l'Union Européenne. Continuer à naviguer sur nos pages vaut acceptation de notre règlement en la matière. En savoir plus.

Rechercher fichier txt - remplacer des caractères

Discussion dans 'Forum Excel' démarrée par kiki31140, 11 Janvier 2019.

  1. kiki31140

    kiki31140 XLDnaute Junior

    Inscrit depuis le :
    25 Juin 2013
    Messages :
    52
    "J'aime" reçus :
    0
    Habite à:
    toulouse
    Utilise:
    Excel 2010 (PC)
    Bonjour forum et meilleurs voeux à tous

    Voici ma nouvelle problématique.
    J'ai un dossier avec 10 repertoires et plus d'une cinquantaine de sous-repertoires
    dans certains sous-repertoire, j'ai un fichier texte "test-info.txt" avec des une donnée FMxx

    Je n'ai pas trouvé vraiment de code car beaucoup de sujet.
    je voudrais faire une recherche dans ce dossier, de tous les fichiers texte et remplacer la donnée FMxx par la donnée écrite en B1 du meme type (FM547 par exemple)
    j'arrive , par un scanne, à trouver tous les fichier txt, par contre, je ne trouve pas d'info pour l'ouvrir, remplacer les caractères, puis sauvegarder.

    Par avance, merci et bon week-end
     
  2. Chargement...

    Discussions similaires - Rechercher fichier txt Forum Date
    XL 2013 [Presque résolu] Rechercher mot de passe dans fichier .txt Forum Excel 13 Mars 2018
    rechercher chaine de caractère dans fichier txt Forum Excel 20 Octobre 2016
    rechercher le nom d'un fichier .txt dans un dossier et le renommer.... Forum Excel 8 Avril 2008
    Rechercher une donnée sur plusieurs fichiers Forum Excel 9 Octobre 2018
    Rechercher et ouvrir un fichier Word sur son Pc Forum Excel 26 Avril 2018

  3. sousou

    sousou XLDnaute Accro

    Inscrit depuis le :
    21 Février 2005
    Messages :
    1609
    "J'aime" reçus :
    62
    Habite à:
    La Garenne Colombes
    Utilise:
    Excel 2010 (PC)
    Bonjour
    Ca doit être jouable, mais il faudrait plus de précision sur la forme de ton fichier texte, et celle de ton fichier excel
    Envoi des exemples
    de plus envoi la structures des dossiers. y a t-il des sous répertoires dans les sous-répertoire ect...
     
  4. job75

    job75 XLDnaute Barbatruc

    Inscrit depuis le :
    15 Mai 2008
    Messages :
    26037
    "J'aime" reçus :
    2235
    Sexe :
    Masculin
    Habite à:
    Paris
    Utilise:
    Excel 2013 (PC)
    Bonsoir kiki31140, sousou,
    Code (Text):
    Sub FichierTexte()
    Dim nomfichier$, modif$, fso As Object, sf As Object, sf1 As Object, f As Object, n&, a$()
    nomfichier = "test-info.txt" 'à adapter
    modif = [B1] '"FM547" 'à adapter
    Set fso = CreateObject("Scripting.FileSystemObject")
    For Each sf In fso.GetFolder(ThisWorkbook.Path).subfolders
        For Each sf1 In fso.GetFolder(sf.Path).subfolders
            For Each f In fso.GetFolder(sf1.Path).Files
                If f.Name = nomfichier Then
                    Open f.Path For Input As #1 '1ère ouverture
                    While Not EOF(1) 'EndOfFile: fin du fichier
                        n = n + 1
                        ReDim Preserve a(1 To n)
                        Line Input #1, a(n)
                        If a(n) Like "FM*" Then a(n) = modif
                    Wend
                    Close #1 '1ère fermeture
                    Open f.Path For Output As #1 '2ème ouverture
                    Print #1, Join(a, vbCrLf)
                    Close #1 '2ème fermeture
                End If
    Next f, sf1, sf
    End Sub
    Les fichiers "test-info.txt" doivent se trouver dans le 2ème niveau d'arborescence après le dossier du fichier Excel.

    Le traitement séquentiel de chaque fichier est très rapide.

    A+
     
    BrunoM45 aime votre message.
  5. sousou

    sousou XLDnaute Accro

    Inscrit depuis le :
    21 Février 2005
    Messages :
    1609
    "J'aime" reçus :
    62
    Habite à:
    La Garenne Colombes
    Utilise:
    Excel 2010 (PC)
    Bonjour job75 et kiki31
    Sans réponse, je dépose quand même ma contribution pour le fun;) avec une analyse récursive des dossiers
    Joint, un dossier compressé pour tester la configuration
     

    Pièces jointes:

    • test.zip
      Taille du fichier:
      16.3 Ko
      Affichages:
      4
  6. kiki31140

    kiki31140 XLDnaute Junior

    Inscrit depuis le :
    25 Juin 2013
    Messages :
    52
    "J'aime" reçus :
    0
    Habite à:
    toulouse
    Utilise:
    Excel 2010 (PC)
    Bonjour
    désolé pour la réponse tardive (WE chargé)
    je vais tester vos propositions.
    Sinon, voici les fichiers demandés

    a très vite
     

    Pièces jointes:

  7. kiki31140

    kiki31140 XLDnaute Junior

    Inscrit depuis le :
    25 Juin 2013
    Messages :
    52
    "J'aime" reçus :
    0
    Habite à:
    toulouse
    Utilise:
    Excel 2010 (PC)
    pour info, le fichier txt peut se trouver en 3ème, 4ème ou 5ème niveau

    kiki
     
  8. job75

    job75 XLDnaute Barbatruc

    Inscrit depuis le :
    15 Mai 2008
    Messages :
    26037
    "J'aime" reçus :
    2235
    Sexe :
    Masculin
    Habite à:
    Paris
    Utilise:
    Excel 2013 (PC)
    Bonjour kiki31140, sousou, le forum,
    Code (Text):
    Const nomfichier$ = "test_info.txt" 'en minuscules par sécurité
    Dim modif$, fso As Object 'mémorise les variables

    Sub Dossiers()
    Dim sf1 As Object, sf2 As Object, sf3 As Object, sf4 As Object, sf5 As Object
    modif = [B1] 'à adapter
    Set fso = CreateObject("Scripting.FileSystemObject")
    Fichiers fso.GetFolder(ThisWorkbook.Path) 'niveau 0
    For Each sf1 In fso.GetFolder(ThisWorkbook.Path).subfolders
        Fichiers sf1 'niveau 1
        For Each sf2 In fso.GetFolder(sf1.Path).subfolders
            Fichiers sf2 'niveau 2
            For Each sf3 In fso.GetFolder(sf2.Path).subfolders
                Fichiers sf3 'niveau 3
                For Each sf4 In fso.GetFolder(sf3.Path).subfolders
                    Fichiers sf4 'niveau 4
                    For Each sf5 In fso.GetFolder(sf4.Path).subfolders
                        Fichiers sf5 'niveau 5
    Next sf5, sf4, sf3, sf2, sf1
    Set fso = Nothing
    End Sub

    Sub Fichiers(sf As Object)
    Dim f As Object, n&, a$(), p%
    For Each f In fso.GetFolder(sf.Path).Files
        If LCase(f.Name) = nomfichier Then 'minuscules
            Open f.Path For Input As #1 '1ère ouverture
            n = 0
            While Not EOF(1) 'EndOfFile: fin du fichier
                n = n + 1
                ReDim Preserve a(1 To n)
                Line Input #1, a(n)
                p = InStr(a(n), "FM")
                If p Then a(n) = Left(a(n), p - 1) & modif
            Wend
            Close #1 '1ère fermeture
            Open f.Path For Output As #1 '2ème ouverture
            Print #1, Join(a, vbCrLf)
            Close #1 '2ème fermeture
        End If
    Next
    End Sub
    Les fichiers de tous les niveaux de 0 à 5 sont étudiés.

    Si l'on est sûr qu'il n'y a pas de fichiers textes au niveau x supprimer l'instruction Fichiers sfx 'niveau x

    Fichiers zippés joints.

    A+
     

    Pièces jointes:

  9. kiki31140

    kiki31140 XLDnaute Junior

    Inscrit depuis le :
    25 Juin 2013
    Messages :
    52
    "J'aime" reçus :
    0
    Habite à:
    toulouse
    Utilise:
    Excel 2010 (PC)
    Re_bonjour forum
    c'est exactement cela que je cherche... j'étais parti un peu trop loin avec mon code.

    Merci Job75, merci sousou pour vos contributions
    bonne journée à tous
     

Partager cette page