rechercher chaine de caractère dans fichier txt

fleet21

XLDnaute Junior
Bonjour à tous,

Je souhaite rechercher la chaine de caractère ’’MM1234R80001’’ dans un fichier txt faisant plusieurs méga, pouvez vous m’indiquer la commande adéquate la plus rapide. Il faudrait aussi vérifier que cette chaine n'apparaisse bien plus du tout dans le fichier txt.

Merci
 

Staple1600

XLDnaute Barbatruc
Bonsoir à tous, sousou

On peut aussi utiliser Ce lien n'existe plus
les exemples de script pullulent sur le net ;)

Donc à utiliser soit dans un batch MSDOS (*.bat ou *.cmd) ou dans un script VBS, *.vbs (comme suggéré par sousou)

On peut même s'amuser à le lancer à partir d'Excel

NB: Avec les Windows, plus récent, on préféra(ou pas) utiliser la puissance de Powershell ;)
source:Michael Sorens
List FileInfo objects for all files containing pattern:
Get-ChildItem -Recurse filespec | Where-Object { Select-String pattern $_ -Quiet }
ls -r filespec | ? { sls pattern $_ -q }

List file names for all files containing pattern:

Get-ChildItem -Recurse filespec | Select-String pattern | Select-Object -Unique Path
ls -r filespec | sls pattern | select -u Path

List FileInfo objects for all files not containing pattern:
Get-ChildItem -Recurse filespec | Where-Object { !(Select-String pattern $_ -Quiet) }
ls -r filespec | ? { !(sls pattern $_ -q) }

List file names for all files not containing pattern:
(Get-ChildItem -Recurse filespec | Where-Object { !(Select-String pattern $_ -Quiet) }).FullName
(ls -r filespec | ? { !(sls pattern $_ -q) }).FullName
 
Dernière édition:

fleet21

XLDnaute Junior
Je vais essayer d'expliquer du mieux possible ;).

Je scanne un txt pour vérifier la présence d'une valeur référence, par exemple ’’MM1234R80001’’.

- Si la valeur est absente du fichier je la met dans la case A2 du fichier excel

- Si la valeur est présente je vérifie qu'elle n'est pas présente plus loin dans le fichier (1 seule occurence suffit pour l'instant)

- Si elle est présente 2 fois, la valeur est copiée en C2
- Si elle est présente une seule fois on va à l'étape suivante

- On incrémente la valeur ''MM1234R80001'' à ''MM1234R80002'' (cette partie de code est déja faite)

- On recommence à scanner le txt (An passe à An+1 et Cn à Cn+1)

Question subsidiaire : est ce long de scanner un fichier de 10Mo entièrement ?
 

sousou

XLDnaute Barbatruc
Re
Voici un fichier qui devrait te permettre d'avancer.
Ici je regarde le nombre d’occurrence dans un fichier txt positionné dans le répertoire courant et s'appelant toto.txt
Cet exemple n'est pas adapté à ta demande précise, mais doit te permettre de le faire.
Une fois que tu connais le nombre d'occurences tu prends les décisions souhaitées
 

Pièces jointes

  • txt.xlsm
    22.5 KB · Affichages: 62
  • toto.txt
    9.2 KB · Affichages: 59

fleet21

XLDnaute Junior
Rebonjour sousou je n'arrive pas à comprendre toute la macro donc pas moyen de la modifier sans obtenir des erreurs que je ne sais rectifier.

J'aimerais dans un premier temps ''simplement'' chercher une chaine de caractère (par exemple valeur de départ MM1234R80001 stockée dans une variable ''ns'') dans un fichier txt et lorsque la chaine n'est pas trouvée qu'elle soit reportée dans une case du fichier excel. ns est incrémentée par pas de 1 et les chaine absentes reportées de A1 à Ax.
Le fichier ''essai'' sert à tester la macro qui devrait détecter l'absence de MM1234R80004 et MM1234R80008.
 

Pièces jointes

  • macro1.txt
    371 bytes · Affichages: 49
  • essai.txt
    110 bytes · Affichages: 53

fleet21

XLDnaute Junior
Ça marche du tonnerre un grand merci. J’ai encore quelques petites questions.

Les lignes entre les fonctions ont-elles un usage particulier ou c’est simplement pour les séparer ? Comment les actives tu ?

Comment peut-on mettre dans l’ordre croissant les chaines non trouvées ?

Pourquoi toutes les fonctions ne sont-elles pas dans le module Fonction ?
 

sousou

XLDnaute Barbatruc
RE
Les lignes avec ' sont des commentaires, les lignes blanche sont simplement là pour la lisibilité.
Le module fonctions est un module que j'utilise pour bien des applis, je l'avais mis là dans mon premier code parceque j'en avais besoin,
mais dans la dernière version il est parfaitement inutile (exporte le ca pourra te servir).
Tu peux aussi parfaitement intégrer les deux fonctions du code dans ce module, je ne me suis pas vraiment attaché à la forme.
J'ai essayé de coller au plus près du code transmis, mais on pourrais faire autrement par exemple pourquoi utilise d9?
Pour classer par ordre ajoute à la fin de ta macro
ActiveSheet.Columns(1).Sort key1:=ActiveSheet.Range("a1")
 
Dernière édition:

Discussions similaires

Réponses
12
Affichages
483

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof