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 :

Faire une somme


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 338
    Par défaut Faire une somme
    Bonjour,

    Dans un userform j'ai plusieurs (5) textbox qui peuvent prendre uniquement des valeurs numériques (de 0 à 100) je souhaiterais faire en temps réel la somme de ces textbox dans une sixième textbox

    pour l'instant le code que j'ai écrit me mets les valeurs les unes à la suite des autres sans additioner

    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
    Private Sub TB5b_Change()
        Somme = TB5b.Value + TB6b.Value + TB7b.Value + TB8b.Value + TB9b.Value
        TB10 = Somme
    End Sub
     
    Private Sub TB6b_Change()
        Somme = TB5b.Value + TB6b.Value + TB7b.Value + TB8b.Value + TB9b.Value
        TB10 = Somme
    End Sub
     
    Private Sub TB7b_Change()
       Somme = TB5b.Value + TB6b.Value + TB7b.Value + TB8b.Value + TB9b.Value
        TB10 = Somme
    End Sub
     
    Private Sub TB8b_Change()
        Somme = TB5b.Value + TB6b.Value + TB7b.Value + TB8b.Value + TB9b.Value
        TB10 = Somme
    End Sub
     
    Private Sub TB9b_Change()
        Somme = TB5b.Value + TB6b.Value + TB7b.Value + TB8b.Value + TB9b.Value
        TB10 = Somme
    End Sub
    Merci pour votre aide

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Sans doute parce que la valeur d'un textbox est de type string. Essaie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Somme = CDbl(TB5b.Value) + CDbl(TB6b.Value) + CDbl(TB7b.Value) + CDbl(TB8b.Value) + CDbl(TB9b.Value)

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 338
    Par défaut
    Bonjour Daniel,

    La solution que tu me proposes ne fonctionne pas. Pour info peux tu me dire à quoi correspond CDbl

    Merci pour ton aide

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 118
    Billets dans le blog
    53
    Par défaut
    Bonsoir,
    Ce que Daniel C, t'a donné comme explication est correcte. L'erreur que tu as vient du fait que les données des TextBox sont de type String.
    cdbl est une fonction qui converti une chaine en valeur de type Double.
    Tu as sans doute une erreur qui persiste parce-que certaine valeur TextBox sont de valeur Nulle et donc la conversion provoque une erreur.
    Remplace cdbl par la fonction val
    Exemple ci-dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tb10.Value = Val(tb1b.Value) + Val(tb2b.Value) + Val(tb3b.Value)
    [EDIT]
    Tu peux aussi enlever dans le code la propriété Value qui est une propriété par défaut de l'objet TextBox
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tb10 = Val(tb1b) + Val(tb2b) + Val(tb3b)
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Cdbl transforme des nombres sous forme texte en nombres numériques. Encore faut-il que tu aies des nombres dans les textboxes. Essaie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If IsNumeric(CDbl(TB5b.Value)) Then somme = CDbl(TB5b.Value)
    If IsNumeric(CDbl(TB6b.Value)) Then somme = somme + CDbl(TB6b.Value)
    If IsNumeric(CDbl(TB7b.Value)) Then somme = somme + CDbl(TB7b.Value)
    If IsNumeric(CDbl(TB8b.Value)) Then somme = somme + CDbl(TB8b.Value)
    If IsNumeric(CDbl(TB9b.Value)) Then somme = somme + CDbl(TB9b.Value)
    PS. Pour connaître le signification d'un mot, clique dessus et appuie sur F1.

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2010
    Messages : 338
    Par défaut
    La solution proposée Fonctionne parfaitement bien. Merci beaucoup,

    Tu as sans doute une erreur qui persiste parce-que certaine valeur TextBox sont de valeur Nulle et donc la conversion provoque une erreur.
    Remplace cdbl par la fonction val
    Exemple ci-dessous
    Code :Sélectionner tout - Visualiser dans une fenêtre à part
    tb10.Value = Val(tb1b.Value) + Val(tb2b.Value) + Val(tb3b.Value)

  7. #7
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    "Val" ne fonctionne que si le symbole décimal est le point.

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

Discussions similaires

  1. [Excel]Faire une somme avec une macro
    Par Chlo dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 13/01/2006, 19h53
  2. Probleme pour faire une somme sous Excel
    Par Nicolas92 dans le forum Excel
    Réponses: 5
    Dernier message: 02/12/2005, 11h38
  3. Probleme pour faire une somme dans header ??
    Par snoop57 dans le forum Access
    Réponses: 7
    Dernier message: 01/12/2005, 13h40
  4. filtrer saisies et faire une somme globale
    Par mcellier dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/09/2005, 17h00
  5. faire une somme dans un état
    Par PAINCO dans le forum Access
    Réponses: 1
    Dernier message: 23/06/2005, 19h41

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