Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Cellule multiligne dans fichier texte.

DenisHen

XLDnaute Nouveau
Bonjour à la communauté.
Voilà, je fais (pour des échanges entre différents Excel sur différents postes) des "sauvegardes" de certaines cellules dans des fichiers "Texte" (apparemment des fichiers ANSI).
Mais des cellules ont des "retours chariot", des multilignes en fait.
Lors de l'écriture du fichier ANSI, ces cellules sont écrites sur plusieurs lignes (autant que dans Excel), donc, lorsque que je les lis depuis un autre excel, j'ai trop de lignes...
Je vais essayé d'âtre plus clair, une cellule de 4 lignes me donne 4 lignes dans le fichier texte, alors que je préfèrerais avoir qu'une ligne, tout en gardant les retours chariots dans les autres Excel.
Je créé mon fichier texte comme suit :
VB:
  Dim intFic As Integer
  intFic = FreeFile
  Open AncFich For Output As intFic
Et j'écris dedans avec :
VB:
Print #intFic, Cellule
Je pense que ça se joue dans la commande Open, mais je n'arrive pas à trouver.
Quelqu'un aurait une solution ?
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour DenisHen,
Ca, je ne sais pas comment faire.
Mais en attendant d'autres réponses positives, je sais tricher.
Avec deux macros, une pour écrire et une pour lire.
L'astuce : on change les chr(10) retour chariots par le caractère "£" à l'écriture et l'inverse en lecture.
Ecriture :
VB:
Sub EcrireFichierTexte()
    Dim fichier As String, texte As String, numFichier%, N%
    [H:H].ClearContents
    ' Définir le chemin du fichier texte - A modifier
    fichier = "C:\Users\PC_PAPA\Desktop\Essai.txt"
    ' Obtenir un numéro de fichier libre
    numFichier = FreeFile
    ' Ouvrir le fichier pour écrire
    Open fichier For Output As #numFichier
    ' Pour toutes les lignes
    For N = 1 To Application.CountIf([A:A], "*")
    ' Créer le texte à écrire avec des sauts de ligne
    texte = Replace(Cells(N, "A"), Chr(10), "£")
    ' Écrire le texte dans le fichier
    Print #numFichier, texte
    Next N
    ' Fermer le fichier
    Close #numFichier
End Sub
Lecture :
Code:
Sub LireFichierTexte()
    Dim fichier$, numFichier%, ligne$, contenu$, Nligne%
    [H:H].ClearContents
    ' Définir le chemin du fichier texte - A modifier
    fichier = "C:\Users\PC_PAPA\Desktop\Essai.txt"
    ' Obtenir un numéro de fichier libre
    numFichier = FreeFile
    Nligne = 1
    ' Ouvrir le fichier pour lecture
    Open fichier For Input As #numFichier
    ' Lire le fichier ligne par ligne
    Do While Not EOF(numFichier)
        Line Input #numFichier, ligne
        Cells(Nligne, "H") = Replace(ligne, "£", Chr(10))
        Nligne = Nligne + 1
    Loop
    ' Fermer le fichier
    Close #numFichier
End Sub
 

Pièces jointes

  • DenisHen.xlsm
    15.6 KB · Affichages: 0

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…