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 07/06/2011, 15h33   #1
Membre du Club
 
Homme Jérémy B-ACD-AD- IJ
Étudiant
Inscription : avril 2011
Messages : 106
Détails du profil
Informations personnelles :
Nom : Homme Jérémy B-ACD-AD- IJ
Âge : 21
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 106
Points : 52
Points : 52
Par défaut conversion string double

Bonjour,

J'ai des valeurs numériques au format String et j'ai besoins de les aditionner.
Je n'arrive pas à convertir les string en double... J'ai parcouru le net pour m'aider, idem ...

Pouvez vous m'aider svp !
pikameuh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2011, 15h41   #2
Membre Expert
 
Homme Frédéric
Développeur informatique
Inscription : juin 2009
Messages : 944
Détails du profil
Informations personnelles :
Nom : Homme Frédéric
Localisation : France, Vosges (Lorraine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juin 2009
Messages : 944
Points : 1 249
Points : 1 249
Bonjour
Le problème rencontré n'est pas assez détaillé (code utilisé, message d'erreur,..).

N'hésites pas à mettre ton code utilisé avec un exemple de données contenues dans le String
__________________
Frédéric
Développeur d'Applications Access
fgiambelluco est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2011, 17h01   #3
Membre du Club
 
Homme Jérémy B-ACD-AD- IJ
Étudiant
Inscription : avril 2011
Messages : 106
Détails du profil
Informations personnelles :
Nom : Homme Jérémy B-ACD-AD- IJ
Âge : 21
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 106
Points : 52
Points : 52
Ba en faite, je récupère un String (qui contient un nombre)

Je voudrais additionner ses nombres. Mon code :

Code :
1
2
3
4
If (Me.ListeResultat.Column(7, i) = "E-TRONCO") Or (Me.ListeResultat.Column(7, i) = "A-COLLEC") Then
            temp = Me.ListeResultat.Column(5, i)
            varP = varP + Cdbl(temp)
            varP = StringtoDouble(varP)
Mais ça ne marche pas.
pikameuh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 05h18   #4
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 616
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 616
Points : 30 961
Points : 30 961
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Quelques explications dans ton code sont nécessaires :

Comment est déclaré temp ?
Que renvoies Me.ListeResultat.Column(5, i) ?
Comment est déclaré VarP ?
C'est quoi cette fonction StringtoDouble ?

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 08h22   #5
Membre du Club
 
Homme Jérémy B-ACD-AD- IJ
Étudiant
Inscription : avril 2011
Messages : 106
Détails du profil
Informations personnelles :
Nom : Homme Jérémy B-ACD-AD- IJ
Âge : 21
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 106
Points : 52
Points : 52
Pour les variables :

Code :
1
2
3
4
5
6
Private Sub TotauMaj()
    Dim totLigne, varP, varD, varTest As Double
    Dim i As Long
    Dim temp As Variant
    Dim pos As Integer
    Dim strTemp As Variant
Citation:
Que renvoies Me.ListeResultat.Column(5, i) ?
ça renvoi la valeur de la colonne 5, ligne i de ma listeResultat

Citation:
C'est quoi cette fonction StringtoDouble ?
c'est la fonctio que je suis en train de coder car je ne trouve pas de fonction faisant le travail.

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
Public Function StringtoDouble(str)
    ' Declarer les variables
    Dim result, temp, comp, nbZ As Double
    Dim i, j As Integer
 
    ' Determiner le nombre d'entier
    comp = InStr(str, ".")
    If (comp = 0) Then
         comp = InStr(str, ",")
    End If
 
temp = 1
    ' Determiner les cas où il y a une partie decimale
    If (comp <> 0) Then
        ' Nombre de chiffre dans la partie entiere
        For i = 1 To comp - 2
            temp = temp * 10
        Next
        ' Premier caractere entier
        nbZ = temp
        temp = temp * Mid(str, 1, 1)
        ' Reste de la partie entiere
        For i = 2 To comp - 1
            nbZ = nbZ / 10
            temp = temp + (nbZ * Mid(str, i, 1))
        Next
        ' Partie decimale
        temp = temp + (Mid(str, comp + 1, 2) / 100)
 
    ' Determiner les cas où il n'y a pas de partie decimale
    Else
        ' Nombre de chiffre dans la partie entiere
        For i = 1 To Len(str) - 1
            temp = temp * 10
        Next
        ' Premier caractere entier
        nbZ = temp
        temp = temp * Mid(str, 1, 1)
        ' Reste de la partie entiere
        For i = 2 To Len(str)
            nbZ = nbZ / 10
            temp = temp + (nbZ * Mid(str, i, 1))
        Next
    End If
 
    StringtoDouble = temp
End Function
ça marche a peu prés bien, mais des fois j'ai des problème d'arrondie assez génant du genre : XX,XX + YY,YY = ZZ,ZZZZZZZZZZZZZZZZ ...
pikameuh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 13h40   #6
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 650
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 650
Points : 6 209
Points : 6 209
Envoyer un message via MSN à argyronet
Bonjour,

Pour faire plus simple... voici une autre version :
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
 
Public Function StringToDouble(ByVal StringValue As String) As Double
Dim strDecSep                                               As String
Dim dblResult                                               As Double
Dim intChar                                                 As Integer
 
    On Error GoTo L_ErrStringToDouble
    'Suppression des éventuels espaces
    StringValue = Trim$(Replace(StringValue, Chr(32), vbNullString))
    'définition du séparateur de décimales du système
    strDecSep = Mid$(1 / 2, 2, 1)
    'affectation du code ASCII
    intChar = Asc(strDecSep)
    'si le string n'est pas un nombre... (on est pessimiste par principe)
    If IsNumeric(StringValue) = False Then
        If intChar = 44 Then
            'on force avec un point
            intChar = 46
        Else
            'on force avec une virgule
            intChar = 44
        End If
        'on remplace alors la chaîne nombre avec le séparateur correspondant
        StringValue = Replace(StringValue, Chr(intChar), strDecSep)
    End If
    'on convertit alors en double (on part du principe que StringValue est un nombre)
    dblResult = CDbl(StringValue)
 
    On Error GoTo 0
L_ExStringToDouble:
    'la fonction prend alors la valeur trouvée
    StringToDouble = dblResult
    Exit Function
 
L_ErrStringToDouble:
    dblResult = 0
    Resume L_ExStringToDouble
End Function
Argy
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/06/2011, 14h11   #7
Membre du Club
 
Homme Jérémy B-ACD-AD- IJ
Étudiant
Inscription : avril 2011
Messages : 106
Détails du profil
Informations personnelles :
Nom : Homme Jérémy B-ACD-AD- IJ
Âge : 21
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 106
Points : 52
Points : 52
Ouah! ça marche nickel. Cependant je ne comprends pas tout dans ton code.

Merci tout de même !!
pikameuh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 15h11   #8
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 650
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 650
Points : 6 209
Points : 6 209
Envoyer un message via MSN à argyronet
pikameuh, j'ai commenté le code...

++

Argy
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 15h20   #9
Membre du Club
 
Homme Jérémy B-ACD-AD- IJ
Étudiant
Inscription : avril 2011
Messages : 106
Détails du profil
Informations personnelles :
Nom : Homme Jérémy B-ACD-AD- IJ
Âge : 21
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 106
Points : 52
Points : 52
c'est vraiment cool de ta part !
pikameuh 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 20h37.


 
 
 
 
Partenaires

Hébergement Web