Visual basic erreur 3144 quand chiffre décimal [Résolu]

Signaler
-
Messages postés
15581
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 mai 2021
-
Bonjour,

J'ai une erreur uniquement quand un chiffre décimal.

mon code est :

Dim base As Database: Dim requete As String

If (Ref_Couleur.Value <> "" And IsNumeric(qts_maj.Value)) Then
Set base = Application.CurrentDb
requete = "Update Peintures SET Quantité = " & qts_maj.Value & " WHERE Code_couleur='" & Ref_Couleur.Value & ";"
base.Execute requete

MsgBox "Les stocks pour la référence : " & Ref_Couleur.Value & ", ont correctement été mis à jour pour une quantité désormais égale à : " & qts_maj.Value

Set base = Nothing

End If

Merci de votre aide

5 réponses

Messages postés
384
Date d'inscription
samedi 7 novembre 2020
Statut
Membre
Dernière intervention
12 mai 2021
75
Bonjour,
Sans doute un problème d'interprétation de la décimale : en français c'est la virgule qui sert de séparateur ; en anglais c'est le point.
Et dans Acces, c'est la notation anglaise qu'il faut utiliser.
J'ai tenté de mettre un point au lieu de la virgule, mais Acces ne me le permette pas.
Messages postés
15581
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 mai 2021
853
bonjour,
une erreur quand quoi contient un chiffre décimal?
une erreur à quelle ligne de code?
merci d'utiliser les balises de code quand tu partages du code, en tenant compte que VBA est du basic: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Bonjour,

J'ai une erreur uniquement quand un chiffre décimal.

mon code est :

Dim base As Database: Dim requete As String

If (Ref_Couleur.Value <> "" And IsNumeric(qts_maj.Value)) Then
Set base = Application.CurrentDb
requete = "Update Peintures SET Quantité = " & qts_maj.Value & " WHERE Code_couleur='" & Ref_Couleur.Value & ";"
base.Execute requete

MsgBox "Les stocks pour la référence : " & Ref_Couleur.Value & ", ont correctement été mis à jour pour une quantité désormais égale à : " & qts_maj.Value

Set base = Nothing

End If


Débogage Acces me dit qu'il y a un problème à la ligne
base.Execute requete


Selon mes recherches ça serait la valeur
qts_maj 
qui est en format décimal (quantité en kg) qui serait vu comme deux éléments différent. Je ne trouve pas comme faire pour évité ça, car access ne prends pas l'entrée avec un point dans ma table.

Merci de votre aide
Messages postés
15581
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 mai 2021
853 > Jonathan
peux-tu écrire des phrases complètes? que signifie "quand un chiffre décimal"?

examine le contenu de la variable
requete
, et partage le ici.
Messages postés
15581
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 mai 2021
853 >
Messages postés
15581
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 mai 2021

pour apprendre et comprendre, fais également des essais de requêtes UPDATE directement dans Access, sans utiliser du VBA.
>
Messages postés
15581
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 mai 2021

Si j'ai un nombre entier tout marche parfaitement, c'est quand j'ai un nombre décimal que ça plante. Donc, je crois que c'est un problème lié au format, mais je ne trouve pas pour le moment. C'est pour ça que j'expose mon problème ici.

Merci de votre aide !
>
Messages postés
15581
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 mai 2021

Voilà je te mets une ligne de ma table Peinture.
Code_couleur : 009/10880
nom_couleur : CASHMERE
Quantité : 0,362
Finalement, j'ai changer mon séparateur décimal de mon système et tout c'est réglé. Il doit y avoir une autre solution, mais je ne l'ai pas trouver pour le moment. Si quelqu'un la trouve nous la partager.
Messages postés
15581
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 mai 2021
853
tu as beaucoup expliqué ce que tu pensais, et tu n'as pas donné le contenu exact de qts_maj.

il suffit sans doute de faire:
requete = "Update Peintures SET Quantité = " & replace(qts_maj.Value,",",".") _
      & " WHERE Code_couleur='" & Ref_Couleur.Value 

ou quelque chose de similaire
>
Messages postés
15581
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 mai 2021

Merci ! c'est exactement ça.
qts_maj = "Quantité" de la table Peinture - une "Quantité" inscrite dans une case du formulaire
Messages postés
15581
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 mai 2021
853
quel est le texte dans qts_maj quand cela ne fonctionne pas?
pas à quoi cela sert ni ce que cela signifie: quel est sa valeur.
0,341

mais, la commande que tu m'as donnée

replace(qts_maj.Value,",",".")


a résolut le problème, je crois que s'était visual basic qui ne prenais pas la donné comme une seul valeur étant donné la virgule en changeant la virgule en point ça résolut le problème.
Merci encore.
Messages postés
15581
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
13 mai 2021
853
si tu avais donné l'info dés le départ, tu aurais gagné du temps.