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

Access Discussion :

VBA Access Arrondir


Sujet :

Access

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 6
    Points : 6
    Points
    6
    Par défaut VBA Access Arrondir
    Bonjour,

    Dans l'utilisation de la fonction Round, il est dit qu'elle s'écrit : Round(Nombre, nb de decimal ...). Pour le premier paramêtre est ce obligatoirement un nombre ?

    Est ce possible par exemple de faire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TotalH = Round((Me!Nbchevre + (Me!NbPoule - Me!NbRenard)), 2)
    
    Ou bien : Me!Valo_Eur = Round((CalculVal(Me!year, Me!animaux, TotalH)),2)
    Sachant que CalculVal est une fonction.

    Sinon comment puis je faire pour calculer l'arrondi des nombres renvoyés par ce code ?

    Merci d'avance.

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonjour,

    Est-ce que vous avez regardé l'aide sur la fonction Round ?
    Effectivement l'argument doit être une expression numérique.

    Maintenant, la question que je me pose : Est-ce que vous avez essayé et ça ne marche pas?
    Parce que votre message n'est pas trop clair.

    Essayez!Essayez!Essayez!

    Bonne continuation
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    J'ai essayé plein de fois. Mais n'existe t-il pas une fonction pour arrondir avec une variable en paramêtre ?

  4. #4
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Qu'est-ce que vous entendez par variable en paramètre? et quel est le contexte parce que je suis perdu
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  5. #5
    Membre régulier
    Femme Profil pro
    emploi
    Inscrit en
    Mars 2014
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : emploi

    Informations forums :
    Inscription : Mars 2014
    Messages : 138
    Points : 99
    Points
    99
    Par défaut
    Bonjour,


    Je n'ai moi même pas trop compris le fond de la question;
    néanmoins voici un code qui m'a été donné par un membre du forum et qui m'a bien aidé:
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    Public Function ArrondirUnMontant(Prix As Double, Pas As Double, _
                              Optional BorneSuperieure As Boolean) As Double
     ' ex utilisation        ?  ArrondirUnMontant(-13.50,1,True) --> -14
     '                       ?  ArrondirUnMontant(-13.50,1) --> -13
    Dim intPuissance As Integer, tblBornes(2) As Double, intInverserSigne As Integer
       ' le pas d'arrondissage est-il cohérent ?
    Select Case Pas
       Case Is <= 0  '--> d'office incohérent
           MsgBox "un arrondi à " & Pas & " n'est pas cohérent", vbCritical, "ArrondirUnMontant( )"
           Exit Function
       Case Is < 1 '--> le Pas d'arrondissage doit être diviseur de 1
           If Int(1.0000001 / Pas) * Pas <> 1 Then 'nb une chouïa en plus pour contrer
               MsgBox "un arrondi à " & Pas & " n'est pas cohérent", vbCritical, "ArrondirUnMontant( )"
               Exit Function
           End If
       Case Else
           'le Pas doit être un diviseur de la puissance de 10 immédiatement supérieure
           'nbre de chiffres de la partie entière du pas d'arrondissage
           intPuissance = Len(CStr(Int(Pas)))
           If (Int(((10 ^ intPuissance) + 0.000001) / Pas)) * Pas <> (10 ^ intPuissance) Then
               MsgBox "un arrondi à " & Pas & " n'est pas cohérent", vbCritical, "ArrondirUnMontant( )"
               Exit Function
           End If
    End Select
       'Algorithme d'arrondissage
    If Prix > 0 Then intInverserSigne = 1 Else intInverserSigne = -1
    Prix = Prix * intInverserSigne
    tblBornes(0) = Int(Prix / Pas) * Pas
    tblBornes(1) = tblBornes(0) + Pas
       'choix de la borne
    If BorneSuperieure = False Then
        If Prix - tblBornes(0) <= tblBornes(1) - Prix Then  'choix du plus petit écart
              ArrondirUnMontant = tblBornes(0)                 'borne inf si équidistance
        Else
              ArrondirUnMontant = tblBornes(1)
        End If
    Else
        If Prix - tblBornes(0) < tblBornes(1) - Prix Then  'choix du plus petit écart
              ArrondirUnMontant = tblBornes(0)                 'borne sup si équidistance
        Else
              ArrondirUnMontant = tblBornes(1)
        End If
     
    End If
       'rétablir le signe
    ArrondirUnMontant = ArrondirUnMontant * intInverserSigne
    End Function
    Je pense que ceci devrait faire l'affaire avec les explications dans le code.


    Bonne continuation.

  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 : 282 192
    Points
    282 192
    Par défaut
    Bonjour,

    ... voici un code qui m'a été donné par un membre du forum et qui...
    ... vous salue !

    Plus d'explications ici : http://www.developpez.net/forums/d97...arrondir-prix/
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/06/2005, 15h37
  2. Réponses: 4
    Dernier message: 19/05/2005, 11h51
  3. Réponses: 4
    Dernier message: 16/04/2005, 16h54
  4. [VBA] Access-> Excel Format de cellule
    Par toflofr dans le forum VBA Access
    Réponses: 19
    Dernier message: 31/07/2003, 14h26

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