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

Vos Contributions VBScript Discussion :

Une fonction recherchant l'occurrence d'une chaîne dans un fichier texte


Sujet :

Vos Contributions VBScript

  1. #1
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut Une fonction recherchant l'occurrence d'une chaîne dans un fichier texte
    Salut;
    C'est une première version de recherche de l'occurrence d'un mot(ou chaîne) dans un fichier texte :
    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
    Option Explicit
     'Version 1
    Function Occurrence(sFile, strFind,bCasse)
       Const ForReading = 1
       Dim fso, FL, txt, Ret, nbr,S
       Set fso = CreateObject("Scripting.FileSystemObject")
       Set FL = fso.OpenTextFile(sFile, ForReading, False)
       nbr = 0
     
       Do While Not FL.AtEndOfStream 
              ' txt = ""  ' mise en commentaire après après la remarque de ProgElecT que je remercie beaucoup
    	  txt=FL.ReadLine
    	  Ret = InStr(1, Lcase(txt), Lcase(strFind),0)
    	  If Ret <> 0 Then 
    	     S = Mid(txt,Ret,Len(strFind))
    		 'Condition pour la casse
    	     If bCasse = True Then
    	          If S = strFind Then nbr =nbr + 1
    	     Else	
    		  If Ucase(S) = Ucase(strFind) Then nbr =nbr + 1 
    	     End If	
    	  End If  
    	Loop 
    	FL.Close
    	Occurrence = nbr
    End Function
    Utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Const Fich = "C:\Setuplog.txt"
    MsgBox Occurrence(Fich,"line",True) ' Dans le texte il y a "Line"
    MsgBox Occurrence(Fich,"line",False)
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  2. #2
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut

    La ligne 11 n'est pas indispensable
    ligne 16 'Condition pour la casse
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut
    En effet, c'était un code de test que j'ai oublié de modifier(ligne 11) car j'avais autre chose en vue.
    Ligne 16 : Ne dit-on pas respecter la Casse ? sinon je n'aurais pas bien saisi la remarque !
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  4. #4
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Ligne 16 : Ne dit-on pas respecter la Casse ? sinon je n'aurais pas bien saisi la remarque !
    Cela fait à peu près 25 ans que je fais de l'informatique, cela fait donc 25 ans que je lis case
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  5. #5
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut
    Bonjour à tous;

    La première version, si vous l'avez remarqué, ne recherche qu'une seule occurrence par ligne de texte.

    Ci-dessous une deuxième version qui recherche toutes les occurrences d'une chaîne dans le fichier qu'il y en ait une ou plusieurs par ligne, la fonction les retrouve :
    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
    Option Explicit
       'Version 2
    Function Occurrence(sFile, strFind,bCasse)
       Const ForReading = 1
       Dim fso, FL, txt, Ret, nbr, S, tbl
       Set fso = CreateObject("Scripting.FileSystemObject")
       Set FL = fso.OpenTextFile(sFile, ForReading, False)
       nbr = 0
    	   Do 
    		   txt = FL.ReadLine
    		   Ret = InStr(1 , Lcase(txt), Lcase(strFind),0)
    		   tbl = Split(Lcase(txt),Lcase(strFind))
    		  If Ret > 0 Then 
    			 S = Mid(txt,Ret,Len(strFind))
    			 'Condition pour la CASSE
    			 If bCasse = True Then
    				If S = strFind  Then nbr = nbr + Ubound(tbl)
    			 Else	
    				If Ucase(S) = Ucase(strFind)  Then nbr = nbr + Ubound(tbl) 
    			 End If	
    		  End If  
    		Loop Until FL.AtEndOfStream
    	FL.Close
    	Occurrence = nbr
    End Function
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  6. #6
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut
    Bonjour à tous;

    Grâce aux suggestions et corrections de ProgElecT que je salue et remercie énormément, la version finale de la fonction Occurrence est :
    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
       'Version 3
    Function Occurrence(sFile, strFind, bCasse)
    Dim fso, FL, TxT
    Set fso = CreateObject("Scripting.FileSystemObject")
     
    If fso.FileExists(sFile) Then
       Set FL = fso.OpenTextFile(sFile, 1, False)
            TxT = FL.Readall
            FL.Close
            Set FL = Nothing: Set fso = Nothing
            If bCasse Then
                 Occurrence = UBound(Split(TxT, strFind))
            Else
                 Occurrence = UBound(Split(LCase(TxT), LCase(strFind)))
            End If
    End If
    End Function
    Un code plus concis et moins gourmand en mémoire : C'est la version corrigée par les soins de notre cher ami ProgElecT
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

Discussions similaires

  1. Réponses: 5
    Dernier message: 27/04/2010, 11h26
  2. appel d'une fonction vb a partir d'une fonction javascript!
    Par labib23dz dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 03/07/2009, 11h04
  3. faire passer une fonction entant que parametre d'une fonction
    Par gali_fr dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 29/05/2008, 15h18
  4. Réponses: 6
    Dernier message: 08/12/2007, 14h33
  5. Réponses: 14
    Dernier message: 16/05/2006, 11h26

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