[VB] Ecriture d'un ficher txt en unicode

Ecriture d'un ficher txt en unicode [VB] - VB/VBA/VBS - Programmation

Marsh Posté le 04-12-2004 à 16:55:06    

Bonjour,
 
Je suis actuellement entrain d'écrire une petite macro (Excel) qui me parse mon tableau et écrit les données dans un ficher texte. Jusque là, tout va bien...
 
Seul petit hic, c'est que le texte à récupéré est écrit dans 10 langues différentes, donc le russe, le polonais, etc... et par défaut, lorsque je crée mon fichier txt et que j'écris dedans, le codage est en ANSI... or il me le faut impérativement en unicode... Y-a-t-il un paramètre dans la fonction Print que je n'ai pas encore trouvée? ou dans la fonction Open peut-être??
 
Je suis super preneur de toute piste...!
 
Merci d'avance!
 
 
Exemples de mon code source :
 
' Attempt to open destination file for output
Open DestFile For Output As #FileNum
 
Print #FileNum, "&KeyWord_1=" & KeyWord1

Reply

Marsh Posté le 04-12-2004 à 16:55:06   

Reply

Marsh Posté le 04-12-2004 à 17:42:20    

Personne pour m'aider...? :-(

Reply

Marsh Posté le 04-12-2004 à 22:06:09    

Code :
  1. Dim chaine As String
  2. chaine = "&KeyWord_1=" & KeyWord1
  3. Open DestFile For Output As #FileNum
  4. Print #FileNum, StrConv(chaine, vbUnicode)


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 05-12-2004 à 12:24:36    

Bonjour Harkonnen,
 
Malheureusement, cela ne semble pas suffir : mon ficher txt cible est toujours au format ANSI lorsque je l'ouvre avec un éditeur de texte...
:-(

Reply

Marsh Posté le 05-12-2004 à 12:33:26    

Permettez moi de reformuler :
J'ai du texte russe en cellule A1 de ma feuille Excel
информационные источники  
 
(je n'ai AUCUNE idée de ce que ça veut dire, j'ai pris ce texte au hasard!)
 
Et je cherche à créer un fichier unicode test.txt avec ce String. (quand j'ouvre mon fichier avec le notepad, j'ai le texte russe, et non ????? ??????? ???)
 
Merci!
 
 
 

Reply

Marsh Posté le 05-12-2004 à 12:44:00    

as tu au moins la police correspondante installée sur ton système ?
 
edit: laisse tomber cette question, ça n'a rien à voir.
je fais un test avec excel pour voir


Message édité par Harkonnen le 05-12-2004 à 12:46:12

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 05-12-2004 à 12:51:08    

Oui, sans aucun doute.
Au risque de dire une bêtise, je n'ai pas le sentiment qu'il s'agisse d'une question de police : c'est avant tout une question de codage en ANSI ou Unicode. En cherchant avec désespoir une solution hier soir, j'ai cru lire que les API I/O de VB ne sont pas compatibles unicode... Mais ça me semble tellement gros qu'il doit bien y avoir une solution!! ça me parait énorme qu'il soit impossible d'écrire des fichiers en russe, chinois, polonais, etc. sous VB... (et le problème est valable dans les deux sens : l'import de texte russe depuis une cellule dans VB ne se fait pas en unicode!!)

Reply

Marsh Posté le 05-12-2004 à 12:54:18    

Code :
  1. Sub Test()
  2.     Dim chaine As String
  3.     Open "C:\\test.txt" For Output As #1
  4.     chaine = Cells(1, 1).Value
  5.     Print #1, StrConv(chaine, vbUnicode)
  6.     Close #1
  7. End Sub


donne ceci :

Citation :

8=D>@<0F8>==K5  8AB>G=8:8


:/


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 05-12-2004 à 13:04:27    

http://groups.google.fr/groups?hl= [...] c10&rnum=1
 
effectivement, c'est mal barré ! y'aurait bien une solution "bourrin" à mon avis, qui consisterait à copier la chaine dans un tableau, puis d'ouvrir un fichier binaire pour y copier la chaine octet par octet. bourrin mais je vois pas comment faire autrement :/


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 05-12-2004 à 15:35:18    

Citation :

Permettez moi de reformuler :  
J'ai du texte russe en cellule A1 de ma feuille Excel  
информационные источники  
 
(je n'ai AUCUNE idée de ce que ça veut dire, j'ai pris ce texte au hasard!)  
 
Et je cherche à créer un fichier unicode test.txt avec ce String. (quand j'ouvre mon fichier avec le notepad, j'ai le texte russe, et non ????? ??????? ???)  
 
Merci!  


 
c'est tres curieux parce que j'obtient bien ca dans le fichier test.txt :
 
?????????????? ?????????  
 
avec le code :
 

Citation :

Sub Test()  
    Dim chaine As String  
    Open "C:\\test.txt" For Output As #1  
    chaine = Cells(1, 1).Value  
    Print #1, chaine  
    Close #1  
End Sub


Message édité par Profil supprimé le 05-12-2004 à 15:36:22
Reply

Marsh Posté le 05-12-2004 à 15:35:18   

Reply

Marsh Posté le 05-12-2004 à 15:37:44    

Aïe aïe aïe...
Je n'ai encore jamais fait ça... Il faut récupérer les données dans la cellule avec  
 
Dim donnees() As Data
donnees = ActiveSheet.Range("A1" ).Value
 
??
 
Puis-je ensuite convertir la variable donnees en String dans VB pour le travailler avant de la reconvertir en binaire pour l'écrire dans mon fichier texte?

Reply

Marsh Posté le 05-12-2004 à 15:39:18    

Bonjour Gargamail,
 
C'est justement le ???? ???? que je cherche à éviter!!
je souhaiterai récupérer le texte russe dans mon fichier texte.

Reply

Marsh Posté le 09-12-2004 à 01:00:30    

salut ice falcon,
g un module vb6 ki permet de transformer nimporte quel texte en texte UTF8 et unicode, prennant en charge plusieures langues connues... si tu le veux contacte moi et je te lenvoi par mail...
 
Le modules contient:
- des déclaration de cst
- WtoA (Unicode to ANSI)
- AtoW (ANSI to Unicode)
- EncodeUTF8
- DecodeUTF8
 
il te sufira donc ensuite de faire:
 
Sub Test(ValeurAEncoder as string)  
    Dim chaine As String  
    chaine=encodeUTF8(ValeurAEncoder)
    Open "C:\test.txt" For Output As #1  
    Print #1, chaine
    Close #1  
End Sub  
 
Dsl je c pas si sa marche pour Exel, moi je programme en VB6...
Bye...
 


Message édité par mick1884 le 09-12-2004 à 01:08:18

---------------
Le programme et toujours piratable, quelqu'en soit l'auteur, un autre homme le contournera...
Reply

Marsh Posté le 09-12-2004 à 01:32:27    

re
Pourkoi tu crée pa un object richtextbox, ensuite tu copy la valeur de ta celule dedans, et tu fais un SaveFile format rtf
 
ensuite au chargement ben tu fais un loadfile format rtf ds la richtextbox puis tu copy la valeur ds tes cellule


---------------
Le programme et toujours piratable, quelqu'en soit l'auteur, un autre homme le contournera...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed