Une macro a pour fonction d'aller chercher des fichiers de pur texte (.txt)
mis sur le réseau par divers services extérieurs et de les copier dans un
seul fichier (de pur texte lui aussi).
A certains endroits, elle doit aussi insérer une ligne "vide", c'est-à-dire
une ligne réduite à une marque de fin de ligne.
Je compte utiliser la méthode classique d'accès séquentiel : ouvrir les
fichiers extérieurs pour input et le nouveau fichier pour output (en
utilisant Print ou Write, je devrai encore examiner ça).
Le problème, c'est qu'il existe plusieurs façons d'enregistrer un fichier
txt en ce qui concerne les marques de fin de ligne :
1° octet 10,
2° octet 13;
3° octet 13 et octet 10;
4° octet 10 et octet 13.
Je suppose que, dans un même fichier, il vaut mieux n'utiliser qu'une seule
convention
Je n'ai pas de raison de penser que les services extérieurs procéderont tous
de la même façon et je n'aimerais pas le leur demander, donc je souhaiterais
que le programme unifie lui-même la désignation des marques de fin de ligne.
Pour fixer les idées, disons que le fichier créé par le programme doit être
du type octet 13 & octet 10.
Je vois une possibilité : chaque ligne d'un fichier extérieur est mise dans
une variable LaLigne et le programme exécute ceci pour chaque ligne :
MonIndice = 1
Do While Asc(Mid(LaLigne, MonIndice, 1)) <> 10 And Asc(Mid(LaLigne,
MonIndice, 1)) <> 13
MonIndice = MonIndice + 1
Loop ' MonIndice est maintenant la position du "caractère" ou du premier des
deux "caractères" qui marquent la fin de ligne.
LaLigne = Left(LaLigne, Indice - 1) & Chr(13) & Chr(10) ' Vérifier que le
second argument de Left peut être nul.
et ensuite la nouvelle valeur de LaLigne est écrite (avec Print ou avec
Write ?) dans le fichier d'output.
Pour insérer une ligne "vide", je suppose qu'on écrirait de même Chr(13) &
Chr(10) dans le fichier de sortie.
J'avoue que je n'ai pas testé cette macro, parce que je crains de chercher
midi à quatorze heures alors qu'il existe peut-être des fonctions intégrées
qui font ce travail plus vite et plus correctement.
Si quelqu'un peut m'aider, merci d'avance.
Mersenne.
Une macro a pour fonction d'aller chercher des fichiers de pur texte (.txt) mis sur le réseau par divers services extérieurs et de les copier dans un seul fichier (de pur texte lui aussi). A certains endroits, elle doit aussi insérer une ligne "vide", c'est-à-dire une ligne réduite à une marque de fin de ligne.
Ne te complique pas la vie, tu as tout dans l'aide : --------------------------- Line Input #, instruction Lit une ligne unique à partir d'un fichier séquentiel ouvert et l'attribue à une variable de type String. Syntaxe Line Input #filenumber, varname La syntaxe de l'instruction Line Input # comprend les éléments suivants : Élément Description filenumber Tout numéro de fichier valide. varname Nom de variable de type Variant ou String valide. Remarques Les données lues dans un fichier à l'aide de l'instruction Line Input # sont généralement écrites à l'aide de l'instruction Print #. L'instruction Line Input # lit un à un les caractères d'un fichier jusqu'au premier retour chariot (Chr(13)) ou retour chariot – saut de ligne (Chr(13) + Chr(10)) rencontré. Les séquences retour chariot – saut de ligne ne sont pas prises en compte (elles ne sont pas ajoutées à la chaîne de caractères). ------------------------- Line Input #, instruction, exemple Cet exemple utilise l'instruction Line Input # pour lire une ligne dans un fichier séquentiel et l'affecter à une variable. Nous supposons que FICHTEST est un fichier texte comportant quelques lignes de données exemple.
Dim TextLine Open "FICHTEST" For Input As #1 ' Ouvre le fichier. Do While Not EOF(1) ' Effectue la boucle jusqu'à la fin du fichier. Line Input #1, TextLine ' Lit la ligne dans la variable. Debug.Print TextLine ' Affiche dans la fenêtre Exécution. Loop Close #1 ' Ferme le fichier. ------------------------------------ Voilà pour la lecture, que tu aies 10, 13 ou 10+13 Et on te suggère d'utiliser Print --------------- Print #, instruction, exemple Cet exemple utilise l'instruction Print # pour écrire des données dans un fichier.
Open "FICHTEST" For Output As #1 ' Ouvre le fichier en écriture. Print #1, "Ceci est un test" ' Écrit le texte dans le fichier. Print #1, ' Insère une ligne vierge dans le fichier. Print #1, "Zone 1"; Tab ; "Zone 2" ' Sépare la chaîne en deux. ' Sépare les chaînes de caractères avec des espaces. Print #1, "Bonjour" ; " " ; "à tous" Print #1, Spc(5) ; "5 espaces à gauche" ' Écrit cinq espaces à gauche. Print #1, Tab(10) ; "Bonjour" ' Écrit le mot à partir de la colonne 10. ---------------------- Il me semble qu tu as tout là.
-- A+
Bonjour.
Une macro a pour fonction d'aller chercher des fichiers de pur texte (.txt) mis sur le
réseau par divers services extérieurs et de les copier dans un seul fichier (de pur
texte lui aussi).
A certains endroits, elle doit aussi insérer une ligne "vide", c'est-à-dire une ligne
réduite à une marque de fin de ligne.
Ne te complique pas la vie, tu as tout dans l'aide :
---------------------------
Line Input #, instruction
Lit une ligne unique à partir d'un fichier séquentiel ouvert et
l'attribue à une variable de type String.
Syntaxe
Line Input #filenumber, varname
La syntaxe de l'instruction Line Input # comprend les éléments suivants
:
Élément Description
filenumber Tout numéro de fichier valide.
varname Nom de variable de type Variant ou String valide.
Remarques
Les données lues dans un fichier à l'aide de l'instruction Line Input #
sont généralement écrites à l'aide de l'instruction Print #.
L'instruction Line Input # lit un à un les caractères d'un fichier
jusqu'au premier retour chariot (Chr(13)) ou retour chariot – saut de
ligne (Chr(13) + Chr(10)) rencontré. Les séquences retour chariot –
saut de ligne ne sont pas prises en compte (elles ne sont pas ajoutées
à la chaîne de caractères).
-------------------------
Line Input #, instruction, exemple
Cet exemple utilise l'instruction Line Input # pour lire une ligne dans
un fichier séquentiel et l'affecter à une variable. Nous supposons que
FICHTEST est un fichier texte comportant quelques lignes de données
exemple.
Dim TextLine
Open "FICHTEST" For Input As #1 ' Ouvre le fichier.
Do While Not EOF(1) ' Effectue la boucle jusqu'à la fin du fichier.
Line Input #1, TextLine ' Lit la ligne dans la variable.
Debug.Print TextLine ' Affiche dans la fenêtre Exécution.
Loop
Close #1 ' Ferme le fichier.
------------------------------------
Voilà pour la lecture, que tu aies 10, 13 ou 10+13
Et on te suggère d'utiliser Print
---------------
Print #, instruction, exemple
Cet exemple utilise l'instruction Print # pour écrire des données dans
un fichier.
Open "FICHTEST" For Output As #1 ' Ouvre le fichier en écriture.
Print #1, "Ceci est un test" ' Écrit le texte dans le fichier.
Print #1, ' Insère une ligne vierge dans le fichier.
Print #1, "Zone 1"; Tab ; "Zone 2" ' Sépare la chaîne en deux.
' Sépare les chaînes de caractères avec des espaces.
Print #1, "Bonjour" ; " " ; "à tous"
Print #1, Spc(5) ; "5 espaces à gauche" ' Écrit cinq espaces à
gauche.
Print #1, Tab(10) ; "Bonjour" ' Écrit le mot à partir de la colonne
10.
----------------------
Il me semble qu tu as tout là.
Une macro a pour fonction d'aller chercher des fichiers de pur texte (.txt) mis sur le réseau par divers services extérieurs et de les copier dans un seul fichier (de pur texte lui aussi). A certains endroits, elle doit aussi insérer une ligne "vide", c'est-à-dire une ligne réduite à une marque de fin de ligne.
Ne te complique pas la vie, tu as tout dans l'aide : --------------------------- Line Input #, instruction Lit une ligne unique à partir d'un fichier séquentiel ouvert et l'attribue à une variable de type String. Syntaxe Line Input #filenumber, varname La syntaxe de l'instruction Line Input # comprend les éléments suivants : Élément Description filenumber Tout numéro de fichier valide. varname Nom de variable de type Variant ou String valide. Remarques Les données lues dans un fichier à l'aide de l'instruction Line Input # sont généralement écrites à l'aide de l'instruction Print #. L'instruction Line Input # lit un à un les caractères d'un fichier jusqu'au premier retour chariot (Chr(13)) ou retour chariot – saut de ligne (Chr(13) + Chr(10)) rencontré. Les séquences retour chariot – saut de ligne ne sont pas prises en compte (elles ne sont pas ajoutées à la chaîne de caractères). ------------------------- Line Input #, instruction, exemple Cet exemple utilise l'instruction Line Input # pour lire une ligne dans un fichier séquentiel et l'affecter à une variable. Nous supposons que FICHTEST est un fichier texte comportant quelques lignes de données exemple.
Dim TextLine Open "FICHTEST" For Input As #1 ' Ouvre le fichier. Do While Not EOF(1) ' Effectue la boucle jusqu'à la fin du fichier. Line Input #1, TextLine ' Lit la ligne dans la variable. Debug.Print TextLine ' Affiche dans la fenêtre Exécution. Loop Close #1 ' Ferme le fichier. ------------------------------------ Voilà pour la lecture, que tu aies 10, 13 ou 10+13 Et on te suggère d'utiliser Print --------------- Print #, instruction, exemple Cet exemple utilise l'instruction Print # pour écrire des données dans un fichier.
Open "FICHTEST" For Output As #1 ' Ouvre le fichier en écriture. Print #1, "Ceci est un test" ' Écrit le texte dans le fichier. Print #1, ' Insère une ligne vierge dans le fichier. Print #1, "Zone 1"; Tab ; "Zone 2" ' Sépare la chaîne en deux. ' Sépare les chaînes de caractères avec des espaces. Print #1, "Bonjour" ; " " ; "à tous" Print #1, Spc(5) ; "5 espaces à gauche" ' Écrit cinq espaces à gauche. Print #1, Tab(10) ; "Bonjour" ' Écrit le mot à partir de la colonne 10. ---------------------- Il me semble qu tu as tout là.
-- A+
Anacoluthe
Bonjour !
'Geo' nous a écrit ...
Ne te complique pas la vie
Que voilà une bonne philosophie ! J'allais le dire :-)
Signalons aussi les TextStream avec ReadLine WriteLine et même WriteBlankLines(n) pour écrire n lignes vides.
Toujours d'après l'Aide :
Public Sub Test() Set fs = CreateObject("Scripting.FileSystemObject") Set a = fs.CreateTextFile("c:fichiertest.txt", True) a.writeline ("Ceci est un test.") a.writeblanklines (2) ' deux lignes vides a.writeline ("encore une ligne") a.Close End Sub
Anacoluthe « Le plus compliqué cest de faire simple. » - Léonard de VINCI
Bonjour !
'Geo' nous a écrit ...
Ne te complique pas la vie
Que voilà une bonne philosophie ! J'allais le dire :-)
Signalons aussi les TextStream avec ReadLine WriteLine et même
WriteBlankLines(n) pour écrire n lignes vides.
Toujours d'après l'Aide :
Public Sub Test()
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile("c:fichiertest.txt", True)
a.writeline ("Ceci est un test.")
a.writeblanklines (2) ' deux lignes vides
a.writeline ("encore une ligne")
a.Close
End Sub
Anacoluthe
« Le plus compliqué cest de faire simple. »
- Léonard de VINCI
Que voilà une bonne philosophie ! J'allais le dire :-)
Signalons aussi les TextStream avec ReadLine WriteLine et même WriteBlankLines(n) pour écrire n lignes vides.
Toujours d'après l'Aide :
Public Sub Test() Set fs = CreateObject("Scripting.FileSystemObject") Set a = fs.CreateTextFile("c:fichiertest.txt", True) a.writeline ("Ceci est un test.") a.writeblanklines (2) ' deux lignes vides a.writeline ("encore une ligne") a.Close End Sub
Anacoluthe « Le plus compliqué cest de faire simple. » - Léonard de VINCI
Mersenne
Merci Geo.
Le fait que Line Input fait abstraction de l'éventuel Chr(13) ou de l'éventuel Chr(13) & Chr(10) final est en effet important.
(Je suis en train d'adapter un programme Perl, où les lignes lues gardent leur marque de fin de ligne, uniformément ramenée à l'unique octet 10 pour le traitement des chaînes de caractères et transformées - sous Windows - en 10/13 pour la sortie dans un fichier.)
(Au fait, qu'en est-il si la fin de ligne est un Chr(10) ou un Chr(10) suivi d'un Chr(13) ? Cela existe aussi, je crois. Mais peu importe ici, je verrai.)
En fait, la macro en question découpe aussi le contenu d'un fichier extérieur en, disons, unités documentaires. Une unité documentaire est, disons, un article de journal et ces unités documentaires doivent être triées selon le numéro de page de l'article, qui est indiqué à la première ligne de l'article.
Je souhaiterais faire comme dans le programme Perl : mettre chaque unité documentaire dans une chaîne multiligne et former un tableau avec ces chaînes. (Le tri ne manipulerait pas ces longues chaînes, j'utilise un tri indirect, mais peu importent les détails.)
Maintenant, je me demande quelle est la bonne façon de former une chaîne multiligne à partir de lignes lues par Line Input (et qui ne comportent donc pas de marque de fin de ligne) : ajouter Chr(13) & Chr(10) à chaque ligne lue ?
Je vais essayer, à moins que quelqu'un ne me crie casse-cou.
Mersenne.
Merci Geo.
Le fait que Line Input fait abstraction de l'éventuel Chr(13) ou de
l'éventuel Chr(13) & Chr(10) final est en effet important.
(Je suis en train d'adapter un programme Perl, où les lignes lues gardent
leur marque de fin de ligne, uniformément ramenée à l'unique octet 10 pour
le traitement des chaînes de caractères et transformées - sous Windows - en
10/13 pour la sortie dans un fichier.)
(Au fait, qu'en est-il si la fin de ligne est un Chr(10) ou un Chr(10) suivi
d'un Chr(13) ? Cela existe aussi, je crois. Mais peu importe ici, je
verrai.)
En fait, la macro en question découpe aussi le contenu d'un fichier
extérieur en, disons, unités documentaires. Une unité documentaire est,
disons, un article de journal et ces unités documentaires doivent être
triées selon le numéro de page de l'article, qui est indiqué à la première
ligne de l'article.
Je souhaiterais faire comme dans le programme Perl : mettre chaque unité
documentaire dans une chaîne multiligne et former un tableau avec ces
chaînes. (Le tri ne manipulerait pas ces longues chaînes, j'utilise un tri
indirect, mais peu importent les détails.)
Maintenant, je me demande quelle est la bonne façon de former une chaîne
multiligne à partir de lignes lues par Line Input (et qui ne comportent donc
pas de marque de fin de ligne) : ajouter Chr(13) & Chr(10) à chaque ligne
lue ?
Je vais essayer, à moins que quelqu'un ne me crie casse-cou.
Le fait que Line Input fait abstraction de l'éventuel Chr(13) ou de l'éventuel Chr(13) & Chr(10) final est en effet important.
(Je suis en train d'adapter un programme Perl, où les lignes lues gardent leur marque de fin de ligne, uniformément ramenée à l'unique octet 10 pour le traitement des chaînes de caractères et transformées - sous Windows - en 10/13 pour la sortie dans un fichier.)
(Au fait, qu'en est-il si la fin de ligne est un Chr(10) ou un Chr(10) suivi d'un Chr(13) ? Cela existe aussi, je crois. Mais peu importe ici, je verrai.)
En fait, la macro en question découpe aussi le contenu d'un fichier extérieur en, disons, unités documentaires. Une unité documentaire est, disons, un article de journal et ces unités documentaires doivent être triées selon le numéro de page de l'article, qui est indiqué à la première ligne de l'article.
Je souhaiterais faire comme dans le programme Perl : mettre chaque unité documentaire dans une chaîne multiligne et former un tableau avec ces chaînes. (Le tri ne manipulerait pas ces longues chaînes, j'utilise un tri indirect, mais peu importent les détails.)
Maintenant, je me demande quelle est la bonne façon de former une chaîne multiligne à partir de lignes lues par Line Input (et qui ne comportent donc pas de marque de fin de ligne) : ajouter Chr(13) & Chr(10) à chaque ligne lue ?
Je vais essayer, à moins que quelqu'un ne me crie casse-cou.
Mersenne.
Geo
Signalons aussi les TextStream avec ReadLine WriteLine et même WriteBlankLines(n) pour écrire n lignes vides.
C'est nouveau en 2003 ? Il faut vraiment que je me remette à niveau.
-- A+
Signalons aussi les TextStream avec ReadLine WriteLine et même
WriteBlankLines(n) pour écrire n lignes vides.
C'est nouveau en 2003 ?
Il faut vraiment que je me remette à niveau.
Signalons aussi les TextStream avec ReadLine WriteLine et même WriteBlankLines(n) pour écrire n lignes vides.
C'est nouveau en 2003 ? Il faut vraiment que je me remette à niveau.
-- A+
Geo
Maintenant, je me demande quelle est la bonne façon de former une chaîne multiligne à partir de lignes lues par Line Input (et qui ne comportent donc pas de marque de fin de ligne) : ajouter Chr(13) & Chr(10) à chaque ligne lue ?
Bon c'est un peu plus complexe que tu l'as dit, mais aucun problème pour mettre des lignes dans un string, je te conseillerais d'employer comme séparateur vbcrlf, comme ça tu fermes les yeux et tu ne t'occupes pas de ce qu'il y a dedans :
Dim TexteArticle as string dim TexteLigne as string
Open "FICHTEST" For Input As #1 TexteArticle = "" Do While Not EOF(1) ' Effectue la boucle jusqu'à la fin du fichier. Line Input #1, TexteLigne ' Lit la ligne dans la variable. TexteArticle = TexteArticle & VbCrLf & TexteLigne Loop Close #1 ' Ferme le fichier.
-- A+
Maintenant, je me demande quelle est la bonne façon de former une chaîne multiligne à
partir de lignes lues par Line Input (et qui ne comportent donc pas de marque de fin de
ligne) : ajouter Chr(13) & Chr(10) à chaque ligne lue ?
Bon c'est un peu plus complexe que tu l'as dit, mais aucun problème
pour mettre des lignes dans un string, je te conseillerais d'employer
comme séparateur vbcrlf, comme ça tu fermes les yeux et tu ne t'occupes
pas de ce qu'il y a dedans :
Dim TexteArticle as string
dim TexteLigne as string
Open "FICHTEST" For Input As #1
TexteArticle = ""
Do While Not EOF(1) ' Effectue la boucle jusqu'à la fin du fichier.
Line Input #1, TexteLigne ' Lit la ligne dans la variable.
TexteArticle = TexteArticle & VbCrLf & TexteLigne
Loop
Close #1 ' Ferme le fichier.
Maintenant, je me demande quelle est la bonne façon de former une chaîne multiligne à partir de lignes lues par Line Input (et qui ne comportent donc pas de marque de fin de ligne) : ajouter Chr(13) & Chr(10) à chaque ligne lue ?
Bon c'est un peu plus complexe que tu l'as dit, mais aucun problème pour mettre des lignes dans un string, je te conseillerais d'employer comme séparateur vbcrlf, comme ça tu fermes les yeux et tu ne t'occupes pas de ce qu'il y a dedans :
Dim TexteArticle as string dim TexteLigne as string
Open "FICHTEST" For Input As #1 TexteArticle = "" Do While Not EOF(1) ' Effectue la boucle jusqu'à la fin du fichier. Line Input #1, TexteLigne ' Lit la ligne dans la variable. TexteArticle = TexteArticle & VbCrLf & TexteLigne Loop Close #1 ' Ferme le fichier.
-- A+
Anacoluthe
Hello Geo !
'Geo' nous a écrit ...
Signalons aussi les TextStream avec ReadLine WriteLine et même WriteBlankLines(n) pour écrire n lignes vides. C'est nouveau en 2003 ?
Non c'est du vbs !
Soit dit en passant 'adapter' du Perl langage spécialement conçu pour les textstreams en vba-simili-vbs faut oser ;-) ))))
A+ A~
Hello Geo !
'Geo' nous a écrit ...
Signalons aussi les TextStream avec ReadLine WriteLine et même
WriteBlankLines(n) pour écrire n lignes vides.
C'est nouveau en 2003 ?
Non c'est du vbs !
Soit dit en passant 'adapter' du Perl langage spécialement conçu
pour les textstreams en vba-simili-vbs faut oser ;-) ))))
Signalons aussi les TextStream avec ReadLine WriteLine et même WriteBlankLines(n) pour écrire n lignes vides. C'est nouveau en 2003 ?
Non c'est du vbs !
Soit dit en passant 'adapter' du Perl langage spécialement conçu pour les textstreams en vba-simili-vbs faut oser ;-) ))))
A+ A~
Mersenne
Maintenant, je me demande quelle est la bonne façon de former une chaîne multiligne à partir de lignes lues par Line Input (et qui ne comportent donc pas de marque de fin de ligne) : ajouter Chr(13) & Chr(10) à chaque ligne lue ?
Geo a répondu :
Bon c'est un peu plus complexe que tu l'as dit, mais aucun problème pour mettre des lignes dans un string, je te conseillerais d'employer comme séparateur vbcrlf, comme ça tu fermes les yeux et tu ne t'occupes pas de ce qu'il y a dedans :
Dim TexteArticle as string dim TexteLigne as string
Open "FICHTEST" For Input As #1 TexteArticle = "" Do While Not EOF(1) ' Effectue la boucle jusqu'à la fin du fichier. Line Input #1, TexteLigne ' Lit la ligne dans la variable. TexteArticle = TexteArticle & VbCrLf & TexteLigne Loop Close #1 ' Ferme le fichier.
Merci Geo. Sauf erreur de ma part, VbCrLf (Visual Basic CarriageReturn LineFeed), c'est la même chose que Chr(13) & Chr(10). Je vais faire ainsi. Je n'avais pas pris garde que Line Input "châtre" la ligne. Je vais vérifier si elle le fait correctement quand la ligne se termine par un 10 ou par un 10/13 et, si oui, j'aurai tous mes apaisements. Encore merci.
Mersenne.
Maintenant, je me demande quelle est la bonne façon de former une chaîne
multiligne à partir de lignes lues par Line Input (et qui ne comportent
donc pas de marque de fin de ligne) : ajouter Chr(13) & Chr(10) à chaque
ligne lue ?
Geo a répondu :
Bon c'est un peu plus complexe que tu l'as dit, mais aucun problème pour
mettre des lignes dans un string, je te conseillerais d'employer comme
séparateur vbcrlf, comme ça tu fermes les yeux et tu ne t'occupes pas de
ce qu'il y a dedans :
Dim TexteArticle as string
dim TexteLigne as string
Open "FICHTEST" For Input As #1
TexteArticle = ""
Do While Not EOF(1) ' Effectue la boucle jusqu'à la fin du fichier.
Line Input #1, TexteLigne ' Lit la ligne dans la variable.
TexteArticle = TexteArticle & VbCrLf & TexteLigne
Loop
Close #1 ' Ferme le fichier.
Merci Geo.
Sauf erreur de ma part, VbCrLf (Visual Basic CarriageReturn LineFeed), c'est
la même chose que Chr(13) & Chr(10).
Je vais faire ainsi.
Je n'avais pas pris garde que Line Input "châtre" la ligne. Je vais vérifier
si elle le fait correctement quand la ligne se termine par un 10 ou par un
10/13 et, si oui, j'aurai tous mes apaisements.
Encore merci.
Maintenant, je me demande quelle est la bonne façon de former une chaîne multiligne à partir de lignes lues par Line Input (et qui ne comportent donc pas de marque de fin de ligne) : ajouter Chr(13) & Chr(10) à chaque ligne lue ?
Geo a répondu :
Bon c'est un peu plus complexe que tu l'as dit, mais aucun problème pour mettre des lignes dans un string, je te conseillerais d'employer comme séparateur vbcrlf, comme ça tu fermes les yeux et tu ne t'occupes pas de ce qu'il y a dedans :
Dim TexteArticle as string dim TexteLigne as string
Open "FICHTEST" For Input As #1 TexteArticle = "" Do While Not EOF(1) ' Effectue la boucle jusqu'à la fin du fichier. Line Input #1, TexteLigne ' Lit la ligne dans la variable. TexteArticle = TexteArticle & VbCrLf & TexteLigne Loop Close #1 ' Ferme le fichier.
Merci Geo. Sauf erreur de ma part, VbCrLf (Visual Basic CarriageReturn LineFeed), c'est la même chose que Chr(13) & Chr(10). Je vais faire ainsi. Je n'avais pas pris garde que Line Input "châtre" la ligne. Je vais vérifier si elle le fait correctement quand la ligne se termine par un 10 ou par un 10/13 et, si oui, j'aurai tous mes apaisements. Encore merci.
Mersenne.
Mersenne
"Anacoluthe" a écrit dans le message de news:
Hello Geo !
Soit dit en passant 'adapter' du Perl langage spécialement conçu pour les textstreams en vba-simili-vbs faut oser ;-) ))))
Bien que vous vous adressiez à Geo et non à moi, je me permets de répondre à votre manifestation d'étonnement. Les utilisateurs travaillent dans Word et, comme vous pourrez le constater sur Internet, la fonction Perl "OLE" qui ouvre un fichier dans Word est boguée. Les utilisateurs souhaitent que le nouveau fichier soit ouvert par le programme lui-même, donc je vais voir s'il est possible de l'adapter en une macro VBA sans perdre trop de performances. Etant plus habitué à Perl qu'au VBA, je me permets de demander conseil avant de me lancer dans des essais coûteux. Merci encore à Geo qui m'a indiqué une solution très simple.
Mersenne.
"Anacoluthe" <nopub_anacoluthe@Ouanadoo.fr> a écrit dans le message de news:
u9WO0KsOGHA.2668@tk2msftngp13.phx.gbl...
Hello Geo !
Soit dit en passant 'adapter' du Perl langage spécialement conçu
pour les textstreams en vba-simili-vbs faut oser ;-) ))))
Bien que vous vous adressiez à Geo et non à moi, je me permets de répondre à
votre manifestation d'étonnement.
Les utilisateurs travaillent dans Word et, comme vous pourrez le constater
sur Internet, la fonction Perl "OLE" qui ouvre un fichier dans Word est
boguée.
Les utilisateurs souhaitent que le nouveau fichier soit ouvert par le
programme lui-même, donc je vais voir s'il est possible de l'adapter en une
macro VBA sans perdre trop de performances.
Etant plus habitué à Perl qu'au VBA, je me permets de demander conseil avant
de me lancer dans des essais coûteux.
Merci encore à Geo qui m'a indiqué une solution très simple.
Soit dit en passant 'adapter' du Perl langage spécialement conçu pour les textstreams en vba-simili-vbs faut oser ;-) ))))
Bien que vous vous adressiez à Geo et non à moi, je me permets de répondre à votre manifestation d'étonnement. Les utilisateurs travaillent dans Word et, comme vous pourrez le constater sur Internet, la fonction Perl "OLE" qui ouvre un fichier dans Word est boguée. Les utilisateurs souhaitent que le nouveau fichier soit ouvert par le programme lui-même, donc je vais voir s'il est possible de l'adapter en une macro VBA sans perdre trop de performances. Etant plus habitué à Perl qu'au VBA, je me permets de demander conseil avant de me lancer dans des essais coûteux. Merci encore à Geo qui m'a indiqué une solution très simple.
Mersenne.
Geo
Sauf erreur de ma part, VbCrLf (Visual Basic CarriageReturn LineFeed), c'est la même chose que Chr(13) & Chr(10).
Bof, qu'importe ? Quand ma voiture reoule je ne m'occupe pas de savoir quel moteur la fait avancer. D'ailleurs j'ai jamais vu le deuxième :-)
-- A+
Sauf erreur de ma part, VbCrLf (Visual Basic CarriageReturn LineFeed), c'est la même
chose que Chr(13) & Chr(10).
Bof, qu'importe ?
Quand ma voiture reoule je ne m'occupe pas de savoir quel moteur la
fait avancer. D'ailleurs j'ai jamais vu le deuxième :-)
Sauf erreur de ma part, VbCrLf (Visual Basic CarriageReturn LineFeed), c'est la même chose que Chr(13) & Chr(10).
Bof, qu'importe ? Quand ma voiture reoule je ne m'occupe pas de savoir quel moteur la fait avancer. D'ailleurs j'ai jamais vu le deuxième :-)
-- A+
Mersenne
Bof, qu'importe ? Quand ma voiture reoule je ne m'occupe pas de savoir quel moteur la fait avancer. D'ailleurs j'ai jamais vu le deuxième :-)
Comme le montre mon nouveau message ("Len(Selection.Text) dépend du type de
document"), on dirait qu'il y a une interférence fâcheuse entre ce qui est "sous le capot" et ce qui apparaît à l'écran, justement en matière de vbCrLf. J'ai donc l'impression que savoir ce qu'il y a sous le capot n'est pas si mauvais, du moins en cas de bug, comme ici.
Mersenne.
Bof, qu'importe ?
Quand ma voiture reoule je ne m'occupe pas de savoir quel moteur la fait
avancer. D'ailleurs j'ai jamais vu le deuxième :-)
Comme le montre mon nouveau message ("Len(Selection.Text) dépend du type de
document"), on dirait qu'il y a une interférence fâcheuse entre ce qui est
"sous le capot" et ce qui apparaît à l'écran, justement en matière de
vbCrLf. J'ai donc l'impression que savoir ce qu'il y a sous le capot n'est
pas si mauvais, du moins en cas de bug, comme ici.
Bof, qu'importe ? Quand ma voiture reoule je ne m'occupe pas de savoir quel moteur la fait avancer. D'ailleurs j'ai jamais vu le deuxième :-)
Comme le montre mon nouveau message ("Len(Selection.Text) dépend du type de
document"), on dirait qu'il y a une interférence fâcheuse entre ce qui est "sous le capot" et ce qui apparaît à l'écran, justement en matière de vbCrLf. J'ai donc l'impression que savoir ce qu'il y a sous le capot n'est pas si mauvais, du moins en cas de bug, comme ici.