Bonjour,
Comment gère t on à la création du .txt l'encodage de celui-ci ?
(Utf8, Dos, ASCII ...)
Merci.
Bonjour,
Comment gère t on à la création du .txt l'encodage de celui-ci ?
(Utf8, Dos, ASCII ...)
Merci.
aucune idée
Cela n'est-il pas juste en rapport avec son contenu ?
Je veux dire par là, si tu mets chr(10) & chr(13) à la fin de chaque ligne alors c'est du dos, si seulement chr(10) alors linux ...
Non ?
Je ne sais pas !
Concernant mon cas, j'utilise la fonction :
je n'utilise pas les retours chariots chr().
Code : Sélectionner tout - Visualiser dans une fenêtre à part print #1, xxx
Comment écrire mon texte dans l'apllication Wordpad et l'enregistrer avec le type "Document texte MS-DOS"
Merci.
Quel est ton problème exact ? Dois tu absolument passer par Wordpad ou dois tu simplement enregistrer un fichier texte depuis ton application ?
Le problème est il dû à des accents non enregistrés par exemple ?
Effectivement, depuis mon appli je génère un fichier d'import pour alimenter mon appli pro de gestion (en l'occurence SAGE Gestion Commerciale L100 comme tu as du le comprendre OhMonBato).
Effectivement "bis", le libellé de certains articles contient des caractères è,é,à... qui ne s'intègre pas lors de l'import ds l'appli SAGE.
Je dois pour cela générer un fichier texte MS Dos d'où mes précédentes questions.
Note :
pourquoi un contournement de mon pb par un fichier WordPad ? car en copiant le contenu du fichier texte généré automatiquement ds un fichier WordPad puis en enregistrant celui ci au format Document Texte MS-DOS, pas de pb de caractère lors de l'intégration. Seul hic, c'est le côté barbare de l'opération pour mes users débutants.
Tu génères ton fichier texte par ton application VB ?
Si oui, tu peux écrire sans accent non ?
Ou alors si j'ai mal compris mais que le pb n'est bien dû qu'aux accents, tu pourrais "relire" le fichier texte avec ton appli VB et remplacer les caractères accentués par des caractères reconnus par ton application.
Si il s'agit de transferer des chaines au format dos, essaye d'utiliser cette fonction de convertion
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 'dans la partie déclaration de la feuill Private Declare Function CharToOemBuff Lib "user32" Alias "CharToOemBuffA" (ByVal lpszSrc As String, ByVal lpszDst As String, ByVal cchDstLength As Long) As Long
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 'Fonction de convertion au format Dos Private Function Conv2Dos(Text As String) As String Dim Buffer As String Buffer = String(Len(Text), 0) CharToOemBuff Text, Buffer Conv2Dos = Buffer End Function
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 'Utilisation Print #hFich,Conv2Dos(MaChaine)
je savais bien qu'il y avais ... une API ..![]()
il manque un argument (le nombre de caractère) lors de l'appel de la fonction ...![]()
Même pas, il suffit que la chaine réceptrice soit de la même longueur que la chaîne source![]()
La fonction de conversion de DELBEKE engendre, pour mon cas, une erreur Windows qui plante ma base.
= fct° intéressante néanmoins. Merci.![]()
Je cherche tjs à générer à partir de mon appli un fichier WordPad et l'enregistrer au format souhaité.
de quel ordre ce "plantage"... ?Envoyé par MITCH31
![]()
... et il arrive quand ce message ...?Envoyé par MITCH31
... en lançant l'application dans l'éditeur VB..?
Afficage Pas à pas : l'erreur apparait dans la fonction :
Private Function Conv2Dos(Text As String) As String
Dim Buffer As String
Buffer = String(Len(Text), 0)
CharToOemBuff Text, Buffer ' déclenchement de l'erreur
Conv2Dos = Buffer
End Function
sur qu'elle ligne dans la fonction ... ?
comment l'appelle tu cette fonction ..?
c'est vraiment le message d'erreur :
Erreur Lecteur Adresse Mémoire x...
Message d'erreur :![]()
mon bout de code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3L'instruction à "0x77d3f909" emploie l'adresse mémoire "0x04763000". La mémoire ne peut être "written". Cliquez sur OK pour ...
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 '******************************************************* 'obtient le premier fichier ou répertoire qui est dans "c:\" Rep = Dir(MonRepertoire & "\*.*", vbDirectory) n = 0 'boucle tant que le répertoire n'a pas été entièrement parcouru Do While (Rep <> "") 'teste si c'est un fichier ou un répertoire If (GetAttr(MonRepertoire & Rep) And vbDirectory) <> vbDirectory Then If Right(Rep, 4) = ".txt" Then 'Ouvre le fichier en cours = la commande 'puis intégration dans le fichier d'import : Dim txt As String Open MonRepertoire & Rep For Input As 2# 'MsgBox (Rep) While Not (EOF(2) Or False) Line Input #2, txt 'Print #1, txt Print #1, Conv2Dos(txt) Close #2 Wend FileCopy MonRepertoire & Rep, MonRepertoire3 & Rep Kill MonRepertoire & Rep End If End If 'passe à l'élément suivant Rep = Dir Loop '*******************************************************
et si tu rajoute la longueur de la chaîne lors de l'appel à CharToOemBuff
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 'Fonction de convertion au format Dos Function Conv2Dos(Text As String) As String Dim Buffer As String Dim iL As Integer iL = Len(Text) Buffer = String(iL, 0) CharToOemBuff Text, Buffer, iL Conv2Dos = Buffer End Function
Désolé, j'avais fais çà de memeoire, mais tu as parfaitement raison, bbil, il faut passer aussi la longueur
merci.
le pb est résolu :
1 - en rajoutant la longueur de chaîne ds les paramètres de la fonctions.
2 - en enregistrant mon fichier extension = *.rtf
mon fichier s'importe à la perfection dans mon appli SAGE.
merci bq de votre aide.![]()
Partager