Supprimer un retour chariot dans une ligne qui contient des conditions

Résolu
yo612 Messages postés 16 Date d'inscription mercredi 21 février 2007 Statut Membre Dernière intervention 19 juillet 2007 - 21 févr. 2007 à 18:00
jmfmarques Messages postés 7666 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.

3 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
21 févr. 2007 à 20:44
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.
3
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
21 févr. 2007 à 18:05
Utilise Replace pour remplacer ton retour-charriot (vbcrlf) par ""
0
yo612 Messages postés 16 Date d'inscription mercredi 21 février 2007 Statut Membre Dernière intervention 19 juillet 2007
21 févr. 2007 à 18:48
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
0
Rejoignez-nous