Visual basic erreur 3144 quand chiffre décimal

Résolu
Jonathan -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
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

  1. Utilisateur anonyme
     
    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.
    0
    1. Jonathan
       
      J'ai tenté de mettre un point au lieu de la virgule, mais Acces ne me le permette pas.
      0
  2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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
    0
    1. Jonathan
       
      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
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > 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.
        0
      2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        pour apprendre et comprendre, fais également des essais de requêtes UPDATE directement dans Access, sans utiliser du VBA.
        0
      3. Jonathan > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        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 !
        0
      4. Jonathan > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Voilà je te mets une ligne de ma table Peinture.
        Code_couleur : 009/10880
        nom_couleur : CASHMERE
        Quantité : 0,362
        0
  3. Jonathan
     
    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.
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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
      0
      1. Jonathan > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Merci ! c'est exactement ça.
        0
  4. Jonathan
     
    qts_maj = "Quantité" de la table Peinture - une "Quantité" inscrite dans une case du formulaire
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Jonathan
     
    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.
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      si tu avais donné l'info dés le départ, tu aurais gagné du temps.
      0