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

Macros et VBA Excel Discussion :

Problème nombres décimaux dans combobox [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2015
    Messages
    211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2015
    Messages : 211
    Par défaut Problème nombres décimaux dans combobox
    Bonjour à toutes et à tous,


    J'ai une TextBox1 qui vaut 3 ou 6 suivant certaines conditions.
    Ma TextBox 2 vaut 10 ou 20 suivant certaines conditions et sera à comparer avec la TextBox3.

    La TextBox3 correspond au total de 5 ComboBox.

    Voici mon programme :





    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
    Private Sub ComboBox1_Change()
    TextBox3 = val(TextBox1) + val(ComboBox1) + val(ComboBox2) + val(ComboBox3) + val(ComboBox4) + val(ComboBox5)
    End Sub
    Private Sub ComboBox2_Change()
    TextBox3 = val(TextBox1) + val(ComboBox1) + val(ComboBox2) + val(ComboBox3) + val(ComboBox4) + val(ComboBox5)
    End Sub
    Private Sub ComboBox3_Change()
    TextBox3 = val(TextBox1) + val(ComboBox1) + val(ComboBox2) + val(ComboBox3) + val(ComboBox4) + val(ComboBox5)
    End Sub
    Private Sub ComboBox4_Change()
    TextBox3 = val(TextBox1) + val(ComboBox1) + val(ComboBox2) + val(ComboBox3) + val(ComboBox4) + val(ComboBox5)
    End Sub
    Private Sub ComboBox5_Change()
    TextBox3 = val(TextBox1) + val(ComboBox1) + val(ComboBox2) + val(ComboBox3) + val(ComboBox4) + val(ComboBox5)
    End Sub

    Voici mon problème :
    La fonction "val" ne prend pas en compte les nombres décimaux comme 1,5 par exemple. Seule la partie entière est prise en compte.

    Je vous remercie d'avance pour vos réponses.

    Novice72

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    Extrait de l'aide sur la méthode val

    La fonction Val arrête la lecture de la chaîne au premier caractère qu'elle ne reconnaît pas comme faisant partie d'un nombre. Elle ne reconnaît pas les symboles et les caractères fréquemment associées aux valeurs numériques comme le signe dollar et la virgule
    A mon avis, sachant que tes zones de texte vont s'additionner, celles-ci seront transformées en valeurs numériques.
    Idem quand on ajoute 0 ou * par 1.
    Donc utiliser val semble inutile.
    A tester

    Enfin, essaie d'utiliser si possible les modules de classe pour gérer ces - mêmes - éléments.

  3. #3
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Remplacer Val par CDbl.
    Attention erreur si vide, donc tester d'abord...

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    CDbl prend en compte le paramètres régionaux et pas val.

    Val(1.2) ok CDbl(1,2) ko si la virgule est un point dans les paramètres régionaux. Deplus ça ne changera rien si le numberformat de a cellule est texte,date etc...

    I l faut formater la cellule en générique (numberformat) avant de lui fournir une valeur numérique avec un replace("1,2",",",".")

  5. #5
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Salut Robert,

    Voici comment je procède habituellement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
       TextBox1.Value = Replace(TextBox1.Value, ",", Application.DecimalSeparator)
       TextBox1.Value = Replace(TextBox1.Value, ".", Application.DecimalSeparator)
       If TextBox1.Text <> "" Then 
           TextBox2.Value = CDbl(TextBox1.Value)
       End If

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour pijaku,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub ComboBox1_Change()
    additionner
    End Sub
    Sub additionner()
    Dim T as double 
    For i =1 to 5
    T=T + val(replace(me.controls("TextBox" & i),",","."))
    Next
    TextBox3=T
    End Sub
    Ce qui m'échappes dans le code original c'est que TextBox1 est sommé deux fois et que TextBox3 reçoit les 5 TextBox dont elle même ???

  7. #7
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour à vous,

    J'avais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Cbx_test_1_change()
     
    Dim i As Byte
    Dim lasomme As Double
    lasomme = 0
    For i = 1 To 5
          If IsNumeric(Controls("Cbx_test_" & i)) Then _
                lasomme = lasomme + CDbl(Controls("Cbx_test_" & i))
    Next i
    If IsNumeric(Txt_test_1.Value) Then _
          lasomme = lasomme + CDbl(Txt_test_1)
    Txt_test_3.Value = lasomme
     
    End Sub

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour

    pas testé mais ca devrait etre une chose comme ca
    ce code
    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
    Private Sub ComboBox1_Change()
        TextBox3 = Val(TextBox1) + Val(combobox1) + Val(combobox2) + Val(combobox3) + Val(combobox4) + Val(ComboBox5)
    End Sub
    Private Sub ComboBox2_Change()
        TextBox3 = Val(TextBox1) + Val(combobox1) + Val(combobox2) + Val(combobox3) + Val(combobox4) + Val(ComboBox5)
    End Sub
    Private Sub ComboBox3_Change()
        TextBox3 = Val(TextBox1) + Val(combobox1) + Val(combobox2) + Val(combobox3) + Val(combobox4) + Val(ComboBox5)
    End Sub
    Private Sub ComboBox4_Change()
        TextBox3 = Val(TextBox1) + Val(combobox1) + Val(combobox2) + Val(combobox3) + Val(combobox4) + Val(ComboBox5)
    End Sub
    Private Sub ComboBox5_Change()
        TextBox3 = Val(TextBox1) + Val(combobox1) + Val(combobox2) + Val(combobox3) + Val(combobox4) + Val(ComboBox5)
    End Sub
    'tu le remplace par ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub ComboBox1_Change(): le_compte_est_bon: End Sub
    Private Sub ComboBox2_Change(): le_compte_est_bon: End Sub
    Private Sub ComboBox3_Change(): le_compte_est_bon: End Sub
    Private Sub ComboBox4_Change(): le_compte_est_bon: End Sub
    Private Sub ComboBox5_Change(): le_compte_est_bon: End Sub
    Private Function le_compte_est_bon()
        Dim crit As Boolean
        crit = combobox1.ListIndex > 0 And combobox2.lisndex > 0 And combobox3.ListIndex > 0 And combobox4.ListIndex > 0
        If crit = True Then
            TextBox3 = WorksheetFunction.Sum(CDbl(Replace(combobox1.Value, ".", ",")), CDbl(Replace(combobox2.Value, ".", ",")), CDbl(Replace(combobox3.Value, ".", ",")), CDbl(Replace(combobox4.Value, ".", ",")))
        Else
            MsgBox "il manque une combo qui n'a pas eue de selection"
        End If
    End Function
    si l'index 0 de tes combo est utilisé par un chiffre remplacer ">0" par ">=0"
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #9
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2015
    Messages
    211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2015
    Messages : 211
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    bonjour

    pas testé mais ca devrait etre une chose comme ca
    ce code
    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
    Private Sub ComboBox1_Change()
        TextBox3 = Val(TextBox1) + Val(combobox1) + Val(combobox2) + Val(combobox3) + Val(combobox4) + Val(ComboBox5)
    End Sub
    Private Sub ComboBox2_Change()
        TextBox3 = Val(TextBox1) + Val(combobox1) + Val(combobox2) + Val(combobox3) + Val(combobox4) + Val(ComboBox5)
    End Sub
    Private Sub ComboBox3_Change()
        TextBox3 = Val(TextBox1) + Val(combobox1) + Val(combobox2) + Val(combobox3) + Val(combobox4) + Val(ComboBox5)
    End Sub
    Private Sub ComboBox4_Change()
        TextBox3 = Val(TextBox1) + Val(combobox1) + Val(combobox2) + Val(combobox3) + Val(combobox4) + Val(ComboBox5)
    End Sub
    Private Sub ComboBox5_Change()
        TextBox3 = Val(TextBox1) + Val(combobox1) + Val(combobox2) + Val(combobox3) + Val(combobox4) + Val(ComboBox5)
    End Sub
    'tu le remplace par ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub ComboBox1_Change(): le_compte_est_bon: End Sub
    Private Sub ComboBox2_Change(): le_compte_est_bon: End Sub
    Private Sub ComboBox3_Change(): le_compte_est_bon: End Sub
    Private Sub ComboBox4_Change(): le_compte_est_bon: End Sub
    Private Sub ComboBox5_Change(): le_compte_est_bon: End Sub
    Private Function le_compte_est_bon()
        Dim crit As Boolean
        crit = combobox1.ListIndex > 0 And combobox2.lisndex > 0 And combobox3.ListIndex > 0 And combobox4.ListIndex > 0
        If crit = True Then
            TextBox3 = WorksheetFunction.Sum(CDbl(Replace(combobox1.Value, ".", ",")), CDbl(Replace(combobox2.Value, ".", ",")), CDbl(Replace(combobox3.Value, ".", ",")), CDbl(Replace(combobox4.Value, ".", ",")))
        Else
            MsgBox "il manque une combo qui n'a pas eue de selection"
        End If
    End Function
    si l'index 0 de tes combo est utilisé par un chiffre remplacer ">0" par ">=0"
    Merci à tous.
    Pour PatrickToulon,
    Je viens d'essayer ton code. Le problème est qu'il ne fait pas le total sur le TextBox3 comme je l'aurais souhaité. Il ne fait aucun total ( textbox3 vide )
    De plus, à peine l'userform ouvert, le message apparait ( message qui dit une combo n'a pas eu de selection ).
    Ce message apparait à chaque fois que j'entre une valeur.
    Ceci me fait dire que je n'ai pas encore eu l'occasion de vérifier le problème des nombres décimaux.

    Encore merci.

    Novice72

  10. #10
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2015
    Messages
    211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2015
    Messages : 211
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    bonjour

    pas testé mais ca devrait etre une chose comme ca
    ce code
    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
    Private Sub ComboBox1_Change()
        TextBox3 = Val(TextBox1) + Val(combobox1) + Val(combobox2) + Val(combobox3) + Val(combobox4) + Val(ComboBox5)
    End Sub
    Private Sub ComboBox2_Change()
        TextBox3 = Val(TextBox1) + Val(combobox1) + Val(combobox2) + Val(combobox3) + Val(combobox4) + Val(ComboBox5)
    End Sub
    Private Sub ComboBox3_Change()
        TextBox3 = Val(TextBox1) + Val(combobox1) + Val(combobox2) + Val(combobox3) + Val(combobox4) + Val(ComboBox5)
    End Sub
    Private Sub ComboBox4_Change()
        TextBox3 = Val(TextBox1) + Val(combobox1) + Val(combobox2) + Val(combobox3) + Val(combobox4) + Val(ComboBox5)
    End Sub
    Private Sub ComboBox5_Change()
        TextBox3 = Val(TextBox1) + Val(combobox1) + Val(combobox2) + Val(combobox3) + Val(combobox4) + Val(ComboBox5)
    End Sub
    'tu le remplace par ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub ComboBox1_Change(): le_compte_est_bon: End Sub
    Private Sub ComboBox2_Change(): le_compte_est_bon: End Sub
    Private Sub ComboBox3_Change(): le_compte_est_bon: End Sub
    Private Sub ComboBox4_Change(): le_compte_est_bon: End Sub
    Private Sub ComboBox5_Change(): le_compte_est_bon: End Sub
    Private Function le_compte_est_bon()
        Dim crit As Boolean
        crit = combobox1.ListIndex > 0 And combobox2.lisndex > 0 And combobox3.ListIndex > 0 And combobox4.ListIndex > 0
        If crit = True Then
            TextBox3 = WorksheetFunction.Sum(CDbl(Replace(combobox1.Value, ".", ",")), CDbl(Replace(combobox2.Value, ".", ",")), CDbl(Replace(combobox3.Value, ".", ",")), CDbl(Replace(combobox4.Value, ".", ",")))
        Else
            MsgBox "il manque une combo qui n'a pas eue de selection"
        End If
    End Function
    si l'index 0 de tes combo est utilisé par un chiffre remplacer ">0" par ">=0"
    Bonsoir PatrickToulon,

    Il est vrai maintenant que je n'ai plus ce message qui s'affiche. Toutefois, le contenu de la textBox3 est toujours vide ( avec ou sans nombre décimaux ). Je ne peux donc dire si les nombres décimaux ont bien été pris en compte ( ou si seule la partie entière l'a été ).

    Encore Merci.


    Novice72

  11. #11
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2015
    Messages
    211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2015
    Messages : 211
    Par défaut
    Citation Envoyé par MarcelG Voir le message
    Bonjour à vous,

    J'avais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Cbx_test_1_change()
     
    Dim i As Byte
    Dim lasomme As Double
    lasomme = 0
    For i = 1 To 5
          If IsNumeric(Controls("Cbx_test_" & i)) Then _
                lasomme = lasomme + CDbl(Controls("Cbx_test_" & i))
    Next i
    If IsNumeric(Txt_test_1.Value) Then _
          lasomme = lasomme + CDbl(Txt_test_1)
    Txt_test_3.Value = lasomme
     
    End Sub
    Bonjour et encore merci MarcelG
    J'aurais souhaité adapter ton code à mon programme. Comme tu vois mon pseudo ( Novice72 ) je ne suis pas calé en VBA.... ( d'ici à ce que mon pseudo devient produVBA72 c'est pas demain la veille )
    Voilà : J'ai utilisé ton code comme tel mais ça ne marche pas. J'ai donc remplacé "Cbx_test_" par "ComboBox" puis test_3 par TextBox3 mais ça ne marche pas non plus. Le total ne s'affiche pas. Pour la virgule ou le point, je n'ai pour l'instant pas vu d'erreur ( style erreur 1004 ou autre ).

    Encore merci.

    Novice72

  12. #12
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2015
    Messages
    211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2015
    Messages : 211
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    Bonjour pijaku,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub ComboBox1_Change()
    additionner
    End Sub
    Sub additionner()
    Dim T as double 
    For i =1 to 5
    T=T + val(replace(me.controls("TextBox" & i),",","."))
    Next
    TextBox3=T
    End Sub
    Ce qui m'échappes dans le code original c'est que TextBox1 est sommé deux fois et que TextBox3 reçoit les 5 TextBox dont elle même ???
    Bonjour dysorthographie,
    Non, je ne vois pas pourquoi tu me dis que TextBox1 est sommé deux fois. Suivant des conditions précédentes non expliquées ici, TextBox1 prend soit la valeur 10 soit la valeur 20 c'est tout.
    En fait, les conditions dépendent s'il s'agit d'un devoir de math ou de sciences physiques et aussi si les élèves de la classe concernée sont des Secondes, des Premières, des Terminales ou encore des CAP. Voilà pour TextBox1

    Aujourd'hui, dans les lycées professionnels ( notamment ), nous devons noter non plus des exercices mais des compétences....... Au moment d'élaborer le sujet ( devoir ou CCF qui signifie Contrôle en Cours de Formation = Examen pour faire simple ), les collègues choisissent la répartition des 10 ou 20 points sur les 5 compétences qui sont ( S'approprier / Analyser, Raisonner / Réaliser / Valider / et Communiquer ).
    Chacune des 5 compétences correspondent à 1 comboBox ( et non pas à des TextBox comme tu me l'indiquais plus haut ).
    TextBox 3 est donc le total des 5 comboBox précédentes. S'il y a différences entre la TextBox3 et la TextBox1, il y a erreur ( mais ça je gère...... en terme de code ).

    Mais pour le moment, ce que je n'arrive pas à gérer c'est les nombres décimaux dans les 5 comboBox........
    Bref, merci encore pour ton aide.

    Novice72

    Donc

  13. #13
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    bloque la ligne msgbox ...... provisoirement pour voir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  14. #14
    Invité
    Invité(e)
    Par défaut
    Si je ne me trompe pas c'est bien ta source!

    Regardes les textes en rouge.
    Citation Envoyé par Novice72 Voir le message
    Bonjour à toutes et à tous,


    J'ai une TextBox1 qui vaut 3 ou 6 suivant certaines conditions.
    Ma TextBox 2 vaut 10 ou 20 suivant certaines conditions et sera à comparer avec la TextBox3.

    La TextBox3 correspond au total de 5 ComboBox.

    Voici mon programme :





    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
    Private Sub ComboBox1_Change()
    TextBox3 = val(TextBox1) + val(ComboBox1) + val(ComboBox2) + val(ComboBox3) + val(ComboBox4) + val(ComboBox5)
    End Sub
    Private Sub ComboBox2_Change()
    TextBox3 = val(TextBox1) + val(ComboBox1) + val(ComboBox2) + val(ComboBox3) + val(ComboBox4) + val(ComboBox5)
    End Sub
    Private Sub ComboBox3_Change()
    TextBox3 = val(TextBox1) + val(ComboBox1) + val(ComboBox2) + val(ComboBox3) + val(ComboBox4) + val(ComboBox5)
    End Sub
    Private Sub ComboBox4_Change()
    TextBox3 = val(TextBox1) + val(ComboBox1) + val(ComboBox2) + val(ComboBox3) + val(ComboBox4) + val(ComboBox5)
    End Sub
    Private Sub ComboBox5_Change()
    TextBox3 = val(TextBox1) + val(ComboBox1) + val(ComboBox2) + val(ComboBox3) + val(ComboBox4) + val(ComboBox5)
    End Sub

    Voici mon problème :
    La fonction "val" ne prend pas en compte les nombres décimaux comme 1,5 par exemple. Seule la partie entière est prise en compte.

    Je vous remercie d'avance pour vos réponses.

    Novice72
    Édite j'ai pas fais gaffe tu sommes e combos pas des textebox!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub ComboBox1_Change()
    additionner
    End Sub
    Sub additionner()
    Dim T as double 
    For i =1 to 5
    T=T + val(replace(me.controls("ComboBox" & i),",","."))
    Next
    TextBox3=T + val(replace(TextBox1,",","."))
    End Sub
    Dernière modification par Invité ; 27/06/2018 à 18h25.

  15. #15
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    @robert VAL va supprimer les decimales
    etant donné que c'est du string peut etre que evaluate fera l'afaire
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  16. #16
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2015
    Messages
    211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2015
    Messages : 211
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    Si je ne me trompe pas c'est bien ta source!

    Regardes les textes en rouge.

    Édite j'ai pas fais gaffe tu sommes e combos pas des textebox!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub ComboBox1_Change()
    additionner
    End Sub
    Sub additionner()
    Dim T as double 
    For i =1 to 5
    T=T + val(replace(me.controls("ComboBox" & i),",","."))
    Next
    TextBox3=T + val(replace(TextBox1,",","."))
    End Sub
    Super merci dysorthographie.
    Maintenant ça fonctionne. Le total se fait instantanément et avec des nombres décimaux. Il a juste fallu que le code soit aussi ajouté dans les autres combobox.

    Encore Merci.

    NOVICE72

  17. #17
    Invité
    Invité(e)
    Par défaut
    Non Patrick dans la mesure ou c'est ben "1.2" et pas "1,2"

    Val converti des string compatibles en double.

  18. #18
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    a bon ok

    je redonne mon idée au cas ou au propre et testé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub ComboBox1_Change(): le_compte_est_bon: End Sub
    Private Sub ComboBox2_Change(): le_compte_est_bon: End Sub
    Private Sub ComboBox3_Change(): le_compte_est_bon: End Sub
    Private Sub ComboBox4_Change(): le_compte_est_bon: End Sub
    Private Sub ComboBox5_Change(): le_compte_est_bon: End Sub
    Private Function le_compte_est_bon()
        Dim crit As Boolean
        crit = ComboBox1.ListIndex >= 0 And ComboBox2.ListIndex >= 0 And ComboBox3.ListIndex >= 0 And ComboBox4.ListIndex >= 0
        If crit = True Then
            TextBox3 = WorksheetFunction.Sum(CDbl(Replace(ComboBox1.Value, ".", ",")), CDbl(Replace(ComboBox2.Value, ".", ",")), CDbl(Replace(ComboBox3.Value, ".", ",")), CDbl(Replace(ComboBox4.Value, ".", ",")))
        Else
            'MsgBox "il manque une combo qui n'a pas eue de selection"
        End If
    End Function
    Nom : demo.gif
Affichages : 1020
Taille : 274,5 Ko
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. Problème avec filtre dans combobox
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/02/2018, 09h58
  2. [XL-2007] probléme de valeurs dans combobox sur un userform
    Par guyanais dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/08/2017, 15h17
  3. [IP-2007] Nombres décimaux dans un formulaire connecté à Access
    Par Pluton62 dans le forum InfoPath
    Réponses: 0
    Dernier message: 10/08/2009, 17h06
  4. Problème nombre décimaux
    Par salut12345 dans le forum C++
    Réponses: 3
    Dernier message: 29/10/2005, 12h57

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