Parcourir un fichier texte et compter le nombre d'occurence d'un mot

  • Initiateur de la discussion Initiateur de la discussion hamada63
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

hamada63

XLDnaute Nouveau
Bonjour,

Je débute en vba et je souhaite faire l'opération suivante: lire 500 fichiers texte et compter le nombre de fois où certaines chaînes de caractère apparaîssent dans ces fichiers.
J'ai écris ce qui suit:

For j = 3 To 466 (compteur de fichiers)

Set fso = CreateObject("Scripting.FileSystemObject")
Set fFile = fs😵penTextFile(Range("B" & j).Value) 'adresses des fichiers

For i = 1 To 20 (compteur de lignes)

ligne(i) = fFile.ReadLine
If i > 10 Then
b = b + Count(ligne(i), ", Alarme ," & Range("E" & 1).Value) 'exemple compter les" , Alarme , machine X" la fonction count est définie pour des chaînes de caractères et je ne peux pas l'appliquer directement à fFile.

End If





Next
Range("U" & 1).Value = b

fFile.Close



Next


Le problème de parcourir ligne par ligne est que je ne peux le faire que pour une vingtaine de ligne après ce n'est pas possible. Mes informations sont de plus de la ligne 30 à la ligne 80 du fichier.

Avez vous une autre solution à ce problème? Je vous remercie d'avance
 
Re : Parcourir un fichier texte et compter le nombre d'occurence d'un mot

{\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fmodern\fprq1\fcharset0 Courier New;}}
{\colortbl ;\red0\green0\blue0;}
\viewkind4\uc1\pard\cf1\lang1040\b\f0\fs56\tab\tab\tab\tab\tab\tab\tab\tab\tab\tab T-Shirt-XC44E\par
\par
\fs32 Rapport de Production du lot : 004E12\cf0\lang1036\fs24\par
\cf1\lang1040\fs32 Code produit : F6 Op\'e9rateur : JMS\cf0\lang1036\fs24\par
\cf1\lang1040\par
Debut de la production : 9/ 3/2010 - 22:36:12.\par
Fin de la production : 9/ 3/2010 - 23:44:58.\par
Longueur totale du touret (m) : 5788\par
Longueur au debut de validation du touret (m) : 25\par
Longueur de prelevement (m) : 30\par
Longueur Totale restante (m) : 5758\par
\par
Historique :\par
\par
Nombre de Pre-Alarmes : 0\par
Message Start Date Start Time End Date End Time \par
\par
Nombre d'alarmes : 0\par
Message Start Date Start Time End Date End Time \par
\par
\par
\par
\par
\par

DEBUT TABLE DEFAUT: \par
0,0, \par
FIN TABLE DEFAUT. \par
Longueur totale des pertes (longueur validation + cumul des défauts) : 25 + 0 = 25. \par
}
 
Re : Parcourir un fichier texte et compter le nombre d'occurence d'un mot

Re

A partir de l'exemple fourni (passé par le bloc-note et enregistré sous essai.001) j'ai ecrit cette macro qui fonctionne

Vois si tu peux t'en inspirer

Code:
Sub test()
Set fso = CreateObject("Scripting.FileSystemObject")
Set fFile = fso.OpenTextFile("E:\texcel2\essai.001") 'adresses des fichiers
For i = 1 To 100 '(compteur de lignes)
On Error Resume Next
ligne = fFile.ReadLine
If Err.Number = 62 Then GoTo fin
On Error GoTo 0
If InStr(ligne, "alarme") <> 0 Or InStr(ligne, "Alarme") <> 0 Then
 nb = nb + 1
 MsgBox (ligne)
End If
Next i
fin:
MsgBox (nb)
End Sub
 
Re : Parcourir un fichier texte et compter le nombre d'occurence d'un mot

Re,

Je vous remercie de votre aide, mon programme tourne très bien.

J'ai juste une autre question en tant que débutant. Comment est-ce qu'on dit à une procédure qu'elle ne doit s'appliquer qu'à une feuille bien determinée?
Y a-t-il un moyen de le dire au début de la procédure sans avoir à le répéter à chaque fois qu'on parle d'une cellule?
 
Re : Parcourir un fichier texte et compter le nombre d'occurence d'un mot

For k = 4 To 32

nb = 0

For j = 3 To Range("A1").Value

Set fso = CreateObject("Scripting.FileSystemObject")

Set fFile = fs😵penTextFile(Range("B" & j).Value) 'adresses des fichiers

For i = 1 To 100 '(compteur de lignes)

On Error Resume Next

ligne = fFile.ReadLine

If Err.Number = 62 Then GoTo fin

On Error GoTo 0

If InStr(ligne, ", Alarme , " & Range("D" & k).Value) <> 0 Then

nb = nb + 1

End If
Next i
fin:
Next j
Range("E" & k).Value = nb

Next k




End Sub




En fait, j'aimerais bien faire en sorte que lors de l'execution, la procédure n'agisse que sur une feuille donnée.

En fait j'ai 4 machines avec pour chaque machine une feuille. A chaque machine est associée une procédure.
Je souhaite éviter qu'une procédure soit appliquée à une machine autre que celle pour laquelle elle est faite.
 
Re : Parcourir un fichier texte et compter le nombre d'occurence d'un mot

Re

Voila coment je procederai
1ere procedure modifiée
chaque feuille aura une procedure essai1

Code:
Sub essai(nom_feuille)
With Sheets(nom_feuille)
For k = 4 To 32
 nb = 0
 For j = 3 To .Range("A1").Value
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set fFile = fso.OpenTextFile(.Range("B" & j).Value) 'adresses des fichiers
   For i = 1 To 100 '(compteur de lignes)
     On Error Resume Next
     ligne = fFile.ReadLine
     If Err.Number = 62 Then GoTo fin
     On Error GoTo 0
     If InStr(ligne, ", Alarme , " & .Range("D" & k).Value) <> 0 Then
       nb = nb + 1
     End If
   Next i
fin:
 Next j
.Range("E" & k).Value = nb
Next k
End With
End Sub

Sub essai1()
 Call essai("Feuil1")
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
649
Réponses
3
Affichages
582
Réponses
0
Affichages
459
Réponses
7
Affichages
795
Retour