IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Problème de séparateur décimal entre vba excel et requête SQL Server


Sujet :

Développement SQL Server

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2010
    Messages : 34
    Points : 26
    Points
    26
    Par défaut Problème de séparateur décimal entre vba excel et requête SQL Server
    Bonsoir,
    Je fais des enregistrements dans une table SQL Server depuis excel à l'aide de vba.
    Je cherche depuis hier comment transférer une variable "12.34" (décimal) dans un champ de type décimal(4, 2) de ma table SQL.
    Excel me transforme automatiquement mon séparateur "." en ","
    ex :
    Dim a as Double
    a = 12.34
    et l'espion m'indique qu'il a transforme la valeur de a =12,34

    => donc VBA me génère lors de la génération de la requête une erreur car une "," est considéré un séparateur entre 2 arguments ou paramètres

    J'ai modifié les options de excel pour utiliser le point comme séparateur, ça fonctionne visuellement dans les cellules mais pour dans le cobe vba.
    J'ai donc essayer d'écrire cette option directement dans mon code :
    With Application
    .DecimalSeparator = "."
    .UseSystemSeparators = False
    End With
    Mais rien n'y fait.
    Avez-vous déjà rencontré ce soucis
    Merci de votre aide

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 087
    Points : 5 203
    Points
    5 203
    Par défaut
    Bonjour,

    C'est un problème archi-classique dû à la pris en compte des paramètres régionaux par le VBA (point décimal, présentation des dates...)

    Citation Envoyé par Toto_le_héros38 Voir le message
    Je cherche depuis hier comment transférer une variable "12.34" (décimal) dans un champ de type décimal(4, 2) de ma table SQL.
    Comment ? Avec une instruction de type INPUT ?

    Citation Envoyé par Toto_le_héros38 Voir le message
    et l'espion m'indique qu'il a transforme la valeur de a =12,34
    L'espion n'indique rien du tout. a est un réel et il le présente à un français tel qu'il souhaite le voir

    Citation Envoyé par Toto_le_héros38 Voir le message
    J'ai modifié les options de excel pour utiliser le point comme séparateur, ça fonctionne visuellement dans les cellules mais pour dans le cobe vba.
    Ce sont les paramètres windows qu'il faudrait modifier pour être tranquille mais cela impacterait tous les logiciels et en plus le tableau ne pourrait être utilisé qu'avec un windows US

    En réalité le problème n'existe que lorsqu'on convertit un nombre (ou une date) en string, sinon le VBA sait à quoi il a à faire grâce au typage de la variable

    Et pour être plus complet il n'existe que si cette string sert ensuite à renseigner un champ numérique à travers une instruction SQL. J'utilise pour cela une fonction standard perso :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Function Num(r, Optional n As Integer = 0)
    Dim f As String, i As Integer
    If n <= 0 Then f = "0" Else f = "0."
    For i = 1 To n
      f = f & "0"
    Next
    If IsNumeric(r) Then
      Num = Replace(Format(r, f), ",", ".")  'format(pi,'0.00') renvoie "3,14" en France !
    Else
      Num = 0
    End If
    End Function
    Et ensuite pour mes instructions SQL (insert ou update) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "UPDATE matable SET x=" & num(a,2) & " WHERE..."
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

Discussions similaires

  1. [XL-2010] VBA Excel 2010 - Requête SQL Noms de champs + données
    Par ChipsAlaMenthe dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/05/2015, 19h04
  2. Réponses: 8
    Dernier message: 01/06/2014, 15h49
  3. Problème de séparateur décimal
    Par Nap01 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 18/03/2008, 14h21
  4. nombre décimal / entier VBA Excel
    Par al_le_magnific dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/09/2007, 10h54
  5. [VB.NET]Problème de séparateur décimal [débutant]
    Par Cantalou dans le forum Windows Forms
    Réponses: 5
    Dernier message: 03/03/2006, 13h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo