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

VB 6 et antérieur Discussion :

Remplacer un mot sur l'ensemble d'un fichier texte


Sujet :

VB 6 et antérieur

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 41
    Points : 17
    Points
    17
    Par défaut Remplacer un mot sur l'ensemble d'un fichier texte
    Bonjour je possède un code qui me permet de remplacer une chaine de caractère par une autre chaine de caractère
    Mais le probleme est qu'il le realise cela que pour la 1ere correspendance comment faire cela pour l'ensemble des lignes

    Est il possible de faire un boucle du type "For each" ou "If"?

    Voilà le code



    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
    32
    33
     
    Call ChangeWords("Origine", "essao", "C:\Fichier test.txt")
     
    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
    Merci

  2. #2
    Membre éprouvé Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 634
    Points : 1 161
    Points
    1 161
    Par défaut
    Regarde la fonction replace

  3. #3
    Membre éclairé
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Points : 671
    Points
    671
    Par défaut
    Bonjour,


    Essaie ceci ( mais je n'ai pas testé)...
    Ce que tu dois ajouter est en rouge

    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
    dim Position as Integer 
    Position = 1 
    Do
    lPos = InStr(Position, 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
                Position = lPos + len(sWordsToChange) +1        End If
        End If
    
    Until lPos <> 0

  4. #4
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 41
    Points : 17
    Points
    17
    Par défaut
    J'ai testé mais cela ne marche pas cela me donne:


    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
    32
    33
    34
    35
    36
    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
            Dim Position As Integer
            Position = 1
            Do
                lPos = InStr(Position, 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
                    Position = lPos + Len(sWordsToChange) + 1
                End If
            Loop Until lPos = 0
        End If
     
    End Function

    J'ai rajouter "loop" car until tout seul me genere une erreur


    Citation Envoyé par iclic Voir le message
    Bonjour,


    Essaie ceci ( mais je n'ai pas testé)...
    Ce que tu dois ajouter est en rouge

    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
    dim Position as Integer 
    Position = 1 
    Do
    lPos = InStr(Position, 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
                Position = lPos + len(sWordsToChange) +1        End If
        End If
    
    Until lPos <> 0

  5. #5
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    C'est marrant, Daudet te donne le premier une réponse simple, archi simple et tu vas voir l'autre nettement plus compliquée
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  6. #6
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 41
    Points : 17
    Points
    17
    Par défaut
    tu parle de cette fonction ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    Sub remplacerCaracteres()
        Dim monText As String
     
        monText = Replace(monText, ";", ".")
    End Sub
    Par contre c'est sur une fonction moi je souhaite le faire sur un .txt complet?

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 116
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 116
    Points : 1 622
    Points
    1 622
    Par défaut
    Avec Replace, ton code deviendrais tout simplement quelque chose comme ça:

    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
    Call ChangeWords("Origine", "essao", "C:\Fichier test.txt")
    
    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
    
    
            'remplace dans la chaine sBuffer (qui contient l'ensemble du fichier),
            ' toutes les chaines sWordsToRemove par la chaine sWordsToChange
            ' et place ici le résultat dans sBuffer
            sBuffer2=Replace(sBuffer, sWordsToRemove, sWordsToChange)
    
    
    '           on écrit le fichier modifié
                FF = FreeFile
                Open sFile For Output As #FF
                Print #FF, sBuffer
                Close #FF
                ChangeWords = True
            End If
        End If
    End Function

  8. #8
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 41
    Points : 17
    Points
    17
    Par défaut
    C'est bon ca marche

    Par contre j'ai un fichier .pdl que je change change en .txt pour modifier certains parametres

    Et le debut du texte comme par cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ÐÏࡱá                >  þÿ	                               þÿÿÿ          }     ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿR o o t   E n t r y                                               ÿÿÿÿÿÿÿÿ                               P0 .§¬É0   @      C o n t e n t s                                                        ÿÿÿÿ                                    5   ç‡     a p c                                                             ÿÿÿÿÿÿÿÿ                       €Çõ+&›É€Çõ+&›É             S u m m a r y I n f o r m a t i o n                           (  ÿÿÿÿÿÿÿÿÿÿÿÿ                                                 ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ/   þÿÿÿ   	            
          ÿÿÿÿ            #                                        !   "   þÿÿÿ%   ÿÿÿÿ-   '   (   +   ÿÿÿÿÿÿÿÿ.   ÿÿÿÿ3   |  þÿÿÿ2   ÿÿÿÿ
       Ø  ýÿÿÿ6   7   8   9   :   ;   <   =   >   ?   @   A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X   Y   Z   [   \   ]   ^   _   `   a   b   c   d   e   f   g   h   i   j   k   l   m   n   o   p   q   r   s   t   u   v   w   x   y   z   {   |   }   ~      €   R o o t   E n t r y                                               ÿÿÿÿÿÿÿÿ                               Ð*4.§¬É0   @      C o n t e n t s                                                         ÿÿÿÿ                                    5   ç‡     a p c                                                            ÿÿÿÿÿÿÿÿ                       €Çõ+&›É€Çõ+&›É             S u m m a r y I n f o r m a t i o n                           (  ÿÿÿÿÿÿÿÿÿÿÿÿ                                              ÿÿÿÿÿÿÿÿ   ýÿÿÿŒ  ÿÿÿÿþÿÿÿ   	            
          ýÿÿÿ            #                                        !   "   þÿÿÿ%   )   -   ÿÿÿÿÿÿÿÿÿÿÿÿ*   ,   ÿÿÿÿ1   ×  ÿÿÿÿÿÿÿÿ2   {  
       ÿÿÿÿÿÿÿÿ6   7   8   9   :   ;   <   =   >   ?   @   A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X   Y   Z   [   \   ]   ^   _   `   a   b   c   d   e   f   g   h   i   j   k   l   m   n   o   p   q   r   s   t   u   v   w   x   y   z   {   |   }   ~      €   C o n t r o l   L i s t   D a t a                               $  ÿÿÿÿÿÿÿÿÿÿÿÿ                                    Q   (       A P B l o b S t r e a m V 2                                      ÿÿÿÿ   ÿÿÿÿ                                    T   *      D y n a m i c s S t r e a m                                       ÿÿÿÿÿÿÿÿÿÿÿÿ                                    $   Ð      A P _ I N P R O C _ A D M I N                                           ÿÿÿÿ                                    c   T      C o n t r o l   L i s t   D a t a                               $  ÿÿÿÿÿÿÿÿÿÿÿÿ                                    Q   (       A P B l o b S t r e a m V 2                                       ÿÿÿÿÿÿÿÿÿÿÿÿ                                    T   *      D y n a m i c s S t r e a m                                         ÿÿÿÿÿÿÿÿ                                    Ê  Ð      A P _ I N P R O C _ A D M I N                                           ÿÿÿÿ                                    c   T                              	   
       þÿÿÿþÿÿÿ
                þÿÿÿ         þÿÿÿ               þÿÿÿþÿÿÿþÿÿÿþÿÿÿþÿÿÿ    !   "   #   $   %   &   '   (   )   *   +   ,   -   .   /   0   1   2   3   4   5   6   7   8   9   :   ;   <   =   >   ?   @   þÿÿÿB   C   D   E   F   G   H   I   J   K   L   M   N   O   P   þÿÿÿþÿÿÿþÿÿÿþÿÿÿU   V   W   X   Y   Z   [   \   ]   ^   _   `   a   b   þÿÿÿd   e   f   g   h   i   j   k   l   m   n   o   p   þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿT h e   V B A   P r o j e c t                                     ÿÿÿÿÿÿÿÿ                       €Çõ+&›É€Çõ+&›É            _ V B A _ P r o j e c t                                          ÿÿÿÿÿÿÿÿ                       €Çõ+&›É€Çõ+&›É            V B A   P r o j e c t   D a t a                                 "    	   ÿÿÿÿ                                       ê       H o s t   P r o j e c t   I t e m s                             &  ÿÿÿÿÿÿÿÿÿÿÿÿ                                       6      H o s t   P r o j e c t   I t e m   N a m e s                   0  ÿÿÿÿÿÿÿÿ
                           €Çõ+&›É€Çõ+&›É            V B A   P r o j e c t   S i g n a t u r e                       ,       ÿÿÿÿ                                       
           P r o j e c t _ D a t a _ C u r V e r                           (       ÿÿÿÿ                                       
           H o s t   P r o j e c t   I t e m   L i s t   D a t a           8  ÿÿÿÿÿÿÿÿÿÿÿÿ                                              T h i s D o c u m e n t
    Et c'est caractere me realise une erreur sur la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                sBuffer = Input(LOF(FF), 1)
    Je recois le message
    "run-time error '62': Input past end of file"


    Savez vous comment je peux faire ignorer c'est caractere du code pour eviter l'erreur ?

    merci

  9. #9
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 41
    Points : 17
    Points
    17
    Par défaut
    Je pense qu'il faut faire une recherche en ignorant les "ÿÿ � } ÿÿÿ" non?

  10. #10
    Membre éprouvé Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 634
    Points : 1 161
    Points
    1 161
    Par défaut
    Ouvrir le fichier en binaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      ' ouvre le fichier
            Dim FF As Integer, sBuffer As String
            FF = FreeFile
            sBuffer= Space$(FileLen(sFile))  ' sBuffer fait exactement la taille du fichier
            Open sFile For Binary As #FF
                Get #FF,1,sBuffer  
            Close #FF
    ' sBuffer contient ton fichier

Discussions similaires

  1. Ajouter mot devant une ligne d'un fichier texte
    Par AZzjeioafh dans le forum VBScript
    Réponses: 0
    Dernier message: 18/09/2009, 20h39
  2. Réponses: 0
    Dernier message: 19/05/2009, 16h02
  3. Réponses: 6
    Dernier message: 17/09/2007, 22h05
  4. Réponses: 9
    Dernier message: 22/05/2006, 12h21
  5. Remplacer un mot par un autre dans un fichier
    Par vbcasimir dans le forum Linux
    Réponses: 8
    Dernier message: 25/04/2006, 12h08

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