Macro boucle requête SQL resultat affiché sans décimale
Fermé
Ja_bert
Messages postés1Date d'inscriptionmardi 20 janvier 2015StatutMembreDernière intervention26 janvier 2015
-
26 janv. 2015 à 07:43
Bonjour,
Contexte de mon problème :
J'ai fais un programme vba dans une macro Excel pour automatiser une procédure.
Le principe est le suivant : le programme fait des requêtes SQL sur une base MySQL, il écrit le résultat de chaque requêtes dans différentes cellules et sur plusieurs feuilles. (La requête SQL est une somme en fonction de 2 ou 3 critères)
Comme j'ai environ 1000 requêtes SQL à faire, j'ai fais une boucle qui tourne sur chaque feuilles. J'utilise donc des variables dans la requête SQL pour indiquer le nom de la table et le numéro de la feuille à utiliser : Worksheets().
Le problème : Quand j'utilise ces variables, le résultat est automatiquement arrondi à l'entier. (soit au supérieur soit à l'inférieur, selon ce qu'on a après la virgule)
Mais ce que je veux c'est avoir 2 décimales après la virgule.
Si je n'utilise pas de variable dans ma requête SQL, le résultat est bien affiché avec les décimales.
Exemple avec un extrait de mon code :
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
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
Si je modifie une requête pour écrire en dur le nom de la table et de la feuille Excel, je n'ai plus de problème, le résultat est affiché avec mes 2 décimales.
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")