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

VBScript Discussion :

Format d'un nombre avec les zéros devant


Sujet :

VBScript

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 20
    Points : 9
    Points
    9
    Par défaut Format d'un nombre avec les zéros devant
    Bonjour,

    dans mon script je récupère une valeur (nombre) sur 7 caractères. Hors si mon chiffre est le 737 j'aurais comme résultat 737.
    Je souhaiterais que l'affichage du MontantHT s'affiche toujours sur 7 caractères soit 0000737.

    Pouvez-vous m'aidez je sèche...

    voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    '--- Chargement du fichier en lecture ---
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set fread = Fso.OpenTextFile("\\****\administration\****\Statistique\statol\statol", ForReading)
     
        Set fwrite = fso.OpenTextFile("\\****\administration\****\Statistique\statol\statol2", ForWriting,true)
    '--- Boucle de lecture du fichier AR de l'AS400 ---
         while Not fread.AtEndOfStream
    '--- Lecture ligne à ligne ---
                  ligne= fread.ReadLine
                  Client=Mid(ligne,1,11)
                  Rayon=Mid(ligne,13,1)
                  Srayon=Mid(ligne,15,2)
                  If Mid(Ligne,18,3)=" " then
                     MontantHT=Mid(ligne,26,7)
                     MontantRev=Mid(ligne,34,7)
                     MontantTTC=Mid(ligne,42,7)
                     fwrite.write Client & Rayon & Srayon & MontantHT & MontantRev & MontantTTC & chr(10)

    merci par avance

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

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 097
    Points : 16 606
    Points
    16 606
    Par défaut
    Bonjour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Function FormatSpc(Quoi)
    FormatSpc = String(7 - Len(Quoi), "0") & Quoi
    End Function
     
    MsgBox FormatSpc(123)
    Donc pour toi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    '. . . .
                  If Mid(Ligne,18,3)=" " then
                     MontantHT=Mid(ligne,26,7)
                     MontantHT= FormatSpc(MontantHT)
    ' ou bien plus court
                     MontantHT= FormatSpc(Mid(ligne,26,7))
    '. . . .

  3. #3
    Membre confirmé Avatar de pitchalov
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 340
    Points : 582
    Points
    582
    Par défaut
    Bonjour,

    Une autre technique, si ça peut t'être utile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MontantHT = Right("0000000" & MontantHT, 7)
    Donc pour toi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MontantHT=  Right("0000000" & Mid(ligne,26,7), 7)

  4. #4
    Futur Membre du Club
    Inscrit en
    Juin 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    J'ai essayé avec la technique à pitchalov mais voici le résultat

    00701201003100 717 538 0 858
    00701201003101 17966 9350 0 21488
    00701201003102 13663 8591 0 16341
    00701201003103 16946 10374 0 20267
    00701201003104 15350 9001 0 18359
    00701201003105 39422 23930 0 47149
    00701201003106 10714 6171 0 12814
    00701201003107 8793 5562 0 10417
    00701201003108 32892 23823 0 38877
    00701201003109 -2020 80 0 -2416
    00701201003200003 253 154 0 302
    alors que j'aurais souhaité 000071700053800000858 par exmple pour la première ligne.

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    J'ai le même resultat avec la technique de Progelec....

    Avant :
    00701201003100 717 538 858
    00701201003101 17966 9350 21488
    00701201003102 13663 8591 16341
    00701201003103 16946 10374 20267
    00701201003104 15350 9001 18359


    Apres:
    00701201003100 717 538 0 858
    00701201003101 17966 9350 0 21488
    00701201003102 13663 8591 0 16341
    00701201003103 16946 10374 0 20267
    00701201003104 15350 9001 0 18359

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

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 097
    Points : 16 606
    Points
    16 606
    Par défaut
    Ton énoncé au premier message n’est pas le même que tes demandes suivantes, que je n’arrive d’ailleurs pas à comprendre.
    A moins que dans 00701201003100 717 538 858 tu ne veuilles retenir que les 3 derniers groupes de 3 chiffres, 717, 538, 858 ,auquel tu veux ajouter 4 zéro ?

  7. #7
    Futur Membre du Club
    Inscrit en
    Juin 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    Si mon énoncé est la même ou alors je m'étais mal exprimé.

    Dans mon script je récupère les 7 caractères qui forme le montantHT

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MontantHT=Mid(ligne,26,7)
    Mais si mon MontantHT est inférieur à 7 caractères comme 717 par exemple, je souhaiterais tout de même garder mon chiffre sous 7 caractères soit 0000717

    J'aurais donc un resultat du type :

    000071700005380000858

    au lieu de :

    717 538 858.

    J'espère mettre bien expliqué

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

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 097
    Points : 16 606
    Points
    16 606
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public Function Result(Expression)
    Dim Decoupes
    Decoupes = Split(Expression)
    Result = String(7 - Len(Decoupes(1)), "0") & Decoupes(1)
    Result = Result & String(7 - Len(Decoupes(2)), "0") & Decoupes(2)
    Result = Result & String(7 - Len(Decoupes(3)), "0") & Decoupes(3)
     
    End Function
     
     
    dim LeChiffrage
    LeChiffrage = "00701201003100 717 538 858"
    msgbox Result(LeChiffrage)

  9. #9
    Futur Membre du Club
    Inscrit en
    Juin 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    J'ai presque réussi à faire ce que je souhaitait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                     MontantHT = Ltrim(Mid(ligne,26,7))
                     nb =(7 - Len(MontantHT))
                     MontantHT = String(nb, "0") & MontantHT
    mon seul soucis est au niveau des chiffres négatif...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    00701201003209008  000029	
    00701201003209009  000109	
    00701201003209099  0-2197	
    0070120100330000300000031	
    0070120100330000302000009
    je voudrais que 0-2197 soit écrit comme ceci -02197

  10. #10
    Futur Membre du Club
    Inscrit en
    Juin 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    J'avance j'avance ...



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    MontantHT = Ltrim(Mid(ligne,26,7))
                     nb =(7 - Len(MontantHT))
                     MontantHT = String(nb, "0") & MontantHT
                     pos=(InStr(1,MontantHT,"-"))
                     If pos <> 0 then
                     MontantHT=(Replace(MontantHT,"0","-",1,1))
     
                     End If
    voici le résultat obtenu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    00701201003108     032892	
    00701201003109     --2020	
    00701201003200003  000253	
    00701201003200009  000464
    Ensuite je supprime le signe - en trop mais la j'ai un problème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MontantHT=(Replace(MontantHT,"-","0",pos))
    Car ce code supprime le signe - à la position 2 (pos) mais automatiquement il supprime les caractère à gauche.
    Resultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    00701201003108     032892	
    00701201003109     02020	
    00701201003200003  000253	
    00701201003200009  000464
    comment est-ce que je peux garder mon 1er caractères??

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

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 097
    Points : 16 606
    Points
    16 606
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     MontantHT = Ltrim(Mid(ligne,26,7))
                     nb =(7 - Len(MontantHT))
                    If left(MontantHT,1) = "-" then
                            MontantHT = replace(MontantHT,"-","")
                            nb = nb-1
                            MontantHT = "-" & String(nb - Len(MontantHT), "0") & MontantHT
                            Else
                            MontantHT = String(nb, "0") & MontantHT
                     End If
    Peut être.

  12. #12
    Futur Membre du Club
    Inscrit en
    Juin 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 20
    Points : 9
    Points
    9
    Par défaut
    J'ai trouvé !!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
                     MontantTTC = Ltrim(Mid(ligne,42,7))
                     pos=(InStr(1,MontantTTC,"-"))
                     nb =(7 - Len(MontantTTC))
                     MontantTTC = String(nb, "0") & MontantTTC
                     If pos <> 0 then
                        MontantTTC = replace(MontantTTC,"-","0")
                        MontantTTC=(Replace(MontantTTC,"0","-",1,1))
                     End If
    Ça fait plaisir

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

Discussions similaires

  1. Formater chiffres à 6 nombres en conservant les zéros devant
    Par Runsh63 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 21/06/2011, 09h02
  2. Comment supprimer les "zéros" devant une variable
    Par solorac dans le forum Excel
    Réponses: 4
    Dernier message: 16/05/2008, 23h14
  3. Réponses: 9
    Dernier message: 09/04/2008, 18h30
  4. Réponses: 7
    Dernier message: 20/12/2006, 18h18
  5. Réponses: 9
    Dernier message: 20/03/2006, 09h59

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