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

VB 6 et antérieur Discussion :

[VB dans un script à destination de word] Formatage à 2 décimales


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2011
    Messages : 41
    Par défaut [VB dans un script à destination de word] Formatage à 2 décimales
    Bonjour à tous,

    Tout d'abord excusez moi, j'ai cherché partout et toute la matinée sur internet et sur le forum, j'ai trouvé des discussions parlant de mon problème mais aucune n'a réussi à le résoudre. Je me permet donc d'ouvrir une nouvelle discussion sur mon problème que voici :

    Je doit mettre en forme des courriers Word en récupérant dans une base de donnée plusieurs infos. Je récupère à l'aide d'un script et une requête SQL un montant. Celui-ci est stocké dans une variable au format string. Quand il ne possède seulement qu’une décimale (ex : 1024,2), ça me l'affichent donc avec qu'une seule décimale. Et je souhaiterai l'afficher en 1024,20 vu que c'est un montant.

    Je passe évidemment ma variable en double avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mavariable = cdbl(mavariable)
    (testé avec décimal aussi)

    Ensuite j'ai tout essayé,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    format(mavariable,"0.00") 
    format(mavariable,"0,00") 
    format(mavariable,"0.##") 
    format(mavariable,"0,##")
    format(mavariable,"#.##") 
    format(mavariable,"#,##") 
    format(mavariable,".00") 
    format(mavariable,",00") 
    format(mavariable,".##") 
    format(mavariable,",##") 
    Round(mavariable,2)
    Math.Round(mavariable,2)
    Rien ne fonctionne.

    Sauvez moi

  2. #2
    Membre émérite Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 635
    Par défaut
    Tu teste la position du séparateur décimal , si il est (de gauche à droite) en avant dernière position , tu rajoute "0" à droite de ton string
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    mavariable="1234,5"
    I%=Len(mavariable) 
    J%= instr(mavariable,",")
    If J%=1 then mavariable="0" & mavariable  ' pas de chiffre à gauche de la virgule
    If I%-J%=1 then  mavariable=mavariable & "0" ' 1 chiffre après la virgule
    PS : programme non testé en réel !

  3. #3
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Salut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim mavariable As Double
    mavariable = 123.456
    MsgBox Format(mavariable, "##,##0.00")
    mavariable = 123.4
    MsgBox Format(mavariable, "##,##0.00")
    mavariable = 123456789
    MsgBox Format(mavariable, "##,##0.00")
    A savoir, dans le premier exemple, arrondi au chiffre supérieure, 123.456 devient 123.46
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  4. #4
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2011
    Messages : 41
    Par défaut
    Citation Envoyé par DAUDET78 Voir le message
    Tu teste la position du séparateur décimal , si il est (de gauche à droite) en avant dernière position , tu rajoute "0" à droite de ton string
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    mavariable="1234,5"
    I%=Len(mavariable) 
    J%= instr(mavariable,",")
    If J%=1 then mavariable="0" & mavariable  ' pas de chiffre à gauche de la virgule
    If I%-J%=1 then  mavariable=mavariable & "0" ' 1 chiffre après la virgule
    PS : programme non testé en réel !
    Super merci ça marche ! Merci beaucoup !!!

    PS : la deuxième solution de ProgElecT n'a pas marché mais merci de t'être penché sur mon problème

  5. #5
    Membre émérite Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 635
    Par défaut
    Citation Envoyé par Adweuz Voir le message
    Super merci ça marche !
    Et bien ça fait fait plaisir ...... je ne suis pas encore trop mauvais (on peut toujours oublier une virgule dans un coin !)
    PS : Tu peux me cocher un p'tit pouce vert? et mettre ta question en résolue

  6. #6
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Re

    L'important est que la proposition de DAUDET78 (salut) t'a permis de passer à la suite de ton programme.
    Pour autant Adweuz tu indiquais que tu convertissais la variable string de ta BDs en type Double, est le format proposé par moi fonctionne pour ce type.
    Il faut donc utiliser le code suivant pour le faire directement depuis la donnée de type String de ta BDs.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim mavariable As String
    mavariable = "123,456"
    MsgBox Format(CDbl(mavariable), "##,##0.00")
    mavariable = "123,4"
    MsgBox Format(CDbl(mavariable), "##,##0.00")
    mavariable = "123456789"
    MsgBox Format(CDbl(mavariable), "##,##0.00")
    Dans l'exemple j'ai cru comprendre que la donnée string de la BDs avait pour séparateur décimal la virgule, si c'est le point, le formatage devient
    Format(CDbl(Replace(mavariable, ".", ",")), "##,##0.00")

    Si je me suis permis de rajouter ce post, s'est pour les éventuelles personnes qui liront cette discussion et qui hésiteraient à utiliser la fonction Format.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/09/2011, 14h00
  2. Requête POST dans un script bash
    Par desperado dans le forum Linux
    Réponses: 4
    Dernier message: 11/12/2007, 23h38
  3. [Apache] Erreur dans mes scripts CGI
    Par GLDavid dans le forum Apache
    Réponses: 2
    Dernier message: 28/08/2004, 07h14
  4. Boucle for dans un script cmd
    Par nicolas.ganache dans le forum Développement
    Réponses: 4
    Dernier message: 19/07/2004, 17h07
  5. Réponses: 4
    Dernier message: 02/06/2004, 12h19

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