Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

rechercher chaine de caractère dans fichier txt

  • Initiateur de la discussion Initiateur de la discussion fleet21
  • 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 !

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
 
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:
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 ?
 
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

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

Ç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 ?
 
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:
- 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

Réponses
4
Affichages
107
Réponses
4
Affichages
231
Réponses
2
Affichages
160
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…