INSERT avec virgule sous VBA

Signaler
Messages postés
278
Date d'inscription
mardi 22 janvier 2002
Statut
Membre
Dernière intervention
29 août 2006
-
 LordZerty -
Bonjour,
J'ai un petit problème en VBA, sûrement pas grave, mais disons que j'ai un problème de timing pour m'y pencher à fond. C'est pourquoi je fais appel à vous:
(je précise, je ne maitrise absolument pas le VBA)
j'ai une requête d'ajout "à l'ancienne" sous VBA du type:
INSERT INTO MaTable (nom, durée) VALUES ('" & texte1.value & "', " Texte2.value")
(pour les petits malins qui me sortiraient qu'en VB, .value d'un text, ça n'existe pas, sachez qu'en VBA, .text ça marche pas, VB et VBA => pas pareil)

Mon problème est le suivant : il peut arriver que texte2.value soit un nombre décimal (0,5), or, quand je lance ma requête, il me prends cette virgule pour un séparateur de champs (logique!)
J'ai testé REPLACE pour changer la virgule en point, mais ça ne change rien, il y a toujours cette £%*$ de virgule
Ce n'est pas un truc très compliqué, j'espère que quelqu'un aura la réponse
Merci!

9 réponses

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
Regardes du coté des fonctions de conversion
cdbl --> double
cdec --> decimal
cstr --> string

....

Cdbl(text2.value) doit etre la solution
Messages postés
278
Date d'inscription
mardi 22 janvier 2002
Statut
Membre
Dernière intervention
29 août 2006

bah non ça marche pas... merci quand meme...
mais j'y pense (j'ai pas la machine à côté de moi pour faire ça)
INSERT INTO MaTAble...
pour séparer les champs, si je met ; ça peut marcher ou pas?
(question bête, mais quand on peut pas tester...)
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
INSERT INTO MaTable (nom, durée) VALUES ('" & texte1.value & "', " & cdbl( Texte2.value) & ") "
ne fonctionne pas
Messages postés
278
Date d'inscription
mardi 22 janvier 2002
Statut
Membre
Dernière intervention
29 août 2006

j'ai utilisé une variable entre les 2
duree = Cdbl (texte2.value)

INSERT INTO MaTable (nom, durée) VALUES ('" & texte1.value & "', " & duree & ") "

et nan, ça marche pas, il croit toujours qu'il y a 3 champs au lieu de 2
Messages postés
2
Date d'inscription
samedi 26 avril 2003
Statut
Membre
Dernière intervention
22 août 2005

C'est normal que ca marche pas parce que VBA convertit ton durée en chaine de caractere donc tu as une requete de la forme INSERT INTO MaTable (nom, durée) VALUES ('lalala',1,3)

Par contre c'est bizarre que REPLACE ne marche pas
Essaye un truc du genre
dim duree as string

duree=REPLACE(Text2.value,",",".")
INSERT INTO MaTable (nom, durée) VALUES ('" & texte1.value & "', " & duree & ") "

sinon tu peux essayer
INSERT INTO MaTable (nom, durée) VALUES ('" & texte1.value & "','" & cdbl( Texte2.value) & "') "
en espérant qu'il fasse la conversion lui meme

sinon pourquoi tu n'utilise par les recordset?



moi.super();
moi.goURL(http://aldelorme.free.fr);
moi. :big) 
Messages postés
1
Date d'inscription
vendredi 13 août 2004
Statut
Membre
Dernière intervention
23 novembre 2004

Salut

Je debute aussi,mais pour ton probleme de virgule,as tu essaye de chercher une sulution en mutipliant et en divisant ton chiffre.Du genre
ton 0,5 le multiplier par 10 pour avoir une valeur entiere puis le remultiplier avant l'afficher.Je suis desole de ne pas pouvoir etre
plus explicite mais je plus à mon aise avec excel.

lamychoco
Messages postés
4
Date d'inscription
lundi 16 février 2004
Statut
Membre
Dernière intervention
17 août 2005

Bonjour,
Vas plutôt dans "Panneau de configuration/Options régionnales/nombre" et change
le symbole décimal "," (virgule) par "." (point) (paramètrage système Windows)
Salut
Messages postés
2
Date d'inscription
samedi 26 avril 2003
Statut
Membre
Dernière intervention
22 août 2005

Bien sur, c'est une solution de changer le symbole decimal et de se mettre en format americain (comme VBA est d'abords ecrit en anglais il reconnait les point comme symbole decimal) mais c'est un peu brute comme methode surtout si tu veux encore continuer a taper tes chiffres a virgules dans windows (par exemple sous excel)


moi.super();
moi.goURL(http://aldelorme.free.fr);
moi.
Une solution à était trouver ? Car je rencontre le même problème et je ne trouve pas de solutions même en changeant les virgules par des points...

Je vous remercie d'avance pour votre aide.