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 !![]()
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 !![]()
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
Ba en faite, je récupère un String (qui contient un nombre)
Je voudrais additionner ses nombres. Mon code :
Mais ça ne marche pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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)
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
Pour les variables :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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ça renvoi la valeur de la colonne 5, ligne i de ma listeResultatQue renvoies Me.ListeResultat.Column(5, i) ?
c'est la fonctio que je suis en train de coder car je ne trouve pas de fonction faisant le travail.C'est quoi cette fonction StringtoDouble ?
ç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 ...
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 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
Bonjour,
Pour faire plus simple... voici une autre version :
Argy
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 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
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.
Ils comptent sur vous...
Web Site ‡ @Mail
Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
MDB Viewer : Visionneuse Access v4.0
Partager