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 :

checkbox : injection totaux intermédaires au lieu du total final [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 133
    Par défaut checkbox : injection totaux intermédaires au lieu du total final
    Bonjour le fofo,

    J'utilise un formulaire composé de checkbox pour afficher le total des chechbox cochées.
    Je souhaite injecter ce total dans un document word à l'aide d'un signet.
    Mon problème est que l'injection se réalise à chaque cochage c'est à dire que cela renvoie une suite de chiffre correspondant aux totaux intermédiaires et non au total final.
    Quelqu'un aurait-il une idée ?
    Merci d'avance

    Voici mon 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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    Option Explicit
     
     
    Public Sub MMS()
     
    Dim appWrd As Word.Application
    Dim docWord As Word.Document
    Dim MonControl As Control
    Dim OT As Variant, OS As Variant, APP As Variant, CALC As Variant, RAPP As Variant, LANG As Variant, PRAX As Variant
    Dim i As Integer
    Dim Total_OT As Integer, Total_OS As Integer, Total_APP As Integer, Total_CALC As Integer, Total_RAPP As Integer, Total_LANG As Integer, Total_PRAX As Integer
     
     
    OT = Array("CheckBox_OT1", "CheckBox_OT2", "CheckBox_OT3", "CheckBox_OT4", "CheckBox_OT5")
     
    OS = Array("CheckBox_OS1", "CheckBox_OS2", "CheckBox_OS3", "CheckBox_OS4", "CheckBox_OS5")
     
    APP = Array("CheckBox_APP1", "CheckBox_APP2", "CheckBox_APP3")
     
    CALC = Array("CheckBox_CALC1", "CheckBox_CALC2", "CheckBox_CALC3", "CheckBox_CALC4", "CheckBox_CALC5")
     
    RAPP = Array("CheckBox_RAPP1", "CheckBox_RAPP2", "CheckBox_RAPP3")
     
    LANG = Array("CheckBox_LANG1", "CheckBox_LANG2", "CheckBox_LANG3", "CheckBox_LANG4", "CheckBox_LANG5", "CheckBox_LANG6", "CheckBox_LANG7", "CheckBox_LANG8")
     
    PRAX = Array("CheckBox_PRAX")
     
     
    With USF_comp
     
        .Total_MMSE = "0"
     
        For Each MonControl In .Controls
     
            For i = LBound(OT, 1) To UBound(OT, 1)
                If MonControl.Name = OT(i) Then
                   If MonControl = True Then Total_OT = Total_OT + 1
                End If
            Next i
     
            For i = LBound(OS, 1) To UBound(OS, 1)
                If MonControl.Name = OS(i) Then
                   If MonControl = True Then Total_OS = Total_OS + 1
                End If
            Next i
     
            For i = LBound(APP, 1) To UBound(APP, 1)
                If MonControl.Name = APP(i) Then
                   If MonControl = True Then Total_APP = Total_APP + 1
                End If
            Next i
     
            For i = LBound(CALC, 1) To UBound(CALC, 1)
                If MonControl.Name = CALC(i) Then
                   If MonControl = True Then Total_CALC = Total_CALC + 1
                End If
            Next i
     
            For i = LBound(RAPP, 1) To UBound(RAPP, 1)
                If MonControl.Name = RAPP(i) Then
                   If MonControl = True Then Total_RAPP = Total_RAPP + 1
                End If
            Next i
     
             For i = LBound(LANG, 1) To UBound(LANG, 1)
                If MonControl.Name = LANG(i) Then
                   If MonControl = True Then Total_LANG = Total_LANG + 1
                End If
            Next i
     
            For i = LBound(PRAX, 1) To UBound(PRAX, 1)
                If MonControl.Name = PRAX(i) Then
                   If MonControl = True Then Total_PRAX = Total_PRAX + 1
                End If
            Next i
     
     
        Next MonControl
     
     
    .Total_OS = Total_OS
    .Total_OT = Total_OT
    .Total_APP = Total_APP
    .Total_CALC = Total_CALC
    .Total_RAPP = Total_RAPP
    .Total_LANG = Total_LANG
    .Total_PRAX = Total_PRAX
    .Total_MMSE = Total_OT + Total_OS + Total_APP + Total_CALC + Total_RAPP + Total_LANG + Total_PRAX
     
    Worksheets("Result").Range("B3").Value = Val(.Total_OT)
    Worksheets("Result").Range("B4").Value = Val(.Total_OS)
    Worksheets("Result").Range("B5").Value = Val(.Total_APP)
    Worksheets("Result").Range("B6").Value = Val(.Total_CALC)
    Worksheets("Result").Range("B7").Value = Val(.Total_RAPP)
    Worksheets("Result").Range("B8").Value = Val(.Total_LANG)
    Worksheets("Result").Range("B9").Value = Val(.Total_PRAX)
    Worksheets("Result").Range("B10").Value = Val(.Total_MMSE)
     
     
    End With
     
    ActiveDocument.Bookmarks("Signet10").Range.Text = Worksheets("result").Range("B3").Value
     
    End Sub

  2. #2
    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,

    Le code donné ici ne nous est pas réellement utile.
    Ce qu'il nous faudrait connaitre, c'est l'événement déclencheur.

    J'ai cru comprendre par ta phrase : Mon problème est que l'injection se réalise à chaque cochage que tu déclenches cette procédure à chacun des événements Click() de tes CheckBox.

    Il ne faut pas procéder de la sorte, mais utiliser un bouton (CommandButton) "VALIDER", à cliquer une fois tous les Checkbox choisis.
    Tu lances ta procédure Public Sub MMS() au clic sur ce bouton.

  3. #3
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour Florent, bonjour le forum,

    Ce code devrait se trouver dans un bouton de l'UserForm mais visiblement il se trouve dans une procédure en dehors. Pourrais-tu nous fournir le code (dans l'UserForm) qui appelle cette procédure car, à mon avis, c'est là qu'il faut intervenir...

    [Édition]
    Bonjour Pikaju, nos posts se sont croisés...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 133
    Par défaut
    Bonjour Pikaju et Thautheme,

    Merci à vous deux.
    @ Pikaju : ok pour le CommandButton, est-ce la seule solution ?
    @ Thautheme : voici le code de l'USF

    Merci encore

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    'MMS
     
    Private Sub CheckBox_OT1_Click()
    MMS
    End Sub
    Private Sub CheckBox_OT2_Click()
    MMS
    End Sub
    Private Sub CheckBox_OT3_Click()
    MMS
    End Sub
    Private Sub CheckBox_OT4_Click()
    MMS
    End Sub
    Private Sub CheckBox_OT5_Click()
    MMS
    End Sub
    Private Sub CheckBox_OS1_Click()
    MMS
    End Sub
    Private Sub CheckBox_OS2_Click()
    MMS
    End Sub
    Private Sub CheckBox_OS3_Click()
    MMS
    End Sub
    Private Sub CheckBox_OS4_Click()
    MMS
    End Sub
    Private Sub CheckBox_OS5_Click()
    MMS
    End Sub
    Private Sub CheckBox_APP1_Click()
    MMS
    End Sub
    Private Sub CheckBox_APP2_Click()
    MMS
    End Sub
    Private Sub CheckBox_APP3_Click()
    MMS
    End Sub
    Private Sub CheckBox_CALC1_Click()
    MMS
    End Sub
    Private Sub CheckBox_CALC2_Click()
    MMS
    End Sub
    Private Sub CheckBox_CALC3_Click()
    MMS
    End Sub
    Private Sub CheckBox_CALC4_Click()
    MMS
    End Sub
    Private Sub CheckBox_CALC5_Click()
    MMS
    End Sub
    Private Sub CheckBox_RAPP1_Click()
    MMS
    End Sub
    Private Sub CheckBox_RAPP2_Click()
    MMS
    End Sub
    Private Sub CheckBox_RAPP3_Click()
    MMS
    End Sub
    Private Sub CheckBox_LANG1_Click()
    MMS
    End Sub
    Private Sub CheckBox_LANG2_Click()
    MMS
    End Sub
    Private Sub CheckBox_LANG3_Click()
    MMS
    End Sub
    Private Sub CheckBox_LANG4_Click()
    MMS
    End Sub
    Private Sub CheckBox_LANG5_Click()
    MMS
    End Sub
    Private Sub CheckBox_LANG6_Click()
    MMS
    End Sub
    Private Sub CheckBox_LANG7_Click()
    MMS
    End Sub
    Private Sub CheckBox_LANG8_Click()
    MMS
    End Sub
    Private Sub CheckBox_PRAX_Click()
    MMS
    End Sub

  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
    Citation Envoyé par florent77 Voir le message
    @ Pikaju : ok pour le CommandButton, est-ce la seule solution ?
    Non, mais c'est la plus simple.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/02/2018, 17h24
  2. Faire un total des totaux
    Par NEC14 dans le forum Excel
    Réponses: 8
    Dernier message: 29/06/2011, 11h44
  3. J'utilise une table JExcelTable qui m'affiche true / false au lieu d'un checkBox
    Par mourmfih dans le forum Interfaces Graphiques en Java
    Réponses: 0
    Dernier message: 06/10/2009, 14h32
  4. obrenir un total au lieu d'une liste
    Par claire13 dans le forum PL/SQL
    Réponses: 3
    Dernier message: 14/05/2009, 15h32
  5. SQL Access : total de sous totaux
    Par schdam dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 19/05/2007, 01h19

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