Passage de décimal de excel vers un code SQL par VBA

Tradman

XLDnaute Nouveau
Bonjour à tous,

J'ai un bon petit problème qui me cause un certain trouble pour le passage de données d'une cellule Excel vars une requête SQL. Évidement le tout géré par une macro VBA.

Voici en plus simple :
Je dois prendre des bornes horaires (inf et sup) et les intégré à une requête SQL pour faire mon filtre. Le problème est que selon selon le PC utilisé des fois les variables sont de la forme 0.4218 et d'autre 0,4218. Je veux que se soit TOUJOURS 0.4218.

Voici la partie de code en problème

dim dblInférieur, dblSupérieur as double
dim plagehor as worksheet

plagehor = sheets("Parametre")

dblInférieur = plagehor..Range("B10").Value
dblSupérieur = plagehor.Range("B11").Value

...

Dans le débogage j'observe que si mes parametres ont des points pour les décimals les valeur de dblInférieur et dblSupérieur sont de type 0.4612 si par contre dans les paramètres ont des virgules pour les décimales les valeurs de dblInférieur et dblSupérieur sont de type 0,4612

Voici mes tentatives

J'ai tenter de forcer le double. (CDbl(plagehor.Range("B11").Value) - Car de mémoire VBA utilise toujours des points comme marqueur de décimal)

J'ai aussi tenter de remplacer les virgules par des points avant de le reconvertir en double (CDbl(replace(plagehor.Range("B11").Value, "," , ".")))

Merci de me sauver !!!!!
 
G

Guest

Guest
Re : Passage de décimal de excel vers un code SQL par VBA

Bonsoir,

Comme une requête SQL est toujours une chaine de caractère, convertir la valeur en chaine avec cstr() avant de remplacer la virgule éventuelle.

VB:
Dim DecSep As String
Dim strInférieur As String, strSupérieur As String
Dim plagehor As Worksheet
'Séparateur décimal de l'application
DecSep = Application.DecimalSeparator
 
Set plagehor = Sheets("Parametre")
 
strInférieur = CStr(plagehor.Range("B10").Value)
strSupérieur = CStr(plagehor.Range("B11").Value)
If DecSep <> "." Then
    strInférieur = Replace(strInférieur, DecSep, ".")
    strSupérieur = Replace(strSupérieur, DecSep, ".")
End If

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

Tradman

XLDnaute Nouveau
Re : Passage de décimal de excel vers un code SQL par VBA

Je m'excuse de ne pas t'avoir répondu avant !!!!

j'ai fianlement juste replacer le type de mes varaibles en string et remplacer les , par des .

strInférieur = replace(wsParametre.range(b10).value, "," , ".")

et le tout à fonctionner.

Je viens juste de rappeler que j'avais une question sur se post .

Désolé j'apprécie grandement l'aide de ce forum et je ne veux offusqué personne !!!!
 
G

Guest

Guest
Re : Passage de décimal de excel vers un code SQL par VBA

Re,

Au dessus de ton premier post dans cette discussion tu as un menu avec 'Outils de la discussion' et un sous-choix 's'abonner' pour ne pas oublier les discussions que tu as ouvertes.

Cordialement
A+
 
G

Guest

Guest
Re : Passage de décimal de excel vers un code SQL par VBA

Re,

@l'Agrafe:):):):Visiblement sa macro marche sur des systèmes dont le séparateur décimal est le '.' donc la virgule peut-être le séparteur de milliers suivant le format d'affichage de la valeur dans la cellule. Utiliser .text présentait le danger d'avoir au finale chaine avec plusieurs points, une fois les virgules remplacées.

Quand aux conversions implicites, c'est une question de méthode de programmation, et de goùt personnel, de lisibilité des codes, et de manque de confiance dans les conversions implicites, etc...

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

Discussions similaires

Statistiques des forums

Discussions
314 628
Messages
2 111 343
Membres
111 107
dernier inscrit
cdel