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 17/05/2011, 09h30   #1
Invité régulier
 
Inscription : mai 2011
Messages : 16
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 16
Points : 8
Points : 8
Par défaut Prise en compte du point avec la fonction cDouble

Bonjour à tous. Petite question toute bête,
je dois importer des données excel dans une table access, j'ai toute une fonction en vba qui s'en charge et elle fonctionne plutôt pas mal. SAUF dans un cas. Je vous explique en détail. Le champ que je remplis contient une valeur de type String. Seulement dans le cas d'une concentration, je ne dois avoir que des valeurs en µg/l pour mes futures comparaisons. Je procède donc comme ceci:
Code :
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
unit = oWSht.Cells(lig, c_unit)
'raw_conc est la valeur récupérée
If raw_conc Like "NR" Then
'dans certains cas on a des valeurs commençant par "<" exa=true signifie qu'on n'est pazs dans ce cas là (voir en dessous)
    exa = True
    final = raw_conc
Else
    If raw_conc Like "<*" Then
        exa = False
        Select Case True
            Case unit Like "*mg/l*"
                tmp = (CDbl(Mid(raw_conc, 2))) * 1000
                final = CStr(tmp)
 
            Case unit Like "*ng/l*"
                 tmp = (CDbl(Mid(raw_conc, 2))) / 1000
                final = CStr(tmp)
            Case unit Like "*µg/l*"
                final = Mid(raw_conc, 2)
            Case Not (unit Like "*mg/l*" Or unit Like "*ng/l*" Or unit Like "*µg/l*")
                final = raw_conc
        End Select
    Else
        exa = True
        Select Case True
           Case unit Like "*mg/l*"
                tmp = (CDbl(raw_conc)) * 1000
                final = CStr(tmp)
 
            Case unit Like "*ng/l*"
                 tmp = (CDbl(raw_conc)) / 1000
                final = CStr(tmp)
            Case unit Like "*µg/l*"
                final = raw
            Case Not (unit Like "*mg/l*" Or unit Like "*ng/l*" Or unit Like "*µg/l*")
                final = raw_conc
Bien le problème est le suivant. Dans la feuille excel, les valeurs décimales sont tantôt écrites avec un point, tantot avec une virgule. CDouble ne fonctionne qu'avec une virgule...
Si quelqu'un a une idée
shuggy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2011, 10h35   #2
Invité régulier
 
Inscription : mai 2011
Messages : 16
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 16
Points : 8
Points : 8
A question bête...
Suffisait d'utiliser la fonction replace
j'envoie ma solution si jamais quelqu'un en avait besoin un de ces jours
Code :
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
48
49
If raw_conc Like "NR" Or raw_conc Like "" Then
    exa = True
    final = "NR"
Else
    If raw_conc Like "<*" Then
        exa = False
        Select Case True
            Case unit Like "*mg/l*"
                raw_conc = Mid(raw_conc, 2)
                 raw_conc = Replace(raw_conc, ".", ",")
                tmp = (CDbl(raw_conc)) * 1000
                final = CStr(tmp)
 
            Case unit Like "*ng/l*"
                 raw_conc = Mid(raw_conc, 2)
                 raw_conc = Replace(raw_conc, ".", ",")
                 tmp = (CDbl(raw_conc)) / 1000
                final = CStr(tmp)
            Case unit Like "*µg/l*"
                raw_conc = Mid(raw_conc, 2)
                 raw_conc = Replace(raw_conc, ".", ",")
 
                final = raw_conc
            Case Not (unit Like "*mg/l*" Or unit Like "*ng/l*" Or unit Like "*µg/l*")
 
                final = raw_conc
        End Select
    Else
        exa = True
        Select Case True
           Case unit Like "*mg/l*"
                raw_conc = Replace(raw_conc, ".", ",")
                tmp = (CDbl(raw_conc)) * 1000
                final = CStr(tmp)
 
            Case unit Like "*ng/l*"
                raw_conc = Replace(raw_conc, ".", ",")
                 tmp = (CDbl(raw_conc)) / 1000
                final = CStr(tmp)
            Case unit Like "*µg/l*"
                 raw_conc = Replace(raw_conc, ".", ",")
                final = raw_conc
            Case Not (unit Like "*mg/l*" Or unit Like "*ng/l*" Or unit Like "*µg/l*")
                 raw_conc = Replace(raw_conc, ".", ",")
                final = raw_conc
 
        End Select
    End If
End If
shuggy 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 13h36.


 
 
 
 
Partenaires

Hébergement Web