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

Access Discussion :

recherche d'une chaine de caractère dans un fichier texte


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2004
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 41
    Points : 29
    Points
    29
    Par défaut recherche d'une chaine de caractère dans un fichier texte
    Bonjour,

    Je voudrai développer un outil qui permetterait de connaitre le nombre d'occurence de la chaine "xyz" contenu dans le fichier texte c:\test\fic1.txt

    donc, p.ex...

    une boite de dialogue permetant de pointer sur le fichier à analyser...

    + affichage sur le formulaire du nombre de fois que "xyz" de présentes dans le fichier pointé...

    si vous voyez ce que je veux dire...

  2. #2
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    avec les RegExp, on peut rapidement compter le nombre d'occurence d'une chaîne dans un fichier (ici < 64 000 caractères) ...

    plus d'infos sur mon tuto :
    http://cafeine.developpez.com/access/tutoriel/regexp/

    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
    Function CountMatches(ByVal strFic As String, ByVal strSearch As String) As Long
    
        Dim reg As VBScript_RegExp_55.RegExp
        Dim Matches As VBScript_RegExp_55.MatchCollection
        Dim Fic As Integer
        Dim strBuff As String * 64000
        
        ' instanciation
    
        Set reg = New VBScript_RegExp_55.RegExp
        
        ' gestion fichier
    
        Reset
        Fic = 1
        Open strFic For Binary Access Read As #Fic
        Get #Fic, , strBuff
        Close #Fic
        
        ' RegExp
    
        reg.Global = True
        reg.IgnoreCase = True
        reg.Multiline = True
        reg.Pattern = "(" & strSearch & ")"
        Set Matches = reg.Execute(strBuff)
        CountMatches = Matches.Count
            
        ' libération
    
        Set reg = Nothing
        Set Matches = Nothing
    
    End Function
    Il ne te reste plus qu'à créer le formulaire permettant de pointer sur un fichier ...
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2004
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 41
    Points : 29
    Points
    29
    Par défaut
    Super !

    Merci bcp, c'est exactement ce que je cherchais...sauf que, mes fichiers texte font plus que 64000 caractères, , et ca ne prends en compte les occurences que dans les 64000 derniers caractères de mon fichier texte...

    y a t-il un autre type de variable permettant d'aller plus loin...

    fo quand même pas découper le fichier avant de compter ??

  4. #4
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Oui, il faut découper, mais en adaptant un peu, ça passe ...

    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
    Function CountMatches(ByVal strFic As String, ByVal strSearch As String) As Long
    
        Dim reg As VBScript_RegExp_55.RegExp
        Dim Matches As VBScript_RegExp_55.MatchCollection
        Dim Fic As Integer
        Dim strBuff As String * 20000
        Dim strBorder As String
        
        ' instanciation
        Set reg = New VBScript_RegExp_55.RegExp
        
        reg.Global = True
        reg.IgnoreCase = True
        reg.Multiline = True
        reg.Pattern = "(" & strSearch & ")"
    
        ' gestion fichier
        Reset
        Fic = 1
        Open strFic For Binary Access Read As #Fic
        
        Do While Not EOF(Fic)
            strBorder = Right(strBuff, Len(strSearch) - 1)
            Get #Fic, , strBuff
            strBorder = strBorder & strBuff
            Set Matches = reg.Execute(strBorder)
            CountMatches = CountMatches + Matches.Count
        Loop
        Close #Fic
            
        ' libération
        Set reg = Nothing
        Set Matches = Nothing
    
    End Function
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



Discussions similaires

  1. Réponses: 9
    Dernier message: 04/12/2014, 17h26
  2. Rechercher/remplacer une chaine de caractères dans plusieurs fichiers
    Par _shuriken_ dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 31/07/2011, 20h06
  3. Réponses: 1
    Dernier message: 05/11/2009, 15h19
  4. Remplacer une chaine de caractère dans un fichier texte.
    Par Empty_body dans le forum VBA Access
    Réponses: 1
    Dernier message: 19/01/2008, 11h16
  5. [VB]Recherche d'une chaine de caractère dans un fichier
    Par Empty_body dans le forum VB 6 et antérieur
    Réponses: 26
    Dernier message: 16/02/2006, 09h10

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