bonjour à tous,
Je cherche à formater un fichier txt afin de le rendre facilement interprétable par Excel; En somme, je dispose d'un fichier txt (issu d'une extraction d'une application) et les données sont séparées par un nombre variable d'espace.
Je cherche donc à remplacer ce nombre variable (de 4 à 18) d'espace par un seul code caractère (";/"). De cette manière Excel pour comprendre le fichier txt en séparer les colones grace au caractère ";/".
J'ai déjà rédigé un script avec l'aide de pusieurs messages du forum, le voiciLe problème est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 const ForAppending = 8, ForWriting = 2, forReading= 1 Set fsoFichierSource=CreateObject("Scripting.FileSystemObject") Set txt_source=fsoFichierSource.OpenTextFile("fichier-ref.txt", forReading) Set txt_dest=fsoFichierSource.CreateTextFile("fichier-res.txt", ForWtriting) set regex = new regExp regex.pattern="( ){2,}" 'car il y a des noms et prénoms de personnes qui sont séparés par un seul espace regex.global = true do while not txt_source.AtEndOfStream strLigne=txt_source.ReadLine set Matches = regex.Execute(strligne) For Each Match in Matches RetStr = Match.Value Next strligne= Replace(strligne, RetStr ,";/") txt_dest.writeline strligne loop 'fin de la boucle txt_dest.close txt_source.Close msgbox("fin")
le script ne remplace pas toutes les occurences de plus de 2 espaces dans le fichier; mais en plus lorsqu'il supprime des occurences d'espaces, il lui arrive de ne pas tout prendre :
Par exemple, la chaine de caractère suivante :
"Emet Gest" (il y a 23 espaces entre "Emet" et "Gest") devient "Emet;/ Gest" (il reste encore 7 espaces qui doivent être supprimés entre les deux mots)
quelqu'un pourrait'il m'expliquer la raison de ce résultat? Il y a-t-il un nombre maximum de caractère qui peuvent être détécté par RegEx??
merci d'avance
Partager