IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

informer

MS-Access VBA - Ajouter du texte dans un fichier encodé UTF-8 sans BOM

Noter ce billet
par , 10/05/2016 à 12h22 (1848 Affichages)
Bonjour à tous

Problème qui intervient quand on veut écrire directement dans les fichiers HTML qui sont donc encodés UTF-8 sans BOM.

Il n'est pas question de modifier dynamiquement par VBA le DOM cf par exemple l'excellent tutoriel de Qwazerty ici mais bien de manipuler un fichier encodé UTF-8 sans BOM et dans ce cas pratique d'ajouter / modifier du texte dans un fichier.


Pour notre exemple

Côté HTML
Prendre un fichier HTML quelconque. Tous les fichier HTML sont encodés par défaut UTF-8 sans BOM.

Code HTML : 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
<!-- saved from url=(0016)http://localhost -->
<!DOCTYPE html "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" style="overflow:hidden;">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
    <title>Google Map</title>
 
    <link href = "http://code.jquery.com/ui/1.10.4/themes/ui-lightness/jquery-ui.css " rel = "stylesheet" type="text/css"/>
    <script type="text/javascript" src = "http://code.jquery.com/jquery-1.10.2.js"></script>
    <script type="text/javascript" src = "http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
 
    <script src="http://maps.googleapis.com/maps/api/js"></script>
 
 
  </head>
  <body>
    <div id="Map"></div>
  </body>
</html>

IMPORTANT pour la compréhension code VBA : La ligne après <script src="http://maps.googleapis.com/maps/api/js"></script> a pour indice 12 si on commence à 0.

Côté Access

Créer un formulaire avec un bouton et ajouter sous l'événement click . Se rappeler comme l'explique zenpbb en réponse à un post sur la même problématique que l'encodage UFT-8 ajoute des caractères (EF BB BF) en début de la 1ère ligne d''où le traitement
Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
 arrayString(0) = Right(arrayString(0), Len(arrayString(0)) - 3)


Code VBA : 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
Private Sub cmdBtn_Click()
 
    Dim fsT As Object
    Dim arrayString As Variant
    Dim stringChar As String
 
    sPath = "monChemin\monFichierHTML"
 
     'lecture du fichier et ajout dans un array un item correspondant à une ligne finie par vbCr & vbLf. => X lignes finies par vbCr & vbLf = X items dans arrayString 
     arrayString = Split(CreateObject("Scripting.FileSystemObject").OpenTextFile(sPath).ReadAll, vbCr & vbLf)
 
    'Comme l'encodage dans OpenTextFile() est UFT-8, il y a ajout des caractères (EF BB BF) en début de la 1ère ligne comme précisé par zenpbb d'où ce traitement
    arrayString(0) = Right(arrayString(0), Len(arrayString(0)) - 3) 
 
    arrayString(12) = "Mon texte éphémère à ajouter en ligne 13 soit l'indice 12. voir Important ci-dessous" 'Existe des caractères spéciaux comme é et è
 
    stringChar = Join(arrayString, vbCr & vbLf) 'join concatene an array in a string variable    
 
    Set fsT = CreateObject("ADODB.Stream")
    fsT.type = 2 'Specify stream type - we want To save text/string data.
    fsT.Charset = "utf-8" 'Specify charset For the source text data.
    fsT.Open 'Open the stream And write binary data To the object
    fsT.WriteText stringChar
    fsT.SaveToFile sPath, 2 'Save binary data
 
end sub

Et voilà

Envoyer le billet « MS-Access VBA - Ajouter du texte dans un fichier  encodé UTF-8 sans BOM » dans le blog Viadeo Envoyer le billet « MS-Access VBA - Ajouter du texte dans un fichier  encodé UTF-8 sans BOM » dans le blog Twitter Envoyer le billet « MS-Access VBA - Ajouter du texte dans un fichier  encodé UTF-8 sans BOM » dans le blog Google Envoyer le billet « MS-Access VBA - Ajouter du texte dans un fichier  encodé UTF-8 sans BOM » dans le blog Facebook Envoyer le billet « MS-Access VBA - Ajouter du texte dans un fichier  encodé UTF-8 sans BOM » dans le blog Digg Envoyer le billet « MS-Access VBA - Ajouter du texte dans un fichier  encodé UTF-8 sans BOM » dans le blog Delicious Envoyer le billet « MS-Access VBA - Ajouter du texte dans un fichier  encodé UTF-8 sans BOM » dans le blog MySpace Envoyer le billet « MS-Access VBA - Ajouter du texte dans un fichier  encodé UTF-8 sans BOM » dans le blog Yahoo

Mis à jour 10/05/2016 à 14h45 par informer

Catégories
Sans catégorie

Commentaires