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

IHM Discussion :

Arrondir à 5 centimes près


Sujet :

IHM

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 313
    Points : 73
    Points
    73
    Par défaut Arrondir à 5 centimes près
    Bonjour

    J'ai déjà cherché et j'ai surtout trouvé des réponses pour du Java...

    Dans un formulaire, j'ai un cellule qui affiche une somme calculé dans une requête! J'aimerais que cette somme soit afficher à 5 centimes près!

    Comment dois-je faire étant donnée que ma formule est dans une requête?
    Voici ma formule et j'aimerais arrondir le résultat à 5 centimes près...

    Rabais%Total: [Total HT]-([Total HT]*([Rabais%]/100))

    Merci à vous

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 332
    Points : 23 787
    Points
    23 787
    Par défaut
    Ha les arrondis, tout un bonheur.

    Je pense que le plus simlpe est de faire une fonction et de gérer cela par 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
    18
    19
    20
    21
    22
    public function Arrondi5c(prmValeur as double) as double
      dim result as long
      dim partieEntiere as long
      dim partieDecimale as long
      partieEntiere=int(prmValeur)
      partieDecimale=prmValeur-partieEntiere
     
         if partieDecimale<= 0 and partieDecimale < 5 then result=0
         esleif partieDecimale<= 5 and partieDecimale < 10 then result=5
         esleif partieDecimale<= 10 and partieDecimale < 15 then result=10
         esleif partieDecimale<= 15 and partieDecimale < 20 then result=15
         esleif partieDecimale<= 20 and partieDecimale < 25 then result=20
         esleif partieDecimale<= 25 and partieDecimale < 30 then result=25
         esleif partieDecimale<= 30 and partieDecimale < 35 then result=30
         esleif partieDecimale<= 35 and partieDecimale < 40 then result=35
         esleif partieDecimale<= 40 and partieDecimale < 45 then result=40
         'Continuer jusqu'à 95
         end if
     
      Arrondi5c =cdbl(partieEntiere+result)
     
    end function
    Actuellement cela fait un arrondi en dessous.

    Cette méthode n'est pas très éléguante mais a l'avantage d'être simple à modifier si cela ne te convient pas (par exemple pour un arrondi mathématique 0 à 3 => 0, 4 à 5 => 5 ou un arrondi au dessus).

    Pour améliorer on pourrait jouer avec la divisision entière (\) ou faire un tableau.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 313
    Points : 73
    Points
    73
    Par défaut
    Bonjour et merci de votre réponse...

    Si je mets le code, toute la partie ci-dessous vient rouge???

    esleif partieDecimale<= 5 and partieDecimale < 10 then result=5
    esleif partieDecimale<= 10 and partieDecimale < 15 then result=10
    esleif partieDecimale<= 15 and partieDecimale < 20 then result=15
    esleif partieDecimale<= 20 and partieDecimale < 25 then result=20
    esleif partieDecimale<= 25 and partieDecimale < 30 then result=25
    esleif partieDecimale<= 30 and partieDecimale < 35 then result=30
    esleif partieDecimale<= 35 and partieDecimale < 40 then result=35
    esleif partieDecimale<= 40 and partieDecimale < 45 then result=40

    Y a-t-il une petite erreur?

    Cela va bien arrondir 1.38 à 1.4 et 1.36 à 1.35?

    Merci

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 332
    Points : 23 787
    Points
    23 787
    Par défaut
    Citation Envoyé par paselo Voir le message
    Cela va bien arrondir 1.38 à 1.4 et 1.36 à 1.35?
    Non, ça va arrondir 1.38 à 1.35 et désolé pour la faute de frappe.

    Si tu veux cela il faut jouer avec les bornes de début et de fin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if partieDecimale<3 then result=0
    elseif partieDecimale<= 2 and partieDecimale < 7 then result=5
    '
    elseif partieDecimale<= 32 and partieDecimale < 37 then result=35 'Gère 1.36
    elseif partieDecimale<= 37 and partieDecimale < 42 then result=40 'Gére 1.38
    '
    elseif partieDecimale<= 92 and partieDecimale < 97 then result=95 'Gére 1.96
    elseif partieDecimale>= 97 then result=100 'Gére  1.98
    Et puis il faut changer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Arrondi5c=cdbl(PartieEntiere)+cdbl(PartieDecimale/100)
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 313
    Points : 73
    Points
    73
    Par défaut
    Merci, maintenant, j'ai une erreur de compilation Else sans IF..


    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
    22
    23
    24
    Private Sub Rabais__AfterUpdate()
     
      Dim result As Long
      Dim partieEntiere As Long
      Dim partieDecimale As Long
      partieEntiere = Int(prmValeur)
      partieDecimale = prmValeur - partieEntiere
     
         If partieDecimale <= 0 And partieDecimale < 5 Then result = 0
         ElseIf partieDecimale <= 5 And partieDecimale < 10 Then result = 5
         ElseIf partieDecimale <= 10 And partieDecimale < 15 Then result = 10
         ElseIf partieDecimale <= 15 And partieDecimale < 20 Then result = 15
         ElseIf partieDecimale <= 20 And partieDecimale < 25 Then result = 20
         ElseIf partieDecimale <= 25 And partieDecimale < 30 Then result = 25
         ElseIf partieDecimale <= 30 And partieDecimale < 35 Then result = 30
         ElseIf partieDecimale <= 35 And partieDecimale < 40 Then result = 35
         ElseIf partieDecimale <= 40 And partieDecimale < 45 Then result = 40
         'Continuer jusqu'à 95
         End If
     
      Arrondi5c = CDbl(partieEntiere + result)
     
     
    End Function

  6. #6
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour,

    A mon avis ceci fonctionne =
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Function Arrondir5cents(Montant As Double)
    Arrondir5cents = (Int((Montant * 100 + 2.49) / 5) * 5) / 100
    End Function
    Explication de l'algorithme
    12.4123
    on multiplie par 100 ---> 1241.23
    on ajoute 2.49 ---> 1243.72
    on prend la partie entière de la division par 5 ---->248
    que l'on multiplie par 5 ---> 1240
    que l'on divise par 100 -->12.40
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  7. #7
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 332
    Points : 23 787
    Points
    23 787
    Par défaut
    Bon alors voici une version vérifiée, la précédente est un bel exemple de code BUGGUÉ à mort. Je l'avais bien dit que les arrondis c'était pénible .

    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
    22
    23
    24
    25
    26
    Public Function Arrondi5c(prmValeur As Double) As Double
      Dim result As Double
      Dim partieEntiere As Double
      Dim partieDecimale As Double
      partieEntiere = Int(prmValeur)
      partieDecimale = prmValeur - partieEntiere
     
        If partieDecimale < 0.02 Then
            result = 0
        ElseIf 0.02 <= partieDecimale And partieDecimale < 0.07 Then
            result = .05
        ' Ajouter ici les tranches nécessaires pour aller de .05 à .35
        ElseIf 0.32 <= partieDecimale And partieDecimale < 0.37 Then
            result = 0.35 'Gère 1.36
        ElseIf 0.37 <= partieDecimale And partieDecimale < 0.42 Then
            result = 0.4 'Gére 1.38
        ' Ajouter ici les tranches nécessaires pour aller de .40 à .95
        ElseIf 0.92 <= partieDecimale And partieDecimale < 0.97 Then
            result = 0.95 'Gére 1.96
        ElseIf partieDecimale >= 0.97 Then
            result = 1   'Gére  1.98
        End If
     
      Arrondi5c = partieEntiere + result
     
    End Function
    Et je recommande de faire dans ta procédure Rabais__AfterUpdate

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.NomTonChampResultat=Arrondi5c(me.[Total HT]-(me.[Total HT]*(me.[Rabais%]/100)))
    le me. se réfère au formulaire courrant.

    Autre chose pour éviter les ennuis je recommande de n'utiliser pour les noms de champ que des lettres (majuscule, minuscule), des chiffres et des "_" si tu veux séparer des éléments.

    Les caractères spéciaux (comme ton %) ou les espaces peuvent provoquer pas mal de problème lors de l'interfaçage avec d'autres logiciels.

    Encore toutes mes excuses pour le gros tas de bugs postés précédement.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  8. #8
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 332
    Points : 23 787
    Points
    23 787
    Par défaut
    La technique de ClaudeLELOUP est bonne aussi mais comme toutes ces méthodes l'ajout d'une valeur peut avoir des effets d'arrondi au dessus indésirables.

    Il est important de savoir que les nombres réels ne sont pas représentés exactement en mémoire, ce sont toujours des approximations. Parfois tu as 4.9999999999999 au lieux de 5 et l'ajout d'une valeur même minime peux te faire passer dans la tranche supérieure.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  9. #9
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour marot_r,

    Merci pour ta remarque.
    C'est précisément la raison pour laquelle j'ajoute 2.49 et non 2.50 (moitié de l'arrondi).
    L'algo proposé fonctionne aussi pour des nombres négatifs
    Arrondir5cents(-1.41) donne -1.40
    par contre, méfie-toi
    Arrondi5c(-1.41) donne -2

    Je l'avais bien dit que les arrondis c'était pénible
    Je peux t'en parler : j'ai dû adapter la comptabilité lors du passage du franc belge (alors, sans décimale) à l'euro. Là, si le débit n'égale pas le crédit, tout se bloque ! C'est de là que vient l'algo.

    Le principe c'est
    1° neutraliser les automatismes d'arrondi d'Acces ---> je multiplie d'abord par 100
    2° ajouter la moitié de l'arrondi - un chouïa ---> ici 2.49 au lieu de 2.50
    3° trouver le multiple de (l'arrondi x 100) le plus proche du (montant d'origine x 100) --> la partie entière de la divison remultipliée par le diviseur.
    4° revenir à l'échelle de base ---> ici rediviser par 100.

    Bonne journée à tous.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 313
    Points : 73
    Points
    73
    Par défaut
    Bonjour et merci à vous deux.. j'ai deux solutions magnifique!

    Je voulais tester celle de claude mais ça bug quand j'essaie...

    Voici ou j'aimerais la mettre:


    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Private Sub Miseajour_Click()
    Me![Total HT] = [F_Contrats sous-formulaire].Form![Total_détail]
    Me![ETotalHT].Visible = True
    Me![Total HT].Visible = True
    Me![ERabais%].Visible = True
    Me![Rabais%].Visible = True
    Me![ERabaisfrancs].Visible = True
    Me![Rabaisfrancs].Visible = True
    Me![Total Rabais%].Visible = True
    Me![Rabaisfrancstotal].Visible = True
    Me![TotalFinal].Visible = True
    Me![ETotalfinal].Visible = True
    Me![Esommepayé].Visible = True
    Me![Sommepayé].Visible = True
    Me![Esolde].Visible = True
    Me![Solde].Visible = True
    Me![Paieauretour].Visible = True
    Me![Epaieauretour].Visible = True
    Me![CocherMastercard].Visible = True
    Me![EtiquetteMastercard].Visible = True
    Me![CocherECMaestro].Visible = True
    Me![ECMaestro].Visible = True
    Me![CocherVisa].Visible = True
    Me![EtiquetteVisa].Visible = True
    Me![CocherPostcard].Visible = True
    Me![ÉtiquettePostcard].Visible = True
    Me![CocherCash].Visible = True
    Me![EtiquetteCash].Visible = True
    Me![CocherBon].Visible = True
    Me![ÉtiquetteBon].Visible = True
    Me![CocherBV].Visible = True
    Me![ÉtiquetteBV].Visible = True
    Me![Imprimer].Visible = True
    Me![ÉtiquettePayéLe].Visible = True
    Me![PayéLe].Visible = True
    End Function
    Comment dois-je l'ajouter?

    Merci

  11. #11
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour,

    Pour tous les champs que tu veux arrondir, tu ajoutes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.LeNomDuChampAArrondir=Arrondir5cents(Me.LeNomDuChampAArrondir)
    NB. Si tu dois faire des sommes, tu dois d'abord arrondir chaque élément de la somme et ensuite faire ton addition.
    En effet, la somme des arrondis n'est pas égal à l'arrondi de la somme
    Exemple
    1.2354 + 2.6789 = 3.9143
    1.25 + 2.70 <> 3.90

    marot_r a raison :
    Ha les arrondis, tout un bonheur
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 313
    Points : 73
    Points
    73
    Par défaut
    Merci

    donc si j'ai bien compris... sur un clic d'un bouton, je mets ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Miseajour_Click()
    Me![Total HT] = [F_Contrats sous-formulaire].Form![Total_détail]
    Me![Total Rabais%] = Arrondir5cents(Me![Total Rabais%])
    end sub


    Et ou est-ce que je dois mettre ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Function Arrondir5cents(Montant As Double)
    Arrondir5cents = (Int((Montant * 100 + 2.49) / 5) * 5) / 100
    End Function

    d'avance merci car je suis perdu....

  13. #13
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Rabais%Total: [Total HT]-([Total HT]*([Rabais%]/100))
    Je ne connais le contexte de ton application.
    Mais si ceci marche :
    Rabais%Total: [Total HT]-([Total HT]*([Rabais%]/100))
    Alors, remplacé par ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Arrondir5cents([Total HT]-([Total HT]*([Rabais%]/100)))
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 313
    Points : 73
    Points
    73
    Par défaut
    Merci mais cette formule

    Rabais%Total: [Total HT]-([Total HT]*([Rabais%]/100))

    se situe dans une requête donc je pense que le Rabais%Total: est obligatoire! non?

    Et a quelle endroit dois-je copier cecei:


    Public Function Arrondir5cents(Montant As Double)
    Arrondir5cents = (Int((Montant * 100 + 2.49) / 5) * 5) / 100
    End Function

    Merci beaucoup

  15. #15
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Rabais%Total: [Total HT]-([Total HT]*([Rabais%]/100))
    C' est quoi ceci ? le champ d'une requête ?

    Si oui, remplace par :

    Rabais%Total: Arrondir5cents([Total HT]-([Total HT]*([Rabais%]/100)))
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 313
    Points : 73
    Points
    73
    Par défaut
    Oui exact! c'est ce que j'avais fait mais le problème, c'est que je ne sais pas ou mettre ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Function Arrondir5cents(Montant As Double)
    Arrondir5cents = (Int((Montant * 100 + 2.49) / 5) * 5) / 100
    End Function
    Merci beaucoup

  17. #17
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Excuse-moi, je n'ai pas compris la question.

    Tu dois introduire cela dans un module.
    Si ta DB n'en contient pas encore, clique sur Modules dans la fenêtre Access et sur Nouveau. Une fenêtre s'ouvre avec le texte :

    Option Compare Database
    Option Explicit


    Tu y ajoutes à la suite le code de la fonction.

    Lorsque tu sortiras de la DB, Access te proposera de sauver. Tu dis "Oui"
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2010
    Messages : 313
    Points : 73
    Points
    73
    Par défaut
    Ok super ça à l'air de marcher! Je vais faire quelques test... merci

  19. #19
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 332
    Points : 23 787
    Points
    23 787
    Par défaut
    Citation Envoyé par ClaudeLELOUP Voir le message
    Bonjour marot_r,

    Merci pour ta remarque.
    C'est précisément la raison pour laquelle j'ajoute 2.49 et non 2.50 (moitié de l'arrondi).
    L'algo proposé fonctionne aussi pour des nombres négatifs
    Arrondir5cents(-1.41) donne -1.40
    par contre, méfie-toi
    Arrondi5c(-1.41) donne -2


    Je peux t'en parler : j'ai dû adapter la comptabilité lors du passage du franc belge (alors, sans décimale) à l'euro. Là, si le débit n'égale pas le crédit, tout se bloque ! C'est de là que vient l'algo.

    Le principe c'est
    1° neutraliser les automatismes d'arrondi d'Acces ---> je multiplie d'abord par 100
    2° ajouter la moitié de l'arrondi - un chouïa ---> ici 2.49 au lieu de 2.50
    3° trouver le multiple de (l'arrondi x 100) le plus proche du (montant d'origine x 100) --> la partie entière de la divison remultipliée par le diviseur.
    4° revenir à l'échelle de base ---> ici rediviser par 100.

    Bonne journée à tous.
    Merci ClaudeLELOUP pour ton explication d'une grande clartée.

    Ça c'est vraiment une bonne histoire belge :-).

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  20. #20
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Ça c'est vraiment une bonne histoire belge
    Cette expression est passée de mode, une fois. Coluche est mort !
    Bonne journée.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Arrondir à 5 centimes
    Par Alexandre Sahli dans le forum IHM
    Réponses: 0
    Dernier message: 27/05/2011, 07h56
  2. Arrondir au centième inférieur ou supérieur
    Par Ggamer dans le forum Général Python
    Réponses: 7
    Dernier message: 21/08/2010, 18h35
  3. Arrondir un nombre au centième
    Par _LVEB_ dans le forum C++
    Réponses: 2
    Dernier message: 25/03/2007, 18h14
  4. Réponses: 7
    Dernier message: 03/02/2007, 13h09
  5. Arrondi a 5 centimes près
    Par krfa1 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 15/11/2005, 15h32

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