IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Problème d'accent lors de la lecture d'un fichier texte


Sujet :

VB 6 et antérieur

  1. #1
    Membre actif Avatar de petit rabot
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2010
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2010
    Messages : 236
    Points : 226
    Points
    226
    Par défaut Problème d'accent lors de la lecture d'un fichier texte
    Bonjour, lorsque je lis un fichier texte avec des accents, ceux ci se transforment en caractères bizarre (exemple: "é" devient "é"). Avez vous une solution? Merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    'fonction pour trier par ordre alphabétique le répertoire clients
    Dim objFSO, objTextFile
    Dim arrLines
    Dim bpermute, cprovisoire, i, j
    Dim Myfile As String
        Myfile = App.Path & "\" & "Répertoire.rpc"
    Dim MySortedFile As String
        MySortedFile = App.Path & "\" & "Répertoire_trié.rpc"
     
        Set objFSO = CreateObject("Scripting.FileSystemObject")
        Set objTextFile = objFSO.OpenTextFile(Myfile, 1)
            arrLines = Split(objTextFile.ReadAll, vbCrLf)
            objTextFile.Close
     
            bpermute = True
            Do While bpermute = True
               bpermute = False
               For i = UBound(arrLines) To 1 Step -1
                   If Len(arrLines(i)) > 1 Then
                      For j = 0 To i - 1
                          If Len(arrLines(j)) > 1 Then
                             If Split(arrLines(j), Chr(44))(0) > _
                                Split(arrLines(j + 1), Chr(44))(0) Then
                                cprovisoire = arrLines(j)
                                arrLines(j) = arrLines(j + 1)
                                arrLines(j + 1) = cprovisoire
                                bpermute = True
                             End If
                          End If
                      Next
                   End If
               Next
            Loop
        'Write File
        Set objTextFile = objFSO.CreateTextFile(MySortedFile, 2)
            For i = 0 To UBound(arrLines)
                objTextFile.WriteLine arrLines(i)
            Next
            objTextFile.Close
     
        Set objTextFile = Nothing
        Set objFSO = Nothing
    "Ce n'est pas parce que les choses sont impossibles qu'il faut les accepter."

  2. #2
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    et il ressemble à quoi le contenu de ton fichier
    si tu l'ouvres avec le Notepad ?

  3. #3
    Membre actif Avatar de petit rabot
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2010
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2010
    Messages : 236
    Points : 226
    Points
    226
    Par défaut
    Voici mon fichier, lorsque je l'ouvre avec bloc note ou notpad++, les accents et autres caractères problématiques sont à la bonne place ("é", "é", "°", "ç").
    Remplacer le .txt par .rpc dans la pièce jointe.
    Merci de votre aide
    Fichiers attachés Fichiers attachés
    "Ce n'est pas parce que les choses sont impossibles qu'il faut les accepter."

  4. #4
    Membre actif Avatar de petit rabot
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2010
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2010
    Messages : 236
    Points : 226
    Points
    226
    Par défaut
    Après avoir fait quelques recherches et réalisé plusieurs essais, il m'est arrivé une surprise.
    J'ai tout d'abord essayé le code suivant, qui consiste à remplacer les caractères qui me pose problème par leur véritable lettre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    'fonction pour trier par ordre alphabétique le répertoire clients
    Dim objFSO, objTextFile
    Dim arrLines
    Dim bpermute, cprovisoire, i, j
    Dim Myfile As String
        Myfile = App.Path & "\" & "Répertoire.rpc"
    Dim MySortedFile As String
        MySortedFile = App.Path & "\" & "Répertoire_trié.rpc"
     
        Set objFSO = CreateObject("Scripting.FileSystemObject")
        Set objTextFile = objFSO.OpenTextFile(Myfile, 1)
            'arrLines = Split(objTextFile.ReadAll, vbCrLf)
            'objTextFile = Replace(objTextFile.ReadAll, "é", "é")
            arrLines = Split(Replace(objTextFile.ReadAll, "é", "é"), vbCrLf)
            Set objTextFile = Nothing
            Set objTextFile = objFSO.OpenTextFile(Myfile, 1)
            arrLines = Split(Replace(objTextFile.ReadAll, "°", "°"), vbCrLf)
            Set objTextFile = Nothing
            Set objTextFile = objFSO.OpenTextFile(Myfile, 1)
            arrLines = Split(Replace(objTextFile.ReadAll, "ç", "ç"), vbCrLf)
            Set objTextFile = Nothing
            Set objTextFile = objFSO.OpenTextFile(Myfile, 1)
            arrLines = Split(Replace(objTextFile.ReadAll, "è", "è"), vbCrLf)
            objTextFile.Close
     
            bpermute = True
            Do While bpermute = True
               bpermute = False
               For i = UBound(arrLines) To 1 Step -1
                   If Len(arrLines(i)) > 1 Then
                      For j = 0 To i - 1
                          If Len(arrLines(j)) > 1 Then
                             If Split(arrLines(j), Chr(44))(0) > _
                                Split(arrLines(j + 1), Chr(44))(0) Then
                                cprovisoire = arrLines(j)
                                arrLines(j) = arrLines(j + 1)
                                arrLines(j + 1) = cprovisoire
                                bpermute = True
                             End If
                          End If
                      Next
                   End If
               Next
            Loop
        'Write File
        Set objTextFile = objFSO.CreateTextFile(MySortedFile, 2)
            For i = 0 To UBound(arrLines)
                objTextFile.WriteLine arrLines(i)
            Next
            objTextFile.Close
     
        Set objTextFile = Nothing
        Set objFSO = Nothing
    J'ai donc exécuté le code sans problème, ce n'est pas très beau mais ça fonctionne.

    J'ai ensuite exécuté celui ci, qui ne remplace rien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    'fonction pour trier par ordre alphabétique le répertoire clients
    Dim objFSO, objTextFile
    Dim arrLines
    Dim bpermute, cprovisoire, i, j
    Dim Myfile As String
        Myfile = App.Path & "\" & "Répertoire.rpc"
    Dim MySortedFile As String
        MySortedFile = App.Path & "\" & "Répertoire_trié.rpc"
     
        Set objFSO = CreateObject("Scripting.FileSystemObject")
        Set objTextFile = objFSO.OpenTextFile(Myfile, 1)
            arrLines = Split(objTextFile.ReadAll, vbCrLf)
    '        'objTextFile = Replace(objTextFile.ReadAll, "é", "é")
    '        arrLines = Split(Replace(objTextFile.ReadAll, "é", "é"), vbCrLf)
    '        Set objTextFile = Nothing
    '        Set objTextFile = objFSO.OpenTextFile(Myfile, 1)
    '        arrLines = Split(Replace(objTextFile.ReadAll, "°", "°"), vbCrLf)
    '        Set objTextFile = Nothing
    '        Set objTextFile = objFSO.OpenTextFile(Myfile, 1)
    '        arrLines = Split(Replace(objTextFile.ReadAll, "ç", "ç"), vbCrLf)
    '        Set objTextFile = Nothing
    '        Set objTextFile = objFSO.OpenTextFile(Myfile, 1)
    '        arrLines = Split(Replace(objTextFile.ReadAll, "è", "è"), vbCrLf)
            objTextFile.Close
     
            bpermute = True
            Do While bpermute = True
               bpermute = False
               For i = UBound(arrLines) To 1 Step -1
                   If Len(arrLines(i)) > 1 Then
                      For j = 0 To i - 1
                          If Len(arrLines(j)) > 1 Then
                             If Split(arrLines(j), Chr(44))(0) > _
                                Split(arrLines(j + 1), Chr(44))(0) Then
                                cprovisoire = arrLines(j)
                                arrLines(j) = arrLines(j + 1)
                                arrLines(j + 1) = cprovisoire
                                bpermute = True
                             End If
                          End If
                      Next
                   End If
               Next
            Loop
        'Write File
        Set objTextFile = objFSO.CreateTextFile(MySortedFile, 2)
            For i = 0 To UBound(arrLines)
                objTextFile.WriteLine arrLines(i)
            Next
            objTextFile.Close
     
        Set objTextFile = Nothing
        Set objFSO = Nothing
    Et là, il ne me trouve aucun caractère bizarre, tous mes caractères "é,è,ç..." sont normaux. Je suppose que lorsque j'ai exécuté le remplacement sur le premier code, mon fichier c'est enregistré avec des modifications, mais quand je l'ouvre avec bloc note, pas de différence
    Pouvez vous m'éclairer???
    "Ce n'est pas parce que les choses sont impossibles qu'il faut les accepter."

  5. #5
    Membre éclairé
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Points : 671
    Points
    671
    Par défaut
    Bonjour,

    De petit rabot

    Bonjour, lorsque je lis un fichier texte avec des accents, ceux ci se transforment en caractères bizarre (exemple: "é" devient "é"). Avez vous une solution? Merci
    Tu lis avec quoi? Comment?

    J'ai fait un essai avec ton programme et ton fichier, puis une lecture des deux fichiers avec Bloc-Notes, les accents restent les accents des deux côtés.

    Là,je ne vois pas où est le problème.

  6. #6
    Membre actif Avatar de petit rabot
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2010
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2010
    Messages : 236
    Points : 226
    Points
    226
    Par défaut
    Citation Envoyé par iclic Voir le message
    Bonjour,



    Tu lis avec quoi? Comment?

    J'ai fait un essai avec ton programme et ton fichier, puis une lecture des deux fichiers avec Bloc-Notes, les accents restent les accents des deux côtés.

    Là,je ne vois pas où est le problème.

    Si tu regarde la variable "arrLines(j)" lorsque qu'il y a un accent sur la ligne qui est lu, la variable à un caractère bizarre. Et comme j'utilise cette variable un peu plus loin dans mon code pour remplir des textbox, je les retrouve dedans.
    "Ce n'est pas parce que les choses sont impossibles qu'il faut les accepter."

  7. #7
    Membre éclairé
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Points : 671
    Points
    671
    Par défaut
    De petit rabot

    Si tu regarde la variable "arrLines(j)" lorsque qu'il y a un accent sur la ligne qui est lu, la variable à un caractère bizarre.
    1.J'ai vérifié la variable :rien de bizarre.

    2.J'ai ajoute ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim ligne$
           'lecture du fichier Répertoire_trié et résultat dans une listbox
           Open MySortedFile For Input As #1
           Do While EOF(1) = False
               Line Input #1, ligne$
               List1.AddItem ligne$
           Loop
           Close 1
    Ce qui apparaît dans la liste est tout à fait conforme,sans caractères bizarres.

    As-tu bien vérifier tout ton code?
    Qu'as-tu mis comme police dans ton texbox?
    (certaines polices n'acceptent pas toujours les accentués)

  8. #8
    Membre actif Avatar de petit rabot
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2010
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2010
    Messages : 236
    Points : 226
    Points
    226
    Par défaut
    Citation Envoyé par iclic Voir le message
    1.J'ai vérifié la variable :rien de bizarre.
    Effectivement, je viens de refaire un essai, et plus rien???
    Je ne me l'explique pas!!!
    "Ce n'est pas parce que les choses sont impossibles qu'il faut les accepter."

  9. #9
    Membre actif
    Inscrit en
    Janvier 2011
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 112
    Points : 209
    Points
    209
    Par défaut
    _ Ia ora na.
    _ Cet « accident » peut survenir quand le texte a été enregistré en UTF-8 (l'un des quatre encodages utilisables dans le bloc-notes ; surtout employé pour Internet, me semble-t-il ; l'en-tête est _ ).
    _ Si on rouvre un tel texte dans le bloc-notes, les caractères accentués sont affichés correctement ; mais si on l'ouvre dans un éditeur hexadécimal (ou le charge dans une variable chaîne), les accents sont remplacés par un goupe de deux caractères comme ceux que vous citez.
    _ Bonne fin de semaine.

  10. #10
    Membre actif Avatar de petit rabot
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2010
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2010
    Messages : 236
    Points : 226
    Points
    226
    Par défaut
    Merci à tous pour votre aide, vu que cela fonctionne, je clôture le sujet.
    "Ce n'est pas parce que les choses sont impossibles qu'il faut les accepter."

  11. #11
    Membre à l'essai
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2013
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par petit rabot Voir le message
    Après avoir fait quelques recherches et réalisé plusieurs essais, il m'est arrivé une surprise.
    .......
    J'ai donc exécuté le code sans problème, ce n'est pas très beau mais ça fonctionne.

    J'ai ensuite exécuté celui ci, qui ne remplace rien:
    ......
    Et là, il ne me trouve aucun caractère bizarre, tous mes caractères "é,è,ç..." sont normaux. Je suppose que lorsque j'ai exécuté le remplacement sur le premier code, mon fichier c'est enregistré avec des modifications, mais quand je l'ouvre avec bloc note, pas de différence
    Pouvez vous m'éclairer???
    Bonjour petit rabot,

    Je sais bien que cette conversation commence à prendre de l'âge, ton dernier message datant du 12-12-2011, mais étant tombé en novembre 2017 (eh oui...) sur le même problème je suis arrivé comme toi au même résultat surprenant. (NB : langage VB6)

    - Mon fichier texte affichait correctement les accents (é, è, à, etc.) dans Notepad++ mais un ReadLine pour placer une ligne dans une TextBox m'affichait à chaque fois 2 caractères pour 1 accent. Par exemple "Stéréotype" pour "Stéréotype". Énervant...

    - J'ai ajouté une ligne de code pour les é, qui faisait un Replace des é par des é dans la variable chargée par ReadLine. Comme chez toi, ça s'est mis à marcher correctement.

    - Mais j'ai eu aussi la surprise : en supprimant cette ligne de code et en recompilant le programme, non seulement les é continuaient à s'afficher correctement dans la TextBox mais les autres caractères accentués aussi ! (à, è, ê, etc.)

    - Alors j'ai poussé le vice un peu plus loin. L'ancien code (que je nommerai OldCode) se trouvait sur mon PC portable. Je l'ai mis au chaud bien tranquille et j'ai copié sur le portable le NewCode. J'ai donc maintenant l'ancien et le nouveau côte à côte.
    Eh bien, quelque soit l'ordre où je les lance, le OldCode ne reconnait jamais les accents et le NewCode les reconnait tous (toujours sans la fameuse ligne de correction, donc issu d'une source en tout point identique à celle du OldCode !) INCROYABLE.

    J'en conclus qu'il s'agit d'une histoire de compilation de VB6 puisque les 2 compilations ne réagissent pas de la même manière.
    Ceci dit, je ne sais plus retourner en arrière. Si je n'avais pas conservé une ancienne compil, je ne pourrais plus reproduire l'erreur.

    Je ne sais pas si ça t'a éclairé (et ça ne t'intéresse peut-être plus) mais c'est effectivement très bizarre.

  12. #12
    Membre actif Avatar de petit rabot
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2010
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2010
    Messages : 236
    Points : 226
    Points
    226
    Par défaut
    Citation Envoyé par Apolinaire Voir le message
    Bonjour petit rabot,

    Je sais bien que cette conversation commence à prendre de l'âge, ton dernier message datant du 12-12-2011, mais étant tombé en novembre 2017 (eh oui...) sur le même problème je suis arrivé comme toi au même résultat surprenant. (NB : langage VB6)
    Bonjour Apolinaire, je suis effectivement passé à autre chose, et depuis le temps, mon programme fonctionne très bien...
    Merci pour cette information.
    "Ce n'est pas parce que les choses sont impossibles qu'il faut les accepter."

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Problème de format lors de l'enregistrement d'un fichier texte
    Par Daetheia dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/12/2011, 12h10
  2. Réponses: 4
    Dernier message: 25/05/2010, 17h59
  3. Réponses: 2
    Dernier message: 28/01/2010, 16h31
  4. Problème de split lors d'une lecture d'un fichier csv
    Par Mawinette dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 25/03/2009, 11h48
  5. Problême d'accent lors de la création d'un fichier txt
    Par maxmarie dans le forum Windows Mobile
    Réponses: 15
    Dernier message: 24/08/2007, 21h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo