Ce fichier est trés long et à partir de ce fichier mon programme vb va en fonction de l'existence et du nombre x de la valeur numérique
faire x action
je n'arrive pas à faire cette routine par exemple pour l'exemple ci dessus si je cherche 1111111111111 mon programme va effectuer 4 actions
dois je garder mon fichier de recherche comme cela ou créer un fichier indexé (mais je n'ai pas trouvé d'aide en vb pour cela) pour facilité ma recherche
merci d'avance
/Nicolas
A voir également:
Recherche dans un fichier texte occurence d'une variable
gandalflegris007
Messages postés211Date d'inscriptionlundi 31 mars 2003StatutMembreDernière intervention11 juin 2007 18 nov. 2004 à 16:07
Salut gni,
1er exemple de base : dérouler toutes les lignes de ton fichier et compter le nb de fois que tu trouves strictement la chaine que tu veux (comprendre par sctrictement que la ligne lue est IDENTIQUE à la chaine recherchée (on pourrait faire la ligne lue contient la chaine recherchée)
public sub Essai(p_Chaine as string)
dim NumFichier as integer ' n° de fichier
dim NomFichier as string ' nom du fichier
dim Compteur as integer ' compteur d'occurence
dim Ligne as string ' ligne lue
NumFichier = Freefile ' init de l'index du fichier
NomFichier = "c:\toto.txt" ' défini le nom du fichier
compteur = 0 ' init du compteur d'occurence
' ouverture du fichier en mode lecture
open Nom Fichier for input as NumFichier
' boucle tant que ce n'est pas la fin du fichier
do while not eof(NumFichier)
' récupère la ligne de texte
Line Input #NumFichier, Ligne
' compare la ligne récupérée à la chaine de caractère recherchéeif ligne p_chaine then compteur compteur + 1
loop
end sub
tu peux remplacer if ligne p_chaine then compteur compteur + 1
par
if instr(ligne,pchaine)>0 then compteur=compteur+1
(la fameuse variante qui dit que la chaine est contenue dans la ligne texte
gandalflegris007
Messages postés211Date d'inscriptionlundi 31 mars 2003StatutMembreDernière intervention11 juin 2007 18 nov. 2004 à 16:13
Maintenant, selon ton besoin, on pourrait aussi imaginer une fonction qui déroule tout ton fichier, et liste toutes les chaines de textes différentes et compte le nombre de fois que chacune apparait.
Si ça t'intéresse, je te donne du code, mais là je dois m'absenter 10-15 minutes.
cs_gni
Messages postés3Date d'inscriptionlundi 1 septembre 2003StatutMembreDernière intervention19 novembre 2004 18 nov. 2004 à 16:26
Merci beaucoup pour ton aide et ta rapidité Guich.
je vais commencer à travaillé sur ce code.
sinon pour le code qui prepare le fichier pour faire
chaine1 1
chaine2 4
chaine3 3
je ne sais pas encore, en fait mon code peut preparer ce fichier(mais je dois le modifier, je veux bien ton code)
mais en fait le plus important c'est l'accés au fichier quand je recherche l'occurence (en terme de rapidité)
merci de vos conseils.
Nicolas
Vous n’avez pas trouvé la réponse que vous recherchez ?
Open NomFichier For Input As NumFichier
Do While Not EOF(NumFichier)
Line Input #NumFichier, Ligne
If MaRecherche.NbChaines <> 0 Then
For i = 1 To MaRecherche.NbChaines
If MaRecherche.Chaines(i).AChercher = Ligne Then
MaRecherche.Chaines(i).NbOccurences = MaRecherche.Chaines(i).NbOccurences + 1
GoTo jump_Trouve
End If
Next i
End If
MaRecherche.NbChaines = MaRecherche.NbChaines + 1
ReDim Preserve MaRecherche.Chaines(MaRecherche.NbChaines)
MaRecherche.Chaines(MaRecherche.NbChaines).AChercher = Ligne
MaRecherche.Chaines(MaRecherche.NbChaines).NbOccurences = 1
jump_Trouve:
Loop
Close #NumFichier
End Sub
Public Sub FxExport()
Dim NumFichier As Integer
Dim NomFichier As String
Dim i As Integer
Open NomFichier For Append As NumFichier
For i = 1 To MaRecherche.NbChaines
Print #NumFichier, MaRecherche.Chaines(i).AChercher & vbTab & MaRecherche.Chaines(i).NbOccurences
Next i
Close NumFichier
End Sub
Par contre, dsl, j'ai pas eu le temps de commenté et je dois y aller, je t'explique le tout ce soir ou demain si tu veux.
En gros, j'ai un fichier d'entrée nommé src.txt qui contient
11111
22222
11111
33333
11111
22222
et il me crée un fichier nommé result.txt contenant
11111 3
22222 2
33333 1
par contre, si tu l'exécute plusieurs fois, les resultats vont s'inscrire à la suite les uns des autres, le fichier n'est pas recréé à chaque fois, mais ça c'est totu simple.
cs_gni
Messages postés3Date d'inscriptionlundi 1 septembre 2003StatutMembreDernière intervention19 novembre 2004 19 nov. 2004 à 20:52
Merci beaucoup de ton aide.
Comme c'est une application qui s'execute plusieurs fois j'hesite à passer par des fichiers lesquels je ne saurais supprimer.
mais je vais peut etre ameliorer mon programme car à la base le fichier
1111
2222
3333
4444
je l'obtiens à partir d'un fichier unicode.
mais je crois que je vais plutot parcourir ce fichier qui est deja present et le traiter.