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 :

[VB6] Arrondir à 0,05 [Trucs & Astuces]


Sujet :

VB 6 et antérieur

  1. #1
    Membre habitué

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 207
    Points : 133
    Points
    133
    Par défaut [VB6] Arrondir à 0,05
    Salut à tous !!

    Je travaille en VBA sur Excel, et je cherche une fonction pour arrondirun nombre à virgule à 05 (pour des prix)

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    6.234 -> 6.25
    7.891 -> 7.90
    Merci d'avance pour vos futures aides.

    [Titre édité par HPJ]
    [Ancien titre = Arrondir à 05]
    @@++

  2. #2
    Membre habitué
    Avatar de elifqaoui
    Inscrit en
    Juillet 2002
    Messages
    152
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 152
    Points : 138
    Points
    138
    Par défaut
    cherche du coté de Round
    A Violin,a table,a chair,and a bowl of fruit,what else a man need to be happy(Albert Einstein)
    (Windows, VB, PHP, MySQL et Access)

  3. #3
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    Je pense qu'il doit y avoir plus simple, mais ça peut dépanner...
    J'ai décomposé au maximum afin de montrer mon raisonnement:
    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
    18
    19
    20
    21
    Public Function Arrondi5Cts(ByVal x As Double) As Double
     
        Dim resultat As Double
        Dim nbCts As Byte
        Dim nbUnites As Long
     
        resultat = Round(x + 0.001, 2) ' "Round maison" car Round(0.125, 2) -> 0.12 ! ! !
     
        resultat = resultat * 100 ' convertit en entier
     
        nbUnites = Fix(resultat / 100) ' cherche la partie entière
     
        nbCts = resultat - nbUnites * 100 ' et la partie décimale
     
        nbCts = Fix((nbCts + 2) / 5) * 5 ' arrondi à 5 près
     
        resultat = nbUnites * 100 + nbCts ' calcule le résultat
     
        Arrondi5Cts = resultat / 100 ' convertit en double
     
    End Function
    Avant de poser une question, merci de chercher dans les rubriques suivantes:
    FAQ VB
    Tutoriaux VB
    Recherche avancée sur le forum

  4. #4
    Membre habitué

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 207
    Points : 133
    Points
    133
    Par défaut
    Ben merci bien pour ce code !!

    je vais reprendre tout ça !!

    j'ai une autre fonction un peu du genre qu'on ma donner, mais elle arrondit pas a 100 % juste !!!

    je vous redirai,

    (et merci pour l'edit)
    @@++

  5. #5
    Membre habitué

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 207
    Points : 133
    Points
    133
    Par défaut
    Re Salut à tous !!!

    Merci de votre aide !!

    hpj, j'ai repris ta fonction mot pour mot, elle marche à mérveille (je t'ai cité dans mon code).

    au début j'avais un autre système qu'un ami ma donné :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim number As Double
    Dim int_number As Integer
     
    number = number * 20
    int_number = CInt(number)
    number = CDec(int_number)
    number = number / 20
    number sera égal au nombre arrondit.

    Cela marche bien, le seul défaut :
    2.225 -> 2.2
    2.226 -> 2.2
    alors que

    2.275 -> 2.3
    2.279 -> 2.3
    On m'a aussi parler d'un fonction Floor, mais je n'ai rien trouver dans l'aide VB à ce sujet, la connaissez vous ??
    @@++

  6. #6
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Ça n'a pourtant rien de compliqué

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Arrondi= round (myNumber / precision) * precision

  7. #7
    Membre habitué

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 207
    Points : 133
    Points
    133
    Par défaut
    Merci pour l'info !!
    C'est clair que c'est beaucoup plus simple ...

    cependant pour le pinailleur, lorsque l'on se trouve à 0.225 il va arrondir à 0.2 et non à 0.25.

    enfin voila...
    @@++

  8. #8
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    Pour le pinailleur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Arrondi= round ((myNumber + 0.00001) / precision) * precision
    Avant de poser une question, merci de chercher dans les rubriques suivantes:
    FAQ VB
    Tutoriaux VB
    Recherche avancée sur le forum

  9. #9
    Membre habitué

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2002
    Messages
    207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 207
    Points : 133
    Points
    133
    Par défaut
    lol, merci beaucoup :-)

    Cela simplifie grandement mon code
    @@++

  10. #10
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    Je savais bien qu'il y avait plus simple que mon gros algo... Je n'ai jamais été doué en math
    Avant de poser une question, merci de chercher dans les rubriques suivantes:
    FAQ VB
    Tutoriaux VB
    Recherche avancée sur le forum

  11. #11
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    sujet abordé il y a deux ans ici même si je me souviens bien ...

    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
     
    Function SpecialRound(number As Double, Optional BaseModulo As Integer = 1) 
        SpecialRound = BaseModulo * ((Int(number + BaseModulo / 2)) \ BaseModulo) 
    End Function
     
     
     
     
    exemple :
     
    Private Sub Text1_LostFocus() 
    Text1.Text = Format(Arrondi_5Cts(Text1.Text, 5), "###0.00 FRs") 
    End Sub 
     
    Function Arrondi_5Cts(Number As Double, Optional BaseModulo As Integer) 
    Arrondi_5Cts = BaseModulo * (((Int(Number * 100) + BaseModulo / 2)) \ BaseModulo) / 100 
    End Function
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  12. #12
    HPJ
    HPJ est déconnecté
    Membre averti

    Profil pro
    Inscrit en
    Mai 2003
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2003
    Messages : 260
    Points : 364
    Points
    364
    Par défaut
    SpecialRound(0.125, 2) -> 0
    Avant de poser une question, merci de chercher dans les rubriques suivantes:
    FAQ VB
    Tutoriaux VB
    Recherche avancée sur le forum

  13. #13
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    Oui je sais...

    Y'avait eu à l'époque tou un thread là dessus et les corrections à y approter...

    mais l'autre marche !!!
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

Discussions similaires

  1. [CR][VB6] Impression d'un état depuis VB
    Par sda dans le forum SDK
    Réponses: 3
    Dernier message: 06/02/2007, 17h27
  2. [VB6] mettre en commentaires...
    Par nd25 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 19/04/2004, 15h15
  3. [VB6] [MDI] Signaler la fermeture d'une fille à la mère
    Par cpri1shoot dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 13/04/2004, 08h57
  4. Réponses: 1
    Dernier message: 22/08/2002, 17h00
  5. [Crystal Report][VB6] instruction PrintReport
    Par yyyeeeaaahhh dans le forum SDK
    Réponses: 4
    Dernier message: 29/07/2002, 14h58

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