Bonjour à tous,

J'ai une base de données sous Firebird que je consulte avec Excel 2010 via ODBC.

Lorsque je renvoi les données de mes table dans une feuille, aucun problème.

Par contre quand je veux les exporter dans un fichier .CVS, j'ai un problème avec les valeurs négative que je n'arrive pas à solutionner.
Exemple: -600 devient -1.8446744073709E15 etc...

Le type de champ utilisé pour QTEDISPO de la table STOCK est NUMERIC(15,5)
la propriété "CHARACTER SET" est WIN1252
Ca, je ne peut pas le modifier!

Je cherche depuis deux jours et je ne trouve pas d'explication à mon problème alors je joint le code utilisé, que j'ai trouvé en fouinant par ci par là sur les forums et un peu modifié pour mes besoins.

Merci de votre aide car là je sèche.......

Thierry.

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
 
Public Sub SaveRecordsetToCSVyyyy()
  Dim CSVData As String
 
sSQL = "SELECT stoNOARTICLE, stoNODEPOT, stoQTEDISPO FROM STOCK"
 Set Rst_Temp = Nothing
 Rst_Temp.Open sSQL, Connection_Bdd01, adOpenKeyset, adLockOptimistic
 
 If Dir("B:\Temp\Stock.csv") <> "" Then Kill "B:\Temp\Stock.csv"
     Open "B:\Temp\Stock.csv" For Binary Access Write As #1
 If Rst_Temp.RecordCount <> 0 Then
 
    Do While Not Rst_Temp.EOF
            CSVData = CSVData & """" & Rst_Temp.Fields(0).Value & """" & ";"
            CSVData = CSVData & """" & Rst_Temp.Fields(1).Value & """" & ";"
            CSVData = CSVData & """" & Format(Rst_Temp.Fields(2).Value, "# ##0.00000") & """" & ";" & vbNewLine
      Rst_Temp.MoveNext
    Loop
  Else
     MsgBox "No data"
 End If
 
      Put #1, , CSVData
     Close #1 '
    Rst_Temp.Close
    Set Rst_Temp = Nothing
End Sub