Voici une petite procédure pour exporter des données dans un fichier .csv qu'Excel saura interpréter correctement.
Pour rappel, un fichier .csv est un fichier texte dont les valeurs sont séparées par des points virgules (ou des virgules) :
http://fr.wikipedia.org/wiki/Comma-separated_values
Le problème principal rencontré lors de l'ouverture d'un fichier .csv dans Excel est que lorsque des valeurs composées uniquement de chiffres commencent par un ou plusieurs zéros, ces zéros "non significatifs" sont supprimés à l'affichage dans Excel.
Dans mon cas, je souhaite conserver ces zéros.
Les séparateurs (; ou ,) et guillemets présents dans une valeur de type texte doivent aussi être "échappés" en entourant la valeur de guillemets.
Code de la procédure "ModifChaine" :
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 LOCAL iIDFi est un entier = 0 sVal1 est une chaîne = "" sVal2 est une chaîne = "" sVal3 est une chaîne = "" sVal4 est une chaîne = "" sVal5 est une chaîne = "" sVal6 est une chaîne = "" sVal7 est une chaîne = "" sVal8 est une chaîne = "" sLigne1 est une chaîne = "" sLigne2 est une chaîne = "" sFiCsvChemin est une chaîne = "" sFiCsvChemin = "c:\test.csv" iIDFi = fOuvre(sFiCsvChemin,foCréationSiInexistant+foAjout) sVal1 = "Ceci est un texte" sVal2 = "Ceci est un texte; contenant un point virgule" sVal3 = "Ceci est un ""texte"" contenant des guillemets" sVal4 = "Ceci est un ""texte""; contenant des guillemets et un point virgule" sVal5 = "00001" sVal6 = "00002" sVal7 = "04.90.90.90.90" sVal8 = "2011" ModifChaine(sVal1) ModifChaine(sVal2) ModifChaine(sVal3) ModifChaine(sVal4) ModifChaine(sVal5) ModifChaine(sVal6) ModifChaine(sVal7) ModifChaine(sVal8) sLigne1 = sVal1+";"+sVal2+";"+sVal3+";"+sVal4+";"+sVal5+";"+sVal6+";"+sVal7+";"+sVal8 fEcritLigne(iIDFi,sLigne1) sLigne2 = sVal1+";"+sVal2+";"+sVal3+";"+sVal4+";"+sVal5+";"+sVal6+";"+sVal7+";"+sVal8 fEcritLigne(iIDFi,sLigne2) fFerme(iIDFi) LanceAppliAssociée(sFiCsvChemin)
Voici le résultat en ouvrant le fichier avec le bloc note Windows :
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 PROCEDURE ModifChaine(_sChaine est une chaîne) //Déterminer si la valeur contient uniquement des chiffres bUniquementChiffre est un booléen = Vrai POUR i = 1 _A_ Taille(_sChaine) SI PAS (Asc(_sChaine[[i]]) >= 48 ET Asc(_sChaine[[i]]) <= 57) ALORS bUniquementChiffre = Faux SORTIR FIN FIN SI bUniquementChiffre ALORS //Conserver les zéros non significatifs SI Gauche(_sChaine,1) = "0" ALORS _sChaine = """=""""0"+Droite(_sChaine,Taille(_sChaine)-1)+"""""""" FIN SINON _sChaine = Remplace(_sChaine,"""","""""") _sChaine = """"+_sChaine+"""" FIN
"Ceci est un texte";"Ceci est un texte; contenant un point virgule";"Ceci est un ""texte"" contenant des guillemets";"Ceci est un ""texte""; contenant des guillemets et un point virgule";"=""00001""";"=""00002""";"04.90.90.90.90";2008
Bonne prog
Partager