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 :

Trouver un mot dans un fichier .txt et remplacer le mot par un autre


Sujet :

VB 6 et antérieur

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2022
    Messages
    9
    Points
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Décembre 2022
    Messages : 9
    Points : 6
    Par défaut Trouver un mot dans un fichier .txt et remplacer le mot par un autre
    Bonjour,
    je début en VB6 et je cherche un moyen de rechercher un mot dans un fichier .txt
    Mes recherches m'ont mené à ce bout de code mais cela ne fonctionne pas.

    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
    Function TrouveEleve(ByVal ELEVEcible As String) As Boolean
    Dim f As Long
    Dim s As String
     
        TrouveEleve= False
     
        f = FreeFile
        Open App.Path & "\classe001.ini" For Input As #f
            Do While Not EOF(f)
                Input #f, s
     
     
                If Trim$(LCase$(s)) = Trim$(ELEVEcible ) Then
                    TrouveEleve= True
                    Close #f
                    Exit Function
                ElseIf Trim$(LCase$(s)) = Trim$(ELEVEcible ) Then
                    TrouveEleve= True
                    Close #f
                    Exit Function
                ElseIf Trim$(LCase$(s)) = Trim$(UCase$(ELEVEcible )) Then
                    TrouveEleve= True
                    Close #f
                    Exit Function
                End If
            Loop
        Close #f
    End Function

    Le fichier Classe001.txt est le suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    [PROFESSEUR PRINCIPAL]
    nomduprofesseur = 0
     
    [ELEVES]
    Eleve001 = 1
    Eleve002 = 2
    Eleve003 = 3

    Ce que je souhaite parvenir à faire c'est de lancer une recherche dans ce fichier et si Eleve002 est présent alors TrouveEleve= True
    Je pense que le "=" et la valeur "2" doit le gener mais ces valeurs peuvent changer je ne peux donc les supprimer.

    Merci pour votre aide

  2. #2
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 122
    Points
    15 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 122
    Points : 15 695
    Par défaut
    Salut

    Je n'ai plus VB6 de disponible sur cette ordinateur, mais cela devrait ressembler à
    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
    Function TrouveEleve(ByVal ELEVEcible As String) As Boolean
    Dim f As Long
    Dim s As String
    Dim TblLgn
     
        TrouveEleve= False
     
        f = FreeFile
        Open App.Path & "\classe001.ini" For Input As #f
            Do While Not EOF(f)
                Input #f, s
    			TblLgn = split(s,chr(32))
    			TrouveEleve = Trim$(TblLgn(0))=Trim$(ELEVEcible)
    			If TrouveEleve=True then exit Do
     
                'If Trim$(LCase$(s)) = Trim$(ELEVEcible ) Then
                '    TrouveEleve= True
                '    Close #f
                '    Exit Function
                'ElseIf Trim$(LCase$(s)) = Trim$(ELEVEcible ) Then
                '    TrouveEleve= True
                '    Close #f
                '    Exit Function
                'ElseIf Trim$(LCase$(s)) = Trim$(UCase$(ELEVEcible )) Then
                '    TrouveEleve= True
                '    Close #f
                '    Exit Function
                'End If
            Loop
        Close #f
    End Function
    pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2022
    Messages
    9
    Points
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Décembre 2022
    Messages : 9
    Points : 6
    Par défaut
    Merci PROGELECT d'avoir répondu mais cela ne fonctionne pas
    TrouveEleve ressort en FALSE

  4. #4
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 122
    Points
    15 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 122
    Points : 15 695
    Par défaut
    Une autre approche en VBScript mais qui peut fonctionner directement en VB6
    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
    Function TrouveEleve(NomFichier,ELEVEcible)
    	Dim fso, fichier, ContenuFichier
     
    	Set fso = CreateObject("Scripting.FileSystemObject")
    	Set fichier = fso.opentextfile("C:\MesProgs\En VBScript et HTA\"&NomFichier, 1)
    	ContenuFichier = fichier.ReadAll
    	fichier.Close
    	Set fichier = Nothing
     
            TrouveEleve = Cbool(InStr(1,ContenuFichier,trim(ELEVEcible),vbTextCompare))
     End Function
     
    'exemples:
    MsgBox TrouveEleve("Classe001.txt","Eleve002")  'existe dans le fichier
    MsgBox TrouveEleve("Classe001.txt","Eleve002z") 'n'existe pas dans le fichier
    MsgBox TrouveEleve("Classe003.txt","Eleve003")  'existe dans le fichier
    MsgBox TrouveEleve("Classe003.txt","eLEVE003")  'existe dans le fichier mais pas les mêmes MAJ/min
    Contenu de fichier Classe003.txt
    [PROFESSEUR PRINCIPAL]
    nomduprofesseur = 0

    [ELEVES]
    Eleve001 = 1
    Eleve002 = 2
    Eleve003 = 3
    Eleve004 = 4
    pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2022
    Messages
    9
    Points
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Décembre 2022
    Messages : 9
    Points : 6
    Par défaut
    YES !!! Bravo ProgElecT tout fonctionne !!

    J'ai reussi à comprendre le code et l'adapter au projet.

    Mille mercis!!
    Belle continuation à vous

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2022
    Messages
    9
    Points
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Décembre 2022
    Messages : 9
    Points : 6
    Par défaut
    Navré mais j'ai encore une question.
    Dans le cas ELEVEcible est identifié comment remplacer "ELEVEcible" par un autre nom ex: "ELEVEcible2"

    En résumé si ELEVEcible existe remplacer ELEVEcible par ELEVEcible2

    Merci à vous

  7. #7
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 122
    Points
    15 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 122
    Points : 15 695
    Par défaut
    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
    Function TrouveEleve(NomFichier,ELEVEcible,MotRemplace)
    	Dim fso, fichier, ContenuFichier, NewContenuFichier
     
    	Set fso = CreateObject("Scripting.FileSystemObject")
    	'ouverture en lecture
    	Set fichier = fso.opentextfile("C:\MesProgs\En VBScript et HTA\"&NomFichier, 1)
    	ContenuFichier = fichier.ReadAll
     
            TrouveEleve = Cbool(InStr(1,ContenuFichier,trim(ELEVEcible),vbTextCompare))
            If TrouveEleve Then
                    fichier.Close
                    Set fichier = Nothing
                    NewContenuFichier = replace(ContenuFichier,trim(ELEVEcible),MotRemplace,1,-1,vbTextCompare)
                    'ré-ouvre en écriture
                    Set fichier = fso.opentextfile("C:\MesProgs\En VBScript et HTA\"&NomFichier, 2)
                    fichier.Write NewContenuFichier
             End If
            fichier.close
            Set fichier = Nothing
            Set fso = Nothing
     End Function
     
    'exemples:
    MsgBox TrouveEleve("Classe001.txt","Eleve002","EleveNumero2")  & " remplacement fait"'existe dans le fichier Avec remplacement nom de l'eleve
    MsgBox TrouveEleve("Classe001.txt","Eleve002z","AQUE coucou") & " pas de remplacement"'n'existe pas dans le fichier, donc pas de remplacement
    MsgBox TrouveEleve("Classe003.txt","eLEVE003","NewEleve003")  & " remplacement fait"  'existe dans le fichier mais pas les mêmes MAJ/min, remplacement tout de même
    pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2022
    Messages
    9
    Points
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Décembre 2022
    Messages : 9
    Points : 6
    Par défaut
    JE vous remercie infiniment pour votre sympathie et vos réponses

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 437
    Points
    2 106
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 437
    Points : 2 106
    Par défaut
    Comme c'est un fichier ini, il existe des solutions prévues pour ce type de fichier (ça fait grosso modo la même chose mais en sous-main)
    https://www.vbforums.com/showthread....te-an-Ini-file
    je recopie ici les codes du lien:
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    'declarations for working with Ini files
    Private Declare Function GetPrivateProfileSection Lib "kernel32" Alias _
        "GetPrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpReturnedString As String, _
        ByVal nSize As Long, ByVal lpFileName As String) As Long
     
    Private Declare Function GetPrivateProfileString Lib "kernel32" Alias _
        "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, _
        ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, _
        ByVal lpFileName As String) As Long
     
    Private Declare Function WritePrivateProfileSection Lib "kernel32" Alias _
        "WritePrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpString As String, _
        ByVal lpFileName As String) As Long
     
    Private Declare Function WritePrivateProfileString Lib "kernel32" Alias _
        "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, _
        ByVal lpString As Any, ByVal lpFileName As String) As Long
     
    '// INI CONTROLLING PROCEDURES
    'reads an Ini string
    Public Function ReadIni(Filename As String, Section As String, Key As String) As String
    Dim RetVal As String * 255, v As Long
      v = GetPrivateProfileString(Section, Key, "", RetVal, 255, Filename)
      ReadIni = Left(RetVal, v - 1)
    End Function
     
    'reads an Ini section
    Public Function ReadIniSection(Filename As String, Section As String) As String
    Dim RetVal As String * 255, v As Long
      v = GetPrivateProfileSection(Section, RetVal, 255, Filename)
      ReadIniSection = Left(RetVal, v - 1)
    End Function
     
    'writes an Ini string
    Public Sub WriteIni(Filename As String, Section As String, Key As String, Value As String)
      WritePrivateProfileString Section, Key, Value, Filename
    End Sub
     
    'writes an Ini section
    Public Sub WriteIniSection(Filename As String, Section As String, Value As String)
      WritePrivateProfileSection Section, Value, Filename
    End Sub
    exemple utilisation:
    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
    Private Sub Form_Load()
     
    Dim File As String, OFLen As Double,  Str As String
     
      File = "C:\temp.ini"
      OFLen = FileLen(File)
     
        'write a few example sections:
      WriteIniSection File, "Test1", ""
      WriteIniSection File, "Test2", "Here shoud be found some text"
     
        'write a few ini strings
      WriteIni File, "Test3", "Ini1", "This is ini 1"
      WriteIni File, "Test1", "Ini2", "This is ini 2"
     
        'test message - inform we've written the data
      MsgBox Format((FileLen(File) - OFLen) / 1024, "0.00") & " KB data written to " & Chr(34) & File & Chr(34)
     
        'read the ini file
      Str = Str & "Test2 section: " & vbTab & ReadIniSection(File, "Test2") & vbCrLf
      Str = Str & "Test1 section: " & vbTab & ReadIniSection(File, "Test1") & vbCrLf
      Str = Str & "Ini1 string: " & vbTab & ReadIni(File, "Test3", "Ini1") & vbCrLf
      Str = Str & "Ini2 string: " & vbTab & ReadIni(File, "Test1", "Ini2") & vbCrLf
     
        'show the data from the file
      MsgBox Str
     
    End Sub

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

Discussions similaires

  1. [Débutant] possibilité de trouver un mot dans un fichier .txt
    Par emsebai dans le forum MATLAB
    Réponses: 6
    Dernier message: 20/10/2016, 19h02
  2. Trouver un mot dans un fichier texte
    Par spl0tch dans le forum Langage
    Réponses: 12
    Dernier message: 16/04/2007, 22h14
  3. Remplaçer un mot dans un fichier Txt
    Par walid_kerkoub dans le forum Delphi
    Réponses: 5
    Dernier message: 06/03/2007, 12h37
  4. trouver un mot dans un fichier
    Par samaa dans le forum Langage
    Réponses: 4
    Dernier message: 04/03/2007, 17h21
  5. Trouver un mot dans un fichier texte
    Par godik dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 10/03/2006, 15h31

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