Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Caster une variable recordset en double

  • Initiateur de la discussion Initiateur de la discussion Calimero33
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

C

Calimero33

Guest
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 !!!
 
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

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:
Re : Caster une variable recordset en double

Ca fonctionne à merveille,
Merci beaucoup pour ton aide, vous avez vraiment un super forum à l'écoute des gens !
A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

J
Réponses
1
Affichages
1 K
Réponses
15
Affichages
4 K
H
Réponses
35
Affichages
4 K
H
T
Réponses
14
Affichages
3 K
tibofo
T
C
Réponses
1
Affichages
1 K
creal69360
C
C
Réponses
15
Affichages
6 K
C
Réponses
3
Affichages
945
Compte Supprimé 979
C
C
Réponses
1
Affichages
930
Guest
G
C
Réponses
0
Affichages
2 K
creal69360
C
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…