Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/12/2011, 16h54   #1
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : novembre 2011
Messages : 32
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2011
Messages : 32
Points : 12
Points : 12
Par défaut Pb décimal arrondi

Bonjour , voila mon problème , je viens de passer 2h30 a chercher pourquoi ma fonction INSERT INTO ne fonctionner pas et j'ai vu que le résultat d'un de mes calcul , donner des décimales , alors sa me compter pour des champs supplémentaire...
J'ai beau cherché mais je ne trouve pas de propriété pour arrondir au supérieur ou tout simplement enlever les décimales.

Code :
1
2
Nbcolis = TexteColis
TexteColisqte = Nbcolis * 0.05
voici mon calcul , meme si sa ne doit pas être d'un grande utilité.
Dans le formulaire la case est déclaré fixe avec 0 décimal , de même que dans ma table.
juice est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 16h59   #2
Membre Expert
 
Avatar de nico84
 
Homme Nicolas Guimbal
Consultant/développeur ERP
Inscription : mai 2008
Messages : 1 258
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Guimbal
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant/développeur ERP
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2008
Messages : 1 258
Points : 1 877
Points : 1 877
Bonsoir,

Il faut forcer la conversion au standard américain qui utilise le point décimal et non la virgule...

J'utilise pour cela la fonction suivante :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
'NG 14/10/08 convertit un nombre réel pour écrire dans un insert (n = nombre de décimales)
Public Function Num(r, Optional n As Integer = 0)
If Not Mode_debug Then On Error GoTo err:
Dim f As String, T As String
Dim i As Integer, x As Double
100 If n <= 0 Then f = "0" Else f = "0."
102 For i = 1 To n
104   f = f & "0"
    Next
106 If IsNumeric(r) Then
108   Num = Replace(Format(r, f), ",", ".")
    Else
110   Num = 0
    End If
    Exit Function
err: Call message("Erreur " & err.Number & "/" & Erl & " dans fonctions.Num : " & err.description)
End Function
nico84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 17h15   #3
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : novembre 2011
Messages : 32
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2011
Messages : 32
Points : 12
Points : 12
Je te remercie pour ta réponse rapide,
Au risque de paraitre bête comment je fais appel à la fonction ? si je veux l'utiliser dans une private sub.
juice est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 18h33   #4
Membre Expert
 
Avatar de nico84
 
Homme Nicolas Guimbal
Consultant/développeur ERP
Inscription : mai 2008
Messages : 1 258
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Guimbal
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant/développeur ERP
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2008
Messages : 1 258
Points : 1 877
Points : 1 877
Il faut la mettre dans un module pour pouvoir l'appeler simplement dans un insert :
Code :
1
2
3
4
114   Sr = "INSERT INTO FC (cd_fc,cd_tiers,date_fac,date_paie,date_saisie,qui,HT,TTC,code3,taux,HT_eur,tva_enc,zone,cd_cond) VALUES (" _
      & fc & "," & cd_tiers & ",'" & DATE & "','" & Get_echeance(n, DATE) & "','" & Now & "','" & User_init & "'," _
      & Num(HT, 2) & "," & Num(TTC, 2) & ",'EUR',1," & Num(HT, 2) & "," & tva_enc & ",'" & zone & "'," & n & ");"
116   CurrentDb.Execute Sr, dbFailOnError
nico84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 10h47   #5
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : novembre 2011
Messages : 32
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2011
Messages : 32
Points : 12
Points : 12
Merci mille fois , grâce a ta propriété ( que je me suis empresser d'enregistrer sur un bloc note), mon projet dans cette entreprise est finie, en plus je viens d'apprendre l'existence des modules lol.
En tout cas sa fonctionne nikel j'ai juste du enlever le " call " et le " GoTo " et rajouter un End if.
Je remet le code tel qu'il marche chez moi :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Public Function Num(r, Optional n As Integer = 0)
If Not Mode_debug Then
Dim f As String, T As String
Dim i As Integer, x As Double
 If n <= 0 Then f = "0" Else f = "0."
 For i = 1 To n
   f = f & "0"
    Next
 If IsNumeric(r) Then
   Num = Replace(Format(r, f), ",", ".")
    Else
   Num = 0
    End If
    Exit Function
    End If
End Function
juice est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2011, 11h00   #6
Membre Expert
 
Avatar de nico84
 
Homme Nicolas Guimbal
Consultant/développeur ERP
Inscription : mai 2008
Messages : 1 258
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Guimbal
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant/développeur ERP
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2008
Messages : 1 258
Points : 1 877
Points : 1 877
Mon module a une gestion d'erreur intégrée (qui appelle la fonction message sauf en mode "debug"). Si tu veux tout enlever :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
Public Function Num(r, Optional n As Integer = 0)
Dim f As String, i As Integer
 If n <= 0 Then f = "0" Else f = "0."
 For i = 1 To n
   f = f & "0"
    Next
 If IsNumeric(r) Then
   Num = Replace(Format(r, f), ",", ".")
    Else
   Num = 0
    End If
End Function
Je m'aperçois d'ailleurs que T et x ne sont plus utilisés
nico84 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h11.


 
 
 
 
Partenaires

Hébergement Web