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

Macros et VBA Excel Discussion :

conversion variable string en nombre à 3 DEC


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 46
    Par défaut conversion variable string en nombre à 3 DEC
    Bonjour,

    je cherche à convertir une variable String en nombre à 3 Decimales

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    quantitevendue = CDbl(TextBox4.Value)
    une âme charitable

    Bien Cdt

  2. #2
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Bonjour, 3 décimal tu peux rester en single pas besoin de double
    La fonction round permet les arrondi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim a As Single
    a = Round(CSng("2,334455"), 3)
    MsgBox a
    à adapter, attention avec les , et les .

  3. #3
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 46
    Par défaut
    Bonsoir Krovax

    ma variable est de type String, j'insère dans une Textbox par exple , cette valeur 860 ( par défaut, une valeur dans une Textbox est forcément String, ou y at'il un moyen de la transformer en 3Dec dès insertion ?)

    Je voudrais la convertir en nombre à 3 decimales, il me semble que ton code le permet seulement pour une variable en expression numérique ?

    bien Cdt

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Pourquoi ne pas essayer la solution de Krovax, d'abord?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 46
    Par défaut
    bonsoir

    je l'ai fait, mais je ne dispose toujours pas de la conversion à 3dec ( je pense qu'elle est du fait ( à mon avis ) de la nature de la variable insérée String .

    ma valeur affichée est toujour un chiffre entier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    quantitevendue = CDbl(TextBox4.Value)
    à l'exemple 860


    bien Cdt

  6. #6
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Est-ce que c'est ça que tu veux ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    quantitevendue = CDbl(TextBox4.Value) / 1000

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Ben, si tu saisis une valeur entière, tu ne sais pas la convertir en nombre à trois décimales, alors...

    Tu veux juste modifier l'affichage pour voir 3 zéros derrière la virgule, je suppose.

    Tout dépend de l'endroit ou tu stockes cette valeur...

    Dans une cellule? Format de cellule/Nombre

    Dans un textbox? format("2","0.000") par exemple
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #8
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 46
    Par défaut
    bonsoir aalex_38

    ce que j' aimerais, cest à partir d'une Textbox, insérer un chiffre entier ou à décimales ( par défaut celui-ci est en String ) et le convertir en chiffres avec ajout de 3 décimales si il est entier

    exple 860 à 860,000

    Merci aalex_38

    je pense ne pas savoir convertir la donnée de type String issue de ma textbox,en chiffre à 3Decimales Pierre .

    Bien Cdt

  9. #9
    Membre émérite
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    Par défaut Si j'ai bien compris...
    puisque tu n'as pas répondu clairement à la question de Pierre, il faut que les 3 chiffres décimaux apparaissent dans la TextBox.

    Alors met dans la procédure évenementielle "TextBoxName_Exit(ByVal Cancel As MSForms.ReturnBoolean)" de la TextBox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextBoxName.Value = Format$(TextBoxName.Value, "0.000")
    La conversion se fera en quittant la TextBox et utilisera dans la TextBox la valeur affichée pour les prochains usages.

    "TextBoxName" a adapté au vrai nom de la TextBox.

  10. #10
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    En reprenant le code de Pierre :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextBox1.Value = Format(CDbl(TextBox1.Value), "0.000")

    Sans être indiscret, je me demande quand même quel est l'intérêt d'une telle conversion dans un textbox.


    Edit: désolé ESVBA, je n'avais pas vu ton dernier message.

  11. #11
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 46
    Par défaut
    bonjour

    Merci pour votre attention et votre patience, conscient que je me suis mal fait comprendre ou n'ai pas compris vos message respectifs

    j'ai un code en boucle ( j'ai une quantité vendue qui peut être entiére ou décimalisée à 3DEC ), que j'insére dans une Textbox .En la récupérant, j'active une boucle Do Loop. Je n'arrivais pas à sortir de la boucle, du fait me semble-t-il d'un probléme de format entre quantitevendue & q

    quantitevendue était pour moi par défaut de type String , q étant un double

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    quantitevendue = CDbl(TextBox4.Value)
     
    Do Until quantitevendue = q
     
               loop
    Merci, et Dsl je viens de comprendre ! ton code fonctionne aalex

  12. #12
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    quantitevendue était pour moi par défaut de type String , q étant un double
    Les deux sont faux, il sont de type variant puisque tu ne déclare pas tes variables.
    Si tu commençais par là???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim quantitevendue as double, q as double
    remarque
    Et surtout pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim quantitevendue, q as double

    Ensuite ta boucle infinie, le mieu et de la suivre en pas a pas soit en mettant des pause soit avec F8. Et de suivre l'évolution des variables, afficher les variable local mettre des espion, etc...

  13. #13
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 46
    Par défaut
    je les avais déclarés au préalable en tant que variant, du fait que la variable q, est issue d'une fonction Vlookup ( qui me raméne des valeurs chiffrées "entières ou décimalisées" issue d'une base )

    j'ai un erreur de la fonction Vlookup , si j'use d'une décalration en double (mais elle fonctionne en variant).

    variant/variant ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    quantitevendue = CDbl(TextBox4.Value)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Do Until quantitevendue = q
     
    q = Application.VLookup(y, Worksheets("STOCK").Range("M" & j + 1, "S" & i), 7, False)
    j = Application.VLookup(y, Worksheets("STOCK").Range("M" & j + 1, "N" & i), 2, False)
    q = CDbl(q)
    ma reflexion était de convertir par la suite "q" en double et la confronter à l'autre variable "quantitévendue" issue de la textbox ( préalablement convertie en double ).

    et là, cela fonctionne

    Merci Krovax

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Oracle] Empêcher la conversion en string de nombres à virgules
    Par damze00 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 19/02/2015, 18h48
  2. Conversion variable string en TCHAR dans dll
    Par Pierre95 dans le forum Débuter
    Réponses: 6
    Dernier message: 10/07/2013, 12h36
  3. Conversion d'une variable string en BSTR
    Par thibthib71 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/09/2012, 11h52
  4. Conversion String en nombre à virgule
    Par Invité dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 28/08/2009, 11h19
  5. Conversion contenu objet File en variable String
    Par theleek dans le forum JSF
    Réponses: 2
    Dernier message: 20/12/2007, 11h31

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