Supprimer un retour chariot dans une ligne qui contient des conditions [Résolu]

Messages postés
16
Date d'inscription
mercredi 21 février 2007
Statut
Membre
Dernière intervention
19 juillet 2007
- - Dernière réponse : jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
- 21 févr. 2007 à 20:44
Bonjour tout le monde,

Voilà ca fait 2 jours que je planche et je n'y arrive pas. Autant en VB6 qu'en VBA
Je souhaite supprimer un retour chariot qui figure dans un fichier tsv (fichiers bancaires). Ce retour chariot est mis d'office lorsque que le champ contient des informations supplémentaires. Si ce champ n'a pas d'info supplémentaires, il n'y a pas ce retour chariot. Il m'embête car quand je convertis le document en colonne il m'en compte 4 si je demande par tabulation.
Voici un exemple de fichier :
19/02/2007  "PRELEVEMENT
DE EDF PRELEVTS VILL

00000 00000 0000Z000000*0000000000000 00000 000 EDF PR000000 000000"    -137,34     -900,89
19/02/2007  "CHEQUE
N° 6684024"     -341,41     -2239,50

Le retour chariot est ici après VILL puis -900.89 (celui après -900.89 ne me dérange pas)
Dans la ligne suivante, il n'y a pas de retour chariot entre le commentaire et le montant
Entre chaque champ, il y a une tabulation

Merci de votre aide et votre soutien moral.
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
18
3
Merci
Bon...
Nous allons donc réfléchir tous les 2 à "haute voix", si tu le veux bien...

Nous ignorons, toi comme moi, à ce stade, si tes "retours charriots" apparents sont des VBCrLf, des VbCr ou des VbLf.
Or, si le 1er séparateur est composé de 2 caractères, les 2 derniers n'en contiennent qu'un seul....

Nous allons donc procéder dans cet ordre :

1) remplacer tous les VbCrLf éventuels par "&&"
puis
2) remplacer tous les VbCr éventuels par "&&"
puis
3) remplacer tous les VbLf éventuels par  "&&"

Chacune des étapes ci-dessus est réalisée par Replace

nous serons de la sorte assurés de nous "retrouver" avec une chaîne de type

"[mailto:AAAAAAA&&BBBBBB&&CCCCCC@@DDDDDD AAAAAAA&&BBBBBB&&CCCCCC&&DDDDDD]"

Que nous reste-t-il à faire ?
Tout simplement utiliser Split avec "&&" pour générer un tableau de 4 chaines, d'indice 0 à 3

Il suffit allors de recomposer la chaine en disant qu'elle est l'indice 1 &  l'indice 2 de ton tableau & vbcrlf & l'indice 3 & l'indice 4 de ton tableau.

Tu as maintenant tout ce qu'il te faut entre les mains, ami.

A toi.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 217 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
18
0
Merci
Utilise Replace pour remplacer ton retour-charriot (vbcrlf) par ""
Commenter la réponse de jmfmarques
Messages postés
16
Date d'inscription
mercredi 21 février 2007
Statut
Membre
Dernière intervention
19 juillet 2007
0
Merci
Merci de la répnse aussi rapide mais.... non.. ça ne fonctionnerait pas
.
Il y a un retour chariot après le dernier montant en francs et il faut que je le garde sinon la ligne suivante sera mise à la suite de la précédente.
En fait j'aimerais bien qu'il trouve qu'entre les deux "" (cad là ou figure le commentaire) il y a un retour chariot qu'il faut supprimer. La fonction between ne correspond pas non plus.

Voilà ce que je voudrais avoir :

Date((TAB)Nom(TAB)Montant euros(TAB)Montant en francs (retour chariot à garder)

19/02/2007(TAB) "PRELEVEMENT DE EDF PRELEVTS VILL (pas de retour chariot)
00000 00000 0000Z000000*0000000000000 00000 000 EDF PR000000 000000"  (TAB)  -137,34(TAB)   -900,89 (retour chariot existant à garder)
19/02/2007(TAB)"CHEQUE N° 6684024"(TAB)    -341,41  (TAB)   -2239,50
Commenter la réponse de yo612