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 Word Discussion :

Calcul d'un total dans une UserForm


Sujet :

VBA Word

  1. #1
    Membre à l'essai Avatar de clodius46
    Profil pro
    Inscrit en
    Août 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 67
    Points : 19
    Points
    19
    Par défaut Calcul d'un total dans une UserForm
    Bonsoir à tous, J'ai placé dans une userForm plusieurs zones label qui contiennent des chiffres.Comment faire pour additionner ces zoneset afficher le résultat dans une autre zone Label. Merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Me.monTotal = Me.zoneset1 + Me.zoneset2 + Me.zoneset3
    Ne fonctionne-t-il pas ?

  3. #3
    Membre à l'essai Avatar de clodius46
    Profil pro
    Inscrit en
    Août 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 67
    Points : 19
    Points
    19
    Par défaut
    Merci Heureux-oli Toujours aussi rapide pour répondre. J'ai mis comme code : Me.Label5 = Me.Label3 + Me.Label4 Si Label3 = 2 , Si Label4 = 2 le total qui s'affiche est égal à 22 au lieu de 4; En fait mon chiffre 2 est reconnu comme un caractère et non comme un chiffre ; Il faut donc que je déclare que mes zones labels contiennent une variable chiffre par exemple Byte mais en pratique comment faire ???

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Il y a un détour, CInt cette fonction permet de convertir une chaîne de caractère en nombre.

    Essaie !

  5. #5
    Membre à l'essai Avatar de clodius46
    Profil pro
    Inscrit en
    Août 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 67
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par Heureux-oli Voir le message
    Il y a un détour, CInt cette fonction permet de convertir une chaîne de caractère en nombre.

    Essaie !
    Euh je ne ait pas faire. peut tu m'expliquer un peu plus ?

  6. #6
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim i as string
    i = "5"
    On se retrouve avec un String !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim j as Integer
    j = CInt(i)
    Va convertir le String i en Integer.

    Va convertir la donnée texte qui se trouve dans le contrôle labal4 en nombre.

  7. #7
    Membre à l'essai Avatar de clodius46
    Profil pro
    Inscrit en
    Août 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 67
    Points : 19
    Points
    19
    Par défaut
    a quel endroit dois-je placer ces codes ?

  8. #8
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Le tout est de savoir ce que tu veux et à quel moment.

    Tu peux les mettre sur un bouton, sur un after update.

    Que veux-tu faire avec ton form ?

  9. #9
    Membre à l'essai Avatar de clodius46
    Profil pro
    Inscrit en
    Août 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 67
    Points : 19
    Points
    19
    Par défaut
    je reprend un exemple : j'ai un Label1 qui contient le chiffre 2, une Label2 qui contient le chiffre 3, une Label3 qui contient le chiffre 0 : Je veux afficher automatiquement dans une Label4 l'addition des chiffres contenus dans les Label1 Label2 et Label3 soit dans cet exemple le résultat 5 = 2+ 3 + 0 si ma label4 avait contenu le chiffre 1 j'aurai affiché la valeur 6 dans la Label4

  10. #10
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Les labels sont-ils remplis par l'utilisateur ou les données sont-elles issues d'un document ou d'une source de données ?

    Si c'est par l'utilisateur, on peut mettre le calcul de la valeur sur chaque mise à jour des labels.
    Si les données sont issues d'un document, on peut les mettre sur la propriété activé du formulaire.

  11. #11
    Membre à l'essai Avatar de clodius46
    Profil pro
    Inscrit en
    Août 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 67
    Points : 19
    Points
    19
    Par défaut
    les valeurs affichées dans les labels sont données par l'utilisateur En fait j'ai mis des boutons d'option auxquels j'ai attribue des valeurs qui s'affichent dans chaque label

  12. #12
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Alors, il faut le mettre sur le groupe d'options.

    Tu fais le calcul sur chaque groupe d'options, de cette manière, il peuvent utiliser les groupes comme bon leur semble.

    Pour les groupes d'options, il faut les mettre dans des frames.
    et c'est sur Click du contrôle que ça fonctionne.
    Donc, il va falloir une fonction de calcul qui sera appelée à chaque clic.

  13. #13
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    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 OptionButton4_Click()
    CalculResultat
     
    End Sub
     
    Private Sub OptionButton5_Click()
    CalculResultat
    End Sub
     
     
     
    Public Function CalculResultat()
    Me.label6 = CInt(Me.label1) + CInt(Me.label2)
    End Function
    Après test.

  14. #14
    Membre à l'essai Avatar de clodius46
    Profil pro
    Inscrit en
    Août 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 67
    Points : 19
    Points
    19
    Par défaut
    En sachant que j'ai 3 possibilités de réponse / label et une label pour afficher le résultat j'ai mis pour les codes :
    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
    Private Sub OptionButton1_Click()
    CalculResultat
    If Controls("OptionButton1").Value = True Then
    Label4 = "0"
    End If
    End Sub
     
    Private Sub OptionButton2_Click()
    CalculResultat
    If Controls("OptionButton2").Value = True Then
    Label4 = "1"
    End If
    End Sub
     
    Private Sub OptionButton3_Click()
    CalculResultat
    If Controls("OptionButton3").Value = True Then
    Label4 = "2"
    End If
    End Sub
     
    Private Sub OptionButton4_Click()
    CalculResultat
    If Controls("OptionButton4").Value = True Then
    Label5 = "2"
    End If
    End Sub
     
    Private Sub OptionButton5_Click()
    CalculResultat
    If Controls("OptionButton5").Value = True Then
    Label5 = "1"
    End If
    End Sub
     
    Private Sub OptionButton6_Click()
    CalculResultat
    If Controls("OptionButton6").Value = True Then
    Label5 = "0"
    End If
    End Sub
     
     
    Public Function CalculResultat()
    Me.Label6 = CInt(Me.Label4) + CInt(Me.Label5)
    End Function
    Quand j'exécute j'ai le débogueur avec une erreur d'éxécution 13 : incompatibilité de type
    Si je clique sur le déboguage j'ai la ligne "Me.Label6 = CInt(Me.Label4) + CInt(Me.Label5)" surlignée en jaune ,,,???

  15. #15
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Essaie de mettre l'appel à la fonction après l'affectation de valeur.
    Avant de mettre une valeur, il n'y en a pas, on se retrouve avec un Null.

  16. #16
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Salut clodius,
    Teste en mettant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Label16 = CInt(Me.Label4.caption) + CInt(Me.Label5.caption)
    A+

  17. #17
    Membre à l'essai Avatar de clodius46
    Profil pro
    Inscrit en
    Août 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 67
    Points : 19
    Points
    19
    Par défaut
    Veux tu dire que je dois ecrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Function CalculResultat()
    CInt(Me.Label4) + CInt(Me.Label5) = Me.Label6)
    End Function
    Dans ce cas j'ai le message d'erreur : Erreur de compilation
    erreur de syntaxe
    j'ai la même erreur si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Label16 = CInt(Me.Label4.caption) + CInt(Me.Label5.caption)

  18. #18
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    C'est à cause des Null.

    Pourquoi passes-tu par un Label et pas par un textbox qui est déstiné aux données.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Me.label6 = CInt(Nz(Me.label1;0)) + CInt(Nz(Me.label2;0))
    La fonction Nz permet de remplacer une valeur Null par une autre, dans ce cas, 0 pour ne pas influencer le résultat.

    Je reste persuadé que c'est de cette valeur Null que vient le problème.

  19. #19
    Membre à l'essai Avatar de clodius46
    Profil pro
    Inscrit en
    Août 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 67
    Points : 19
    Points
    19
    Par défaut
    je vais tester avec Nz comme tu le suggère sinon je vais essayer avec des TextBox
    à+

  20. #20
    Membre à l'essai Avatar de clodius46
    Profil pro
    Inscrit en
    Août 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 67
    Points : 19
    Points
    19
    Par défaut
    Je viens de tester avec la fonction Nz comme indique, J'ai aussi essayé en remplaçant les Labels par des textBox et j'ai toujours le message d'erreur Erreur de compilation erreur de syntaxe sur dernière ligne du 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
    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
    Private Sub OptionButton1_Click()
    CalculResultat
    If Controls("OptionButton1").Value = True Then
    TextBox1 = "1"
    End If
    End Sub
     
    Private Sub OptionButton2_Click()
    CalculResultat
    If Controls("OptionButton2").Value = True Then
    TextBox1 = "2"
    End If
    End Sub
     
    Private Sub OptionButton3_Click()
    CalculResultat
    If Controls("OptionButton3").Value = True Then
    TextBox2 = "1"
    End If
    End Sub
     
    Private Sub OptionButton4_Click()
    CalculResultat
    If Controls("OptionButton4").Value = True Then
    TextBox2 = "2"
    End If
    End Sub
     
    Private Sub TextBox3_Change()
     
    End Sub
     
    Private Sub UserForm_Click()
     
    End Sub
     
    Public Function CalculResultat()
    Me.TextBox3 = CInt(Nz(Me.TextBox1;0)) + CInt(Nz(Me.TextBox2;0))Me.TextBox3 = CInt(Me.TextBox1) + CInt(Me.TextBox2)
     
    End Function

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Calcul d'un rang dans une requête
    Par rossy dans le forum Access
    Réponses: 7
    Dernier message: 26/07/2018, 19h17
  2. [XL-2010] Comment insérer une feuile de calcul dans une Userform?
    Par sylvain64 dans le forum Excel
    Réponses: 7
    Dernier message: 06/02/2015, 09h31
  3. [AC-2010] Récuperer un total dans une requête pour faire un calcul dans un champ
    Par infoprev dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 20/02/2012, 09h07
  4. Réponses: 6
    Dernier message: 14/12/2010, 17h25
  5. [SQL] calcul de plusieurs variables dans une table
    Par guillaumeIOB dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 12/03/2006, 21h53

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