Caster une variable recordset en double

Calimero33

XLDnaute Nouveau
Bonjour, j'ai réalisé une requête SQL avec ADO et recordset elle fonctionne très bien néanmoins les données numériques que j'importe sont devenu une chaine de caractère. J'aurai besoin de faire des calculs dessus je voudrais donc convertir ma variable Rst en Double avec la fonction CDbl. Rien à faire j'ai le message d'erreur Type Incompatible, j'ai essayé avec la fonction CInt c'est pareil. Une idée ?

Set Rst = New ADODB.Recordset
Set Rst = Cn.Execute(texte_SQL)

'Ecrire le résultat de la requête dans la cellule

Dim Resultat As Double
Resultat = CDbl(Rst)

Resultat = (Resultat / 1000) * (-1)

Merci !!!
 

Calimero33

XLDnaute Nouveau
Re : Caster une variable recordset en double

Je t'ai mis trois fichiers : la source, la destination et la macro
Dans la macro il faut mettre à jour le chemin du fichier source.
J'ai fait une petite macro qui expose mon problème, merci beaucoup de m'aider.

Bonne chance !

Sub MACRO()

Dim Cn As ADODB.Connection
Dim fichier As String
Dim NomFeuille As String, texte_SQL As String
Dim Centre As String
Dim Rst As ADODB.Recordset

'Définit le classeur fermé servant de base de données
fichier = "CHEMIN A COMPLETER POUR VOUS \FICHIERSOURCE.xls"

'Nom de la feuille dans le classeur fermé
NomFeuille = "Feuil1"
Set Cn = New ADODB.Connection

'--- Connection ---

With Cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & fichier & _
";Extended Properties=Excel 8.0;"
.Open
End With

'-----------------

'Définit la requête.

Centre = Range("A2").Value
texte_SQL = "SELECT sum(montant)FROM [Feuil1$] WHERE centre='A5'"

Set Rst = New ADODB.Recordset
Set Rst = Cn.Execute(texte_SQL)

Dim Resultat As Variant
Resultat = Trim(Replace(Rst, ",", "."))
Resultat = CDbl(Resultat)


'Resultat = (Resultat / 1000) * (-1)

Range("B2").CopyFromRecordset Rst

End Sub
 

Pièces jointes

  • FICHIERDESTINATION.xls
    24 KB · Affichages: 64
  • FICHIERSOURCE.xls
    13.5 KB · Affichages: 55
  • FICHIERSOURCE.xls
    13.5 KB · Affichages: 55
  • FICHIERSOURCE.xls
    13.5 KB · Affichages: 59
G

Guest

Guest
Re : Caster une variable recordset en double

Re,
Code:
Set Rst = New ADODB.Recordset
Set Rst = Cn.Execute(texte_SQL)
If Not IsNull(Rst(0)) Then
    Range("B2") = Rst.Fields(0).Value
End If
Set Rst = Nothing
Cn.Close
Set Cn = Nothing

voici qui fonctionne chez moi.
Ne pas oublier de mettre les cellules au format Nombre.
J'ai modifié quelques valeur du fichier source pour avoir des virgules.

Ne pas oublié non plus qu'avec MSADO il vaut mieux nettoyer correctement les variables objets et fermer la connexion après usage.(risque d'erreur d'entrée/sortie et/ou ralentissement)

Où l'on voit l'intérêt de se fendre de fichier exemples.

A+
 
Dernière modification par un modérateur:

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 779
Messages
2 092 047
Membres
105 168
dernier inscrit
makari69