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 :

separer valeur decimale de valeur entiere


Sujet :

Access

  1. #1
    EE
    EE est déconnecté
    Membre habitué Avatar de EE
    Inscrit en
    Avril 2005
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 207
    Points : 133
    Points
    133
    Par défaut separer valeur decimale de valeur entiere
    bonjour
    je voudrais séparer par une fonction (que je n'ai pas trouvée) la valeur décimale de la valeur entiere d'in nombre réel double
    ex 1.42
    avoir
    x= 1
    y = 42

    Merci
    S'enrichir c'est partager le savoir

  2. #2
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Int retourne la partie entière. La partie décimale est égale au nombre moins sa partie entière, on a donc facilement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim N As Double
    N = 2.322001
    MsgBox N - Int(N)
    Ceci dit, pour que cela fonctionne aussi avec N négatif, il faut utiliser la fonction Fix à la place de Int. En effet, Int(-2.9) retourne 3 alors que Fix(-2.9) retourne 2.

    Citation Envoyé par L'aide
    Différence entre les fonctions Int et Fix : si number est négatif, Int renvoie le premier entier négatif inférieur ou égal à number, alors que Fix renvoie le premier entier négatif supérieur ou égal à number. Par exemple, Int convertit -8,4 en -9 et Fix convertit -8,4 en -8.
    Ce qui donne donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim N As Double
    N = -2.9
    MsgBox Abs(N - Fix(N))
    Abs permet de retourner un résultat toujours positif

  3. #3
    EE
    EE est déconnecté
    Membre habitué Avatar de EE
    Inscrit en
    Avril 2005
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 207
    Points : 133
    Points
    133
    Par défaut
    tujours fidèle au poste !!!!
    merci beaucoup
    je vérifie avec ma fonction case et je te tiens au courant
    merci encore
    S'enrichir c'est partager le savoir

  4. #4
    EE
    EE est déconnecté
    Membre habitué Avatar de EE
    Inscrit en
    Avril 2005
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 207
    Points : 133
    Points
    133
    Par défaut
    precision jsuqu'au bout ..... pas de valeur négative pour moi mais merci pour tous les autres qui piochent dans ce forum
    S'enrichir c'est partager le savoir

  5. #5
    EE
    EE est déconnecté
    Membre habitué Avatar de EE
    Inscrit en
    Avril 2005
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 207
    Points : 133
    Points
    133
    Par défaut
    j'ai posé ma fonction dans mon module .... ca fonctionne pas semble t-il
    est un probleme avec mon interval ???

    Public Function hsuparrondi(hsup As Double)
    ' fonction d'arrondi pour les mn tous les 15mn sue l'échelle de 100 soit 0.25 0.50 0.75

    Dim hsupentier As Integer ' valeur de l'unité
    Dim valdec As Integer ' valeur de la décimale arrondie

    hsupentier = Int(hsup)
    hsupdecimal = hsup - Int(hsup)

    Select Case hsupdecimal

    Case "0.1" To "0.25"
    valdec = 0

    Case "0.26" To "0.49"
    valdec = 0.25

    Case "0.50" To "0.74"
    valdec = 0.5

    Case "0.75" To "0.99"
    valdec = 0.75
    End Select

    hsuparrondi = valdec + hsupentier

    End Function
    S'enrichir c'est partager le savoir

  6. #6
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Oublie pas les balises de code

    Le problème vient effectivement du Select case

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Function hsuparrondi(hsup As Double)
    ' fonction d'arrondi pour les mn tous les 15mn sue l'échelle de 100 soit 0.25 0.50 0.75
     
    Dim hsupentier As Integer ' valeur de l'unité
    Dim valdec As Integer ' valeur de la décimale arrondie
    Dim hsupdecimal As Double
    hsupentier = Int(hsup)
    hsupdecimal = hsup - Int(hsup)
    hsuparrondi = hsupentier + ((hsupdecimal * 100 \ 25)) * 0.25
    End Function
    Ce qui revient en une ligne à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Function hsuparrondi(hsup As Double)
    hsuparrondi = Int(hsup) + ((hsup - Int(hsup)) * 100 \ 25) * 0.25
    End Function

  7. #7
    EE
    EE est déconnecté
    Membre habitué Avatar de EE
    Inscrit en
    Avril 2005
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 207
    Points : 133
    Points
    133
    Par défaut
    gloups .... pour les balises

    comment est ce que la fonction fait pour arrondir selon les valeurs que j'avais mis dans les CASE
    epux tu m'expliquer à quel niveau tu considères la valeur de l'arrondi
    dans le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((hsup - Int(hsup)) * 100 \ 25) * 0.25
    merci
    S'enrichir c'est partager le savoir

  8. #8
    EE
    EE est déconnecté
    Membre habitué Avatar de EE
    Inscrit en
    Avril 2005
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 207
    Points : 133
    Points
    133
    Par défaut
    je viens de tester sur une valeur 0.40 et il me donne 0.25 au lieu de 0.50(demi heure sur une base de 100)
    S'enrichir c'est partager le savoir

  9. #9
    EE
    EE est déconnecté
    Membre habitué Avatar de EE
    Inscrit en
    Avril 2005
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 207
    Points : 133
    Points
    133
    Par défaut
    j'ai revérifié le script et j'ai la meme erreur l'arrondi ne se fait pas dans les bonnes tranches, dois je revenir à une fonction case???
    merci
    S'enrichir c'est partager le savoir

  10. #10
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Citation Envoyé par EE
    je viens de tester sur une valeur 0.40 et il me donne 0.25 au lieu de 0.50(demi heure sur une base de 100)
    Si je te cite :

    Case "0.26" To "0.49"
    valdec = 0.25
    Mon arrondi est donc tout à fait correct à tes espérances

    Si toutefois, tu veux arrondir au supérieur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    hsuparrondi = Int(hsup) + ((hsup - Int(hsup)) * 100 \ 25 + 1) * 0.25

  11. #11
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    Mars 2005
    Messages
    511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : Mars 2005
    Messages : 511
    Points : 678
    Points
    678
    Par défaut
    bonjour

    il y a même encore plus simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    round(monNombre/.25,0)*.25
    ce qui arrondi tout les .25

  12. #12
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Citation Envoyé par Alexandre Sahli
    bonjour

    il y a même encore plus simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    round(monNombre/.25,0)*.25
    ce qui arrondi tout les .25
    A condition de disposer de la fonction Round

  13. #13
    EE
    EE est déconnecté
    Membre habitué Avatar de EE
    Inscrit en
    Avril 2005
    Messages
    207
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 207
    Points : 133
    Points
    133
    Par défaut
    merci à tous je vais tester

    Mille excuses pour Tofalu ...t u as raison concernant mes valeurs de case
    je vais tester avec une autre valeur ... gloups
    S'enrichir c'est partager le savoir

  14. #14
    Membre éclairé
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Points : 733
    Points
    733
    Par défaut
    ou encore encoure polus simple...

    Tu prend ton nombre en string et tu fais un split:

    2.45
    -2.69
    2.0
    6.3

    x=split(nombre,".")(0) = partie entière
    y=split(nombre,".")(1) = partie décimale
    N'oubliez pas de mettre le

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/02/2014, 13h28
  2. Réponses: 11
    Dernier message: 29/11/2005, 16h01
  3. Réponses: 18
    Dernier message: 15/11/2005, 10h13
  4. Réponses: 3
    Dernier message: 07/10/2005, 09h34
  5. Problème avec une valeur decimale
    Par vbcasimir dans le forum Linux
    Réponses: 3
    Dernier message: 12/07/2005, 11h00

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