Notepad++ besoin de créer des sauts de ligne avec variante de condition

Résolu/Fermé
Lyne - 4 févr. 2021 à 00:03
maclesglyne Messages postés 8 Date d'inscription dimanche 7 février 2021 Statut Membre Dernière intervention 8 février 2021 - 8 févr. 2021 à 00:32
Bonjour à tous,

voila j'ai un fichier avec des commandes, chaque commande commence par " puis suivi de 5 numéros et le guillemet est fermé.
Exemple de l'écriture d'une commande "32564".
j'ai des LF à chaque fin de ligne mais une commande peut faire une ligne deux lignes ou trois lignes.
Donc j'aimerai avoir un code me permettant de dire à chaque fois que tu vois 5 numéros entre guillemets tu mets un saut de ligne sur la ligne d'avant.
cela me permettrai d'avoir un saut de ligne entre chaque commande et de les consolider sur excel.

merci à vous
Céline
A voir également:

5 réponses

jee pee Messages postés 39696 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 7 mai 2024 9 258
Modifié le 4 févr. 2021 à 00:42
Bonjour,

essayer remplacer
^("[0-9][0-9][0-9][0-9][0-9]")$
par
\n\1
avec expression régulière cochée

on pourrait aussi faire avec
^("\d{5}")$
pour 5 digits

0
Déjà un grand merci pour la réponse :):):)

cela n'a pas fonctionné
j'ai mis dans la zone recherche
^("[0-9][0-9][0-9][0-9][0-9]")$
j'ai mis dans la zone remplacer par
\n\1
qui est le code pour saut de ligne :)

j'ai ensuite mis dans la zone recherche
^("\d{5}")$

pareil en cochant expression régulière ... mais il ne trouve aucune occurrence

en plus comme il y a des codes postaux à l'intérieur également entourés de guillemets, il faut vraiment que l'hypothèse soit en début de ligne (un peu comme la formule estnum associé à gauche dans excel

j'ai essayé sur Excel mais trop complexe si on passe pas par VB ... et VB c'est loin pour moi :)
0
jee pee Messages postés 39696 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 7 mai 2024 9 258 > Lyne
Modifié le 4 févr. 2021 à 01:42
Voila un exemple avant/remplacer/après où cela fonctionne


Le ^ signifie en début de ligne et le $ fin de ligne, on ne prend donc que des lignes avec 7 caractères "nnnnn"

C'est peut être le séparateur de lignes du fichier, c'est cr+lf ou lf

Il faudrait mettre quelques lignes dans une reponse sur le forum mais mieux un fichier exemple sur un site de dépot comme cjoint.fr
0
jee pee Messages postés 39696 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 7 mai 2024 9 258 > jee pee Messages postés 39696 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 7 mai 2024
4 févr. 2021 à 01:47
il faut bien évidement qu'il n'y ait rien derrière "nnnnn" , pas de blanc !

ou alors enlever le $
0
maclesglyne Messages postés 8 Date d'inscription dimanche 7 février 2021 Statut Membre Dernière intervention 8 février 2021 > jee pee Messages postés 39696 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 7 mai 2024
7 févr. 2021 à 22:47
cela ne fonctionne pas non plus :(
0
maclesglyne Messages postés 8 Date d'inscription dimanche 7 février 2021 Statut Membre Dernière intervention 8 février 2021 > jee pee Messages postés 39696 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 7 mai 2024
Modifié le 7 févr. 2021 à 22:58
j'ai mis le fichier sur cijoint
[moderation]
je ne sais pas si tu arrives à l'ouvrir
0
jee pee Messages postés 39696 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 7 mai 2024 9 258
Modifié le 4 févr. 2021 à 18:45
Il est surement possible de se passer de cette étape. Dans Excel on pourrait imaginer une colonne avec une formule qui détermine si c'est une ligne entete ou détail
=SI(ET(STXT(A1;1;1)="""";ESTNUM(CNUM(STXT(A1;2;5)));
STXT(A1;7;1)="""");"Entete";"Detail")


0
maclesglyne Messages postés 8 Date d'inscription dimanche 7 février 2021 Statut Membre Dernière intervention 8 février 2021
7 févr. 2021 à 22:47
rebonjour,
désolée pour la réponse tardive mais j'ai eu un soucis familial.
Un grand merci pour ton aide :)

alors sur Excel, le csv il n'y a pas de " " qui entoure le numéro de commande
de ce fait éventuellement, je peux lui dire si ça commence par 5 numéros alors... mais je ne trouve pas sur les forum.
0
jee pee Messages postés 39696 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 7 mai 2024 9 258
7 févr. 2021 à 23:10
Ton fichier .csv si tu veux l'exploiter avec la virgule en séparateur de champ, il faut le renommer en .txt
lancer excel, fichier/ouvrir le .txt
dire fichier avec séparateur, sélectionner la virgule. Ainsi tu as des colonnes.

Pour différencier ligne entête et ligne suite, tu rajoutes une colonne vide en A, et en A2 tu mets la formule suivante
=SI(ESTNUM(CNUM(B2));"Entete";"******")
que tu dupliques sur toutes les lignes qui suivent
0
maclesglyne Messages postés 8 Date d'inscription dimanche 7 février 2021 Statut Membre Dernière intervention 8 février 2021
7 févr. 2021 à 23:17
ha oui super idée... ça marche ! par contre j'ai juste un bémol avec cette méthode
Tu vois sur notepad l'avantage que j'avais avant (il y avait CR + LF quand c'était un saut de ligne après chaque commande et un LF quand la commande était scindée en plusieurs lignes.
Donc j'utilisais le recherche remplace par (je copiais le LF et remplacer par rien) de ce fait mon cvs se mettait tout seul une ligne par commande et je passais par excel. Fonction convertir par le séparateur de virgules et ... j'avais en deux clics mon fichier exploitable.

là avec ta solution (qui est déjà top merci :))
une fois les lignes différenciées entre entete et ligne suite, tu aurais un moyen pour que ça se mette à la suite tout seul. Car quand j'exploite un mois complet je peux avoir 5 à 6000 lignes Excel ... a la main je vais galérer...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jee pee Messages postés 39696 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 7 mai 2024 9 258
Modifié le 8 févr. 2021 à 00:22
Pour traiter ton fichier il faut procéder par étapes :
ajouter devant le n° de cde
^("\d{5}")
une chaine improbable
#XYZ#XYZ#\1
 .
supprimer tous LF
\n
par rien
   .

remplacer
#XYZ#XYZ#
par CRLF
\r\n



0
maclesglyne Messages postés 8 Date d'inscription dimanche 7 février 2021 Statut Membre Dernière intervention 8 février 2021
8 févr. 2021 à 00:32
tu es MAGIQUE !

cela fonctionne....
un grand merci Jee Pee ...
une belle epine du pied :):):):):):)
0