Arrondi automatique requête sql dans une boucle
Bonjour,
J'ai un problème en vba, avec une macro excel. Le principe de la macro est le suivant : le programme doit me retourner des valeurs récupérées dans une base de données et les stockés dans certaines cellules sur plusieurs feuilles.
Le problème : Lorsque je met une variable dans ma requête sql ou bien dans la fonction Worksheets(), le résultat est automatiquement arrondi. (soit au supérieur si plus x,5 soit au chiffre inférieur si moins de x,5)
Exemple avec un extrait de mon code :
Code:
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
|
sub requetesql()
'Les variables de connexion odbc
Dim cnx As ADODB.Connection
Dim rst As ADODB.Recordset
Set cnx = New ADODB.Connection
Set rst = New ADODB.Recordset
Dim NomDuDSN As String
Dim NomUtilisateur As String
Dim MotDePasse As String
'variables des requêtes
Dim noWs As Integer
Dim nomFeuille As String
Dim celluleD As String
Dim var2 As Integer
'identifiant
NomDuDSN = "MySQL"
NomUtilisateur = "toto"
MotDePasse = "toto"
'chaine de connexion
cnx.ConnectionString = "DSN=" & NomDuDSN & ";UID=" & NomUtilisateur & ";PWD=" & MotDePasse & ";"
'ouverture de la bdd
cnx.Open
For noWs = 1 To 32
nomFeuille = Worksheets(noWs).Name
'Définir les variables de requête
table = nomFeuille 'NOTE : le nom de la table sql corresponds au nom de la feuille
var2 = 0
var3 = "'D342J'"
celluleD = "F45"
'Exécution de la requête SQL
rst.Open "SELECT SUM(colonne1) AS montant1 FROM " & table & " WHERE colonne2 = " & var2 & " AND colonne3 = " & var3 & "", cnx
'on insère la requête SQL dans la bonne case
Worksheets(noWs).Range("" & celluleD & "").Offset(1, 0) = rst("montant1")
rst.Close
Next
'pour revenir sur la première feuille...
Worksheets(1).Activate
End Sub |
Sur cet extrait le résultat affiché dans la cellule est du genre 124,00
Alors que si je modifie les deux lignes suivantes comme ceci, en imaginant que "tfg" est le nom réel de ma table et de ma feuille de calcul.
Code:
1 2
| rst.Open "SELECT SUM(colonne1) AS montant1 FROM tfg WHERE colonne2 = " & var2 & " AND colonne3 = " & var3 & "", cnx
Worksheets(tfg).Range("" & celluleD & "").Offset(1, 0) = rst("montant1") |
Le résultat sera bon c'est à dire du genre 123,75
Le problème c'est que j'ai 32 feuilles à parcourir... je me vois mal créer 32 requêtes sql juste pour avoir les arrondis.
J'ai essayé avec
Code:
ROUND(SUM(colonne1))
sans succès, le comportement n'est pas modifié.
Avez-vous une idée, s'il vous plait ? :mrgreen: