Microsoft 365 Modifier un fichier texte

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

ivan27

XLDnaute Occasionnel
Bonsoir à tous,

J'ai besoin de modifier certaines lignes dans des fichiers textes.
Les fichiers en question sont des fichiers EDI.
La chaîne à modifier se trouve dans le segment GIN+BN+
Si le nombre qui suit est composé de 28 caractères, il faut ajouter des espaces après les caractères 10, 4, 6, 4, 4
Si le nombre qui suite est composer de 30 caractères, il faut ajouter des espaces après les caractères 10, 6, 6, 4, 4
Je vous communique en pièce jointe des fichiers exemples.
Il peut y avoir plusieurs centaines de ligne GIN+BN+ dans un même fichier et les lignes ne se suivent pas obligatoirement.
Merci d'avance pour votre aide.
Bonne soirée
 

Pièces jointes

Solution
Re,
Un nouvel essai. Cela marche avec la chaîne que vous avez donné.
Par contre je ne suis pas parvenu à détecter que le fichier avait déjà été traité.
Impossible de se baser sur des espaces ou des double return car le fichier de base pourraient en comporter.
Bonjour @ivan27, @sylvanu , le Forum

Sylvanu, quand tu auras 5 minutes pourras-tu m'expliquer ce qu'est "Pattern" utilisé dans :
If InStr(t(i), Pattern) > 0 Then
Car je n'ai jamais vu ça et l'aide ne m'explique pas plus clairement ce que c'est ... (?)



Merci d'avance et bonne journée
@+Thierry
 
Bonjour,
Tout simplement parce que j'ai oublié de déclarer le pattern.🙂
Je voulais sécuriser avec la présence d'un apostrophe dans la chaîne.
Par contre il y avait un autre bug, l'ajout de ce même apostrophe intempestif en fin de chaîne.
Les deux sont corrigés dans cette V2.
 

Pièces jointes

Re

Ah bon, oui, d'où l'utilité d'Option Explicit !

1594103553594.png


Bonne journée
@+Thierry
 
Re Sylvanu
Oh ne le prend pas mal, moi j'étais juste curieux car je ne comprenais pas "Pattern" qui en plus est une property de LineFormat, mais avant de poster ma question, j'aurais simplement du tester avec Option Explicit.
Mais sinon bon boulot, je pense qu'Ivan sera satisfait !, Pas "d'outrecuidance" entre-nous LoL !
Bien à toi, à vous
@+Thierry
 
Bonjour le forum, sylvanu,
Merci beaucoup pour cette proposition.
Je viens de tester sur un fichier d'exploitation. Par contre, je souhaiterais que la transcription fonctionne uniquement sur les chaînes de 28 ou 30 caractères comme dans mon fichier test.
Or, j'ai également une conversion sur ce genre de chaîne :

GIN+BN+*6058951534101250000637050001300'
GIN+BN+*605895153 410125 000063 7050 001300'

Bien cordialement,
Ivan
 
Bonjour,
@thierry, No problem. Ce qui m'a amusé est que si bien même il y avait Option explicit et la variable déclarée, le problème serait resté entier puisqu'il ne s'agissait pas d'une déclaration de variable mais de son initialisation.
@ Ivan, je corrige. de toute façon il y a un autre bug de sécurité. Si, par inadvertance, vous traitez un fichier déjà traitez alors le fichier est mal modifié. ( structure if then else inadaptée en l'état )
 
Re,
Un nouvel essai. Cela marche avec la chaîne que vous avez donné.
Par contre je ne suis pas parvenu à détecter que le fichier avait déjà été traité.
Impossible de se baser sur des espaces ou des double return car le fichier de base pourraient en comporter.
 

Pièces jointes

Re bonjour le forum, sylvanu,

Je viens de faire plusieurs tests avec cette nouvelle version et le résultat est plutôt concluant.
Le nombre de caractères est respecté et les espaces déjà existants sont également pris en compte.
Il ne faut pas lancer le code plusieurs fois sur le même fichier car il ajoute un retour chariot sur toutes les lignes mais à part ce petit problème ça fonctionne parfaitement !
Je clôture la conversation et je te réitère mes remerciements.
Bonne journée à tous
Ivan
 
Désolé je n'ai pu résoudre le problème du double traitement.
C'eût été possible au prix de critères restrictifs sur le fichier : pas de double saut de ligne, pas d'espaces intempestifs ...
Sauf si on avait la possibilité de rajouter une ligne "commentaire", mais ça dépend de l'outil qui va consommer le fichier.
 
- 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

  • Question Question
Microsoft 365 recherche idée
Réponses
6
Affichages
817
Réponses
2
Affichages
939
  • Question Question
Microsoft 365 colorer une plage
Réponses
2
Affichages
901
Retour