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 :

Comment compter les cases à cocher [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Femme Profil pro
    Assistante Développement
    Inscrit en
    Juin 2008
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistante Développement
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2008
    Messages : 116
    Points : 60
    Points
    60
    Par défaut Comment compter les cases à cocher
    Bonjour,

    Pourriez-vous m'aider SVP, je cherche à compter les cases à cocher dans un document Excel 2003 sur un formulaire de réponses oui/non.

    N'étant pas très douée en VBA Excel, j'ai besoin de vous poser quelques questions.

    Je ne sais pas comment faire pour les différencier. L'exemple dans le forum ne correspond pas vraiment à ma demande.

    Je fais quelques enquêtes de satisfaction et je voudrais qu'à chaque fois que l'on coche une case à cocher OUI, un compteur ajoute "1" sans compter celles qui sont cochées "NON".

    Je vous en remercie d'avance.

  2. #2
    Membre du Club
    Femme Profil pro
    Assistante Développement
    Inscrit en
    Juin 2008
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistante Développement
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2008
    Messages : 116
    Points : 60
    Points
    60
    Par défaut comment compter les cases à cocher


    J'essaye d'avancer en attendant les réponses, j'ai intitulé tous mes "cases à cochées" checkbox1OUI ou checkbox1NON dans la partie "name" des propriétés.

    Actuellement je cherche la bonne formule pour que mon compteur puisse afficher "1" à chaque fois que l'on coche une case à cochée OUI.

    Je pense qu'il est préférable de mettre mon code dans un "bouton" valider pour écrire mon code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub OK_Click()
    CheckboxOUI = mesCheckbox
    End Sub
    je voudrais ajouter "1" à mon compteur "que je n'ai pas encore fait"
    j'ignore à quel endroit le mettre ?

    Merci beaucoup pour votre aide.

  3. #3
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonsoir,
    si tes checkbox sont dans la feuille :
    nommes tes checkbox check1, check2...ou checkbox1, checkbox2...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub OK_Click()
    Dim obj As OLEObject, comPteur As Long
    For Each obj In ActiveSheet.OLEObjects
       If Left(obj.Name, 5) = "Check" Then
          If obj.Object = True Then comPteur = comPteur + 1
       End If
    Next obj
    MsgBox comPteur
    End Sub

  4. #4
    Membre du Club
    Femme Profil pro
    Assistante Développement
    Inscrit en
    Juin 2008
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistante Développement
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2008
    Messages : 116
    Points : 60
    Points
    60
    Par défaut
    bonjour,

    merci beaucoup, je vais essayer votre code, la seule chose c'est que moi, je les ai appelé checkboxOUI, ou checkboxNON pour les différencier.



    bonjour,

    le compteur m'indique 0 alors que j'ai coché quelques cases à cocher ?

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub OK_Click()
    Dim obj As OLEObject, compteur As Long
    For Each obj In ActiveSheet.OLEObjects
        If Left(obj.Name, 5) = "check" Then
            If obj.Object = True Then compteur = compteur + 1
        End If
    Next obj
    MsgBox compteur
     
    End Sub
    J'ai précisé que j'avais des cases à cochées OUI et NON !

    A quel endroit dois-je lui préciser ! pour qu'il compte mes cases à cocher.

    J'ai, en effet, plusieurs pages (4) sur chaque page je vais mettre un bouton commande pour qu'il compte.

    Je vous remercie de m'aider.



    Re bonjour,

    j'ai un peu changé mais malheureusement c'est le même résultat ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub OK_Click()
    Dim obj As OLEObject, compteur As Long
    For Each obj In ActiveSheet.OLEObjects
        If Left(obj.Name, 5) = "checkboxOUI" Then
        checkboxOUI = mescheckbox
           If obj.Object = True Then compteur = compteur + 1
        End If
    Next obj
    MsgBox compteur
     
    End Sub
    Merci de m'aider !

  5. #5
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Adapte le nom de la feuille (ici Feuil1) et teste :
    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
     
    Sub Compter()
     
        Dim Objet As OLEObject
        Dim CaseACocher As MSForms.CheckBox
        Dim I As Integer
     
        For Each Objet In Worksheets("Feuil1").OLEObjects
     
            Set CaseACocher = Objet.Object
     
            If TypeName(CaseACocher) = "CheckBox" Then
                If CaseACocher.Value = True Then
                    I = I + 1
                End If
            End If
     
        Next
     
        MsgBox I
     
    End Sub
    Hervé.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 364
    Points : 350
    Points
    350
    Par défaut
    Bonjour,

    pour le nombre de Cases à cocher "...OUI", essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Private Sub OUI_Click()
      Dim obj As Object, comPteur As Long
      On Error Resume Next 's'il y a aussi des contrôles ActiveX
      For Each obj In Me.Shapes
        If Left(obj.Name, 2) = "Ch" Then
          obj.Select
          If Right(Selection.Characters.Text, 3) = "OUI" Then comPteur = comPteur + 1
        End If
      Next
      MsgBox comPteur
      Range("A1").Select 'ou autre cellule
    End Sub

  7. #7
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Re,

    Comme j'ai typé la variable "CaseACocher" une erreur se produit si l'objet n'est pas une CheckBox donc, correction :
    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
     
    Sub Compter()
     
        Dim Objet As OLEObject
        Dim CaseACocher As MSForms.CheckBox
        Dim I As Integer
     
        For Each Objet In Worksheets("Feuil1").OLEObjects
     
            On Error Resume Next
            Set CaseACocher = Objet.Object
     
            If Err.Number = 0 Then
     
                If CaseACocher.Value = True Then
                    I = I + 1
                End If
     
            End If
        Next
     
        MsgBox I
     
    End Sub
    Hervé.

  8. #8
    Membre du Club
    Femme Profil pro
    Assistante Développement
    Inscrit en
    Juin 2008
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistante Développement
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2008
    Messages : 116
    Points : 60
    Points
    60
    Par défaut
    Bonjour,

    çà ne marche toujours pas, j'ai une erreur :

    "erreur d'exécution 13" incompatibilité de type !

    voici le code que j'ai écrit :

    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
    Private Sub OK_Click()
    Dim objet As OLEObject
    Dim CaseACocher As MSForms.CheckBox
    Dim i As Integer
     
    For Each objet In Worksheets("page 1").OLEObjects
    Set CaseACocher = objet.Object
    If TypeName(CaseACocher) = "CheckBox" Then
    If CaseACocher.Value = True Then
    End If
    End If
    Next
    MsgBox i
     
     
    End Sub
    Je ne comprends pas, merci de m'aider.

    j'ai même fait beuguer mon document Excel en compilant les deux 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
    Private Sub OK_Click()
    Dim objet As OLEObject, compteur As Long
    For Each obj In ActiveSheet.OLEObjects
    Dim CaseACocher As MSForms.CheckBox
    Dim i As Integer
    For Each objet In Worksheets("page 1").OLEObjects
    If Left(obj.Name, 5) = "check" Then
    If obj.Object = True Then compteur = compteur + 1
    If TypeName(CaseACocher) = "CheckBox" Then
    If CaseACocher.Value = True Then
    End If
    End If
    End If
    End If
    Next
    MsgBox compteur
    Next
    End Sub
    Je ne sais plus comment faire, j'ai vraiment besoin de vous pour m'éclairer !


  9. #9
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,
    Pour ton avant-dernier post :
    essayescomme ça :
    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 OK_Click()
    Dim objet As OLEObject
    Dim i As Integer
    i = 0
    For Each objet In Worksheets("page 1").OLEObjects
        If TypeName(objet.Object) = "CheckBox" Then
            If objet.Object = True Then
                i = i + 1
            End If
        End If
    Next objet
    MsgBox i
     
     
    End Sub
    copies et colles car il faut écrire "CheckBox" et non "checkbox"

    attention ! ce sont des controles activex

  10. #10
    Membre du Club
    Femme Profil pro
    Assistante Développement
    Inscrit en
    Juin 2008
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistante Développement
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2008
    Messages : 116
    Points : 60
    Points
    60
    Par défaut
    Merci beaucoup çà marche ! casefayere

    Ouf ! c'est vraiment super.



    ordonc, bonjour,

    ton code est intéressant, mais ce compteur compte 24 alors que je n'ai que 4 Cases à cocher ?

    il doit y avoir une erreur quelque part !

    Merci d'avoir essayer de m'aider.

    le dernier code marche, mais il ne différencie pas les cases OUI et NON.

  11. #11
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Ajoutes une condition
    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
    Private Sub OK_Click()
    Dim objet As OLEObject
    Dim i As Integer
    i = 0
    For Each objet In Worksheets("page 1").OLEObjects
        If TypeName(objet.Object) = "CheckBox" Then
            If objet.Object.Caption Like "*oui*" Then
                If objet.Object = True Then
                    i = i + 1
                End If
            End If
        End If
    Next objet
    MsgBox i
     
     
    End Sub
    et adaptes pour le "non"

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 364
    Points : 350
    Points
    350
    Par défaut
    Re,

    j'avais ceci pour les différentes sortes :
    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
     
    Private Sub OK_Click()
      Dim objet As OLEObject
      Dim i As Byte, n As Byte, c As Byte
      For Each objet In Worksheets("page 1").OLEObjects
        'nombre total de cases à cocher tpe ActiveX
        If TypeName(objet.Object) = "CheckBox" Then i = i + 1
        'nombre de cases intitulées "...OUI"
        If objet.Object.Caption Like "*OUI" Then
          n = n + 1
          'nombre de cases intitulées "...OUI" cochées
          c = c - objet.Object
        End If
      Next
      MsgBox c & " case(s) à cocher ...OUI cochées sur " & Chr(10) & _
             n & " case(s) ...OUI avec " & Chr(10) & _
             i & " cases en tout."
    End Sub

  13. #13
    Membre du Club
    Femme Profil pro
    Assistante Développement
    Inscrit en
    Juin 2008
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistante Développement
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2008
    Messages : 116
    Points : 60
    Points
    60
    Par défaut comment compter les cases à cocher
    Bonjour à tous les deux Ordonc et casefayere,

    Je vous remercie beaucoup pour votre contribution,

    pour le code de casefayere, il ne compte pas le nombre de cases à cocher ! Il marque 0.

    Pour celui de Ordonc : idem, il note bien qu'il y a des cases à cocher Oui, mais il note toujours 24 cases et 0 pour le nombre des cases cochées.

    Je crois que c'est impossible de les différencier, il note l'objet mais ne compte pas les oui ou non !

    C'est un vrai casse-tête...

  14. #14
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour à tou(te)

    pour le code de casefayere, il ne compte pas le nombre de cases à cocher ! Il marque 0.
    tu m'étonnes car j'avais testé, il faut être clair : s'agit t'il bien de la propriété "caption" qui correspond à "checkboxoui" ou "checkboxnon" ?

  15. #15
    Membre du Club
    Femme Profil pro
    Assistante Développement
    Inscrit en
    Juin 2008
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistante Développement
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2008
    Messages : 116
    Points : 60
    Points
    60
    Par défaut comment compter les cases à cocher
    non, désolée, c'est le "name" qui s'appelle CheckBoxOUI ou CheckBoxNON.

    Si j'ai bien compris, il faut que je change et que je mette de nom dans la propriété "CAPTION" !

    Je fais les changements et te tiens informé. Merci autant pour moi.

    Je suis une novice, il ne faut pas m'en vouloir.

    J'essaye.

    Bien à toi. Casefayere

  16. #16
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    non, désolée, c'est le "name" qui s'appelle CheckBoxOUI ou CheckBoxNON.
    impossible, tu ne peux avoir plusieurs checkbox avec le meme nom, ou bien
    checkboxoui1, checkboxoui2,checkboxoui3...

    ou je suis largué (encore possible)

  17. #17
    Membre du Club
    Femme Profil pro
    Assistante Développement
    Inscrit en
    Juin 2008
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistante Développement
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2008
    Messages : 116
    Points : 60
    Points
    60
    Par défaut comment compter les cases à cocher
    Casefayere,

    je t'adresses un grand merci, ton code marche à la perfection, c'est super.

    Je vais ajouter un autre bouton sur ma feuille pour qu'il compte les cases à cocher "NON".

    A bientôt.

  18. #18
    Membre du Club
    Femme Profil pro
    Assistante Développement
    Inscrit en
    Juin 2008
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistante Développement
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2008
    Messages : 116
    Points : 60
    Points
    60
    Par défaut comment compter les cases à cocher
    Citation Envoyé par casefayere Voir le message
    impossible, tu ne peux avoir plusieurs checkbox avec le meme nom, ou bien
    checkboxoui1, checkboxoui2,checkboxoui3...

    ou je suis largué (encore possible)
    Oui, en effet, dans le name c'était Checkbox1OUI, etc...

    En tout cas ton code marche bien.
    je t'en remercie.

  19. #19
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Content que ça fonctionne. Tu peux donc te contenter, maintenant que tu as compris de mettre "OUI" ou "NON" dans la propriété caption plutot que "checkboxoui" ou "checkboxnon", question de présentation mais ceci est ton choix...

    Bonne continuation !

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

Discussions similaires

  1. [AC-2010] Compter les cases à cocher
    Par buzuck20 dans le forum VBA Access
    Réponses: 2
    Dernier message: 30/01/2015, 09h33
  2. Comment compter les cases cochées sur une page ?
    Par Paul Reed Smith dans le forum Débuter
    Réponses: 4
    Dernier message: 24/03/2011, 12h03
  3. [PHP-JS] Compter les cases à cocher
    Par rob2-9 dans le forum Langage
    Réponses: 2
    Dernier message: 08/03/2006, 12h27
  4. Réponses: 7
    Dernier message: 14/02/2006, 16h55

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