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

VBA Access Discussion :

conversion string double [AC-2003]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 116
    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 !

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Par défaut
    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

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 116
    Par défaut
    Ba en faite, je récupère un String (qui contient un nombre)

    Je voudrais additionner ses nombres. Mon code :

    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)
    Mais ça ne marche pas.

  4. #4
    Invité
    Invité(e)
    Par défaut
    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

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 116
    Par défaut
    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
    Que renvoies Me.ListeResultat.Column(5, i) ?
    ça renvoi la valeur de la colonne 5, ligne i de ma listeResultat

    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 : 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
    ç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 ...

  6. #6
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 133
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Pour faire plus simple... voici une autre version :
    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
    Argy
    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

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

Discussions similaires

  1. Conversion String -> Double
    Par lahmar.abdel1 dans le forum Langage
    Réponses: 6
    Dernier message: 16/04/2013, 12h13
  2. Conversion String -> double
    Par amel12 dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/08/2008, 18h36
  3. Réponses: 7
    Dernier message: 28/02/2008, 16h56
  4. La Conversion String-->Double
    Par jejermoa dans le forum Langage
    Réponses: 3
    Dernier message: 07/05/2007, 09h55
  5. conversion string en double
    Par zmatz dans le forum SL & STL
    Réponses: 2
    Dernier message: 14/10/2005, 22h46

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