Déclaration code asccii

Bonjour

Novice en VBA, je me suis lancé dans un traitement de données depuis un fichier texte. Mon objectif est d'importer des données issues d'un fichier texte et de les traiter de telle manière à garder la mise en forme initiale du fichier (de ce fait de faire les découpes sur les espaces). Si ma macro fonctionne plutôt très bien sous des fichiers en système d'exploitation Windows, elle ne fonctionne pas sous systeme d'exploitation linux. En effet certain de ces fichiers textes sont sous windows et d'autres sous linux.

Voici ma macro largement inspirée d'un tuto trouvé sur Youtube. La partie faisant référence à la lecture des données doit pouvoir identifier dans mon fichier texte la fin d'une ligne afin de découper les données sur le même format que le fichier texte. Pour cela j'ai dans une premier temps identifié une variable positon qui permet l'enregistrement des données tant que cette dernière est différente de 0. Par la suite une variable, lorsque la variable position = 0 alors tous les caractères se trouvant avant sont traités. Si cela fonctionne sous exploitation windows cela ne fonctionne pas avec les fichiers sous exploitation Linux, pour cela j'aimerais pouvoir définir la variable "cariage return" comme étant égale à la variable position. Pour cela j'aimerais pouvoir la déclarer via la déclaration d'un code ASCII sous VBA.
Problème, malgré mes nombreuses recherches je n'ai pour le moment rien trouvé de probant, j'en appelle à votre aide pour m'aider dans mon probème.

Vous trouverez en PJ un document texte devant être traité, et ci dessous mon code de lecture

11sanstitre2.zip (7.76 Ko)
Private Sub lecture(fichier As String)
Dim depart As Integer, position As Integer
Dim texte As String, tampon As String

Open fichier For Input As #1

Do While Not EOF(1)

    Line Input #1, texte
    depart = 1: position = 1
    Do While (position <> 0)

        position = InStr(depart, texte, ";", 1)
        If position = 0 Then
            tampon = Mid(texte, depart)
            Sheets("Consommation").Cells(ligne_enCours, colonne_enCours).Value = tampon
            Exit Do
        Else
            tampon = Mid(texte, depart, position - depart)
        End If

        Sheets("Consommation").Cells(ligne_enCours, colonne_enCours).Value = tampon
        depart = positon + 1
        colonne_enCours = colonne_enCours + 1

    Loop

    colonne_enCours = colonne_debut
    ligne_enCours = ligne_enCours + 1

Loop

Close #1

End Sub

Bonjour,

je ne comprend pas pourquoi tu mets le même code dans la boucle IF

Sheets("Consommation").Cells(ligne_enCours, colonne_enCours).Value = tampon

et répète cette même ligne après le End If

Bonjour,

Bonjour Isabelle,

Pour ma part, ta procédure ne peut pas fonctionner dans l'état.

ligne_enCours et colonne_enCours ne sont pas déclarées !...

Ouvert avec Récupérer et transformer (Power Query) et sans manipulation particulière, le résultat est celui-ci :

7schlamalette.xlsx (46.50 Ko)
iso4217

Quel est l'objectif de la procédure VBA ?

Cdlt.

Rechercher des sujets similaires à "declaration code asccii"