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
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 SubBonjour,
je ne comprend pas pourquoi tu mets le même code dans la boucle IF
Sheets("Consommation").Cells(ligne_enCours, colonne_enCours).Value = tamponet 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 :
Quel est l'objectif de la procédure VBA ?
Cdlt.