Compter la redondance d'un termes dans un ficher .txt
Bonjour a tous
Je viens vers vous car j'ai besoin d'aide ... voila je travaille sur ou un projet mélangeant du vba et de l’élément finis
Avec l’élément finis je récupère un fichier au format .bdf ( facilement transformable en .txt)
et dans ce fichier j'aimerais récupérer le nombre de fois ou ressort le mot CBUSH et GRID
j'ai réussi a faire quelque chose mais en copiant l'ensemble du fichier excel dans une feuille de calcul ... j'aimerais maintenant ne plus avoir besoin de faire ça car il se trouve que je peu travailler avec de très gros fichier allant jusqu'au million de ligne et ça excel il aime pas trop.
Donc j'aimerais pouvoir compter le nombre de terme directement dans le fichier mais je ne sais pas comment faire
merci d'avance pour votre aide
Damien
je met mon code pour voire si il y a moyen de faire quelque chose avec, ainsi que le fichier .txt
je fais remonter le sujet parce que vraiment j'y arrive pas .... tout ce que je tente bloque
Bonjour Damien,
1- il faut activer Microsoft Scripting Runtime (voir foto)
"Pour utiliser l’objet FileSystemObject, vous devez sélectionner le Microsoft Scripting Runtime dans la boîte de dialogue Références de projet pour votre projet. L’exemple suivant illustre comment implémenter les fonctionnalités de l’objet FileSystemObject. Pour plus d’informations, consultez les fichiers d’aide de Visual Basic et de la documentation en ligne de Visual Basic."
2- il faut respecter les commentaire
Sub CompterNrOccurrence()
Dim objFSO As FileSystemObject
Dim ts As TextStream
Dim strText As String
Dim strSearchText As String
Dim strFileName As String
Dim lngPos As Long
Dim lngStringCount As Long
Dim i As Integer
' il faut adapter le nom de la feuille!!
With ActiveWorkbook.Sheets("recap")
For i = 1 To 2
' recuperer les mots à chercher de la colonne A (CBUSH et GRID)
strSearchText = .Range("A" & i).Text
' le chemin du fchier txt !!!!!!!!!À ADAPTER!!!!!!!!!
strFileName = "C:\Users\XXX\YYY\collage_1.txt"
'Créer une instance de FileSystemObject.
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set ts = objFSO.OpenTextFile(strFileName, ForReading)
'Lire tout le contenu du fichier et l'enregistrer dans la variable strText
strText = ts.ReadAll
lngPos = 1
Do
lngPos = InStr(lngPos, strText, strSearchText)
If lngPos > 0 Then
lngStringCount = lngStringCount + 1
lngPos = lngPos + Len(strSearchText)
End If
Loop Until lngPos = 0
' inserer le resultat dans la colone B
.Range("B" & i).Value = lngStringCount
'vider la variable lngStringCount
lngStringCount = Empty
Next i
End With
End SubBonne journée