IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

[VBA] remplacer des caractères dans un .txt


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 218
    Par défaut [VBA] remplacer des caractères dans un .txt
    Bonjour,

    J'utilise le code suivant, récupéré sur codesource :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Private Function ChangeWords(sWordsToRemove As String, sWordsToChange As String, sFile As String) As Boolean
        If Dir(sFile, vbSystem Or vbHidden) = vbNullString Then
    '       fichier existe?
            ChangeWords = False
        Else
    '       ouvre le fichier
            Dim FF As Integer, sBuffer As String
            FF = FreeFile
            Open sFile For Input As #FF
                sBuffer = Input(LOF(FF), 1)
            Close #FF
            'ligne à changer existe?
            Dim lPos As Long
            lPos = InStr(1, sBuffer, sWordsToRemove)
            If lPos = 0 Then
                ChangeWords = False
            Else
    '           on découpe
                Dim sFirst As String, sLast As String
                sFirst = Left$(sBuffer, lPos - 1)
                sLast = Right$(sBuffer, Len(sBuffer) - lPos - Len(sWordsToRemove) + 1)
    '           on écrit
                FF = FreeFile
                Open sFile For Output As #FF
                    Print #FF, sFirst & sWordsToChange & sLast
                Close #FF
                ChangeWords = True
                End If
     
        End If
    End Function
    On appelle cette fonction par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call ChangeWords("#", " ", "C:\resutext.txt")
    en y mettant le mot a remplacer, le mot de remplacement et le fichier a traiter...

    or, cela marche tres bien, mais il n'y a aucune boucle dans cette fonction...
    Il faut donc cliquer plusieurs moulte fois sur mon bouton, pour nettoyer le fichier voulu...

    Comment faire boucler cette fonction?
    j'ai essayé en ajoutant ceci a la fonction:

    (avant de chercher si la ligne existe)

    et en finissant par
    (avant le dernier If)

    mais ça me fait une erreur 53...


    SI quelqu'un peux m'apprendre a boucler cette fonction, ou connait une methode qui serait plus simple pour le meme resultat...
    M E R C I

  2. #2
    Membre Expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Par défaut
    Bonjour,

    si tu veux faire une boucle tu peux faire
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    If Dir(sFile, vbSystem Or vbHidden) = vbNullString Then
        ' fichier existe?
        ChangeWords = False
    Else
        ' ouvre le fichier
        Dim FF As Integer, sBuffer As String
        FF = FreeFile
        Open sFile For Input As #FF
        sBuffer = Input(LOF(FF), 1)
        Close #FF
        'ligne à changer existe?
        Dim lPos As Long
        lPos = 0
        lPos = InStr(1, sBuffer, sWordsToRemove)
        While lPos > 0
            Dim sFirst As String, sLast As String
            sFirst = Left$(sBuffer, lPos - 1)
            sLast = Right$(sBuffer, Len(sBuffer) - lPos - Len(sWordsToRemove) + 1)
            sBuffer = sFirst & sWordsToChange & sLast
            lPos = InStr(lPos + 1, sBuffer, sWordsToRemove)
     
        Wend
          ' on écrit
        FF = FreeFile
        Open sFile For Output As #FF
        Print #FF, sBuffer
        Close #FF
        ChangeWords = True
     
    End If


    Mais il me parait plus simple de faire
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    If Dir(sFile, vbSystem Or vbHidden) = vbNullString Then
        ' fichier existe?
        ChangeWords = False
    Else
        ' ouvre le fichier
        Dim FF As Integer, sBuffer As String
        FF = FreeFile
        Open sFile For Input As #FF
        sBuffer = Input(LOF(FF), 1)
        Close #FF
        sBuffer = Replace(sBuffer, sWordsToRemove, sWordsToChange, 1)
        ' on écrit
        FF = FreeFile
        Open sFile For Output As #FF
        Print #FF, sBuffer
        Close #FF
        ChangeWords = True
     
    End If

    Ceci dit, je suppose que cela posera problème avec des gros fichiers...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 218
    Par défaut ok
    ça marche
    MERCI

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Remplacer des caractères dans une chaine interbase 7.5
    Par zaydoun_391 dans le forum InterBase
    Réponses: 1
    Dernier message: 15/04/2008, 16h57
  2. Remplacer des caractères dans une table
    Par cycy50 dans le forum Modélisation
    Réponses: 11
    Dernier message: 19/10/2007, 15h02
  3. [RegEx] Remplacer des caractères dans une string
    Par jexl dans le forum Langage
    Réponses: 2
    Dernier message: 15/03/2007, 22h26
  4. Réponses: 4
    Dernier message: 29/08/2006, 17h44
  5. Réponses: 3
    Dernier message: 27/06/2005, 16h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo