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

[VBA] Insertion code par fichier texte et caractères accentués

ThierryP

XLDnaute Occasionnel
Bonjour,

J'insère du code dans des fichiers Excel créés par un ERP, pas de problème !
Le code se trouve dans un fichier .txt, créé par le bloc-notes.

Le petit souci, c'est qu'à l'insertion du code dans les différents modules, les caractères accentués sont remplacés : le é devient é etc...
Comment dire à VBA de changer de type d'encodage au moment de l'insertion des lignes de ce fichier texte ?

Merci d'avance,
 

ThierryP

XLDnaute Occasionnel
Bonsoir Sylvanu,

Merci du retour ! Malheureusement la fameuse case citée dans le fil est déjà décochée . Et je ne voudrais modifier des paramètres Windows qui pourraient impacter d'autres logiciels ! Je continue mes recherches...
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
J'ai trouvé ça :
VB:
En utilisant un objet ADODB.stream, ajouter pour cela la référence à "Microsoft ActiveX Data Object " version 2.5 ou supérieure.

' Ajouter la référence Microsoft ActiveX Data Objects 2.5 ou +
Dim stream As New ADODB.stream
stream.Charset = "UTF-8"
stream.Open
stream.LoadFromFile "c:\tmp\testUTF8.txt"
MsgBox stream.ReadText
stream.Close
 

ThierryP

XLDnaute Occasionnel
Mon fichier texte en P.J. ! et ma procédure d'ajout de code :
VB:
Sub Ajout_Code_Depuis_Fichier_INV()
NbLigne = 0
IndexFichier = FreeFile()
Open "I:\Informatique\0 - Sauvegardes Programmes Office\Excel\Code_Feuille_INV.txt" For Input As #IndexFichier
While Not EOF(IndexFichier) '
    Line Input #IndexFichier, Ligne_Active
    NbLigne = NbLigne + 1
    ActiveWorkbook.VBProject.VBComponents("Feuil1").CodeModule.InsertLines NbLigne, Ligne_Active
Wend
End Sub

Je suis tombé également sur ce fil, me reste à comprendre comment ça fonctionne , et à mixer mon code avec ta proposition !
Merci pour ton suivi,
 

Pièces jointes

  • Code_Feuille_INV.txt
    1.6 KB · Affichages: 6

sylvanu

XLDnaute Barbatruc
Supporter XLD
J'ai modifié votre txt en rajoutant : ' é è ç à â ê ï ô ù î
J'ai fait ce petit prog :
VB:
Sub EssaidecodTxt()
Dim stream As New ADODB.stream
stream.Charset = "UTF-8"
stream.Open
stream.LoadFromFile "C:\Users\PC_PAPA\Desktop\Code_Feuille_INV.txt"
MsgBox stream.ReadText
stream.Close
End Sub
Il me répond :

Il a l'air de bien décoder les lettres accentuées.
 

ThierryP

XLDnaute Occasionnel
Bonjour,

Oui, j'ai fait le test, ça fonctionne. Maintenant, il ne me reste plus qu'à trouver comment injecter ces lignes dans le module de la feuille !
En tous cas, merci de vous être penché sur mon souci !
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Thierry,
VB:
Sub EssaidecodTxt()
Dim stream As New ADODB.stream   ' Faire le Dim camme d'hab.

' A mettre là vous vous voulez récupérer le texte'
stream.Charset = "UTF-8"
stream.Open
stream.LoadFromFile "C:\Users\PC_PAPA\Desktop\Code_Feuille_INV.txt"


stream.ReadText contient le texte avec caractères accentués

'A mettre après le traitement du texte.
stream.Close
End Sub
 

Discussions similaires

Réponses
2
Affichages
113
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…