Utiliser la formule Count avec IF
Résolu/Fermé
ButteDuLac
Messages postés
495
Date d'inscription
jeudi 5 mars 2009
Statut
Membre
Dernière intervention
24 octobre 2020
-
23 févr. 2016 à 20:05
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 - 1 mars 2016 à 21:13
ButteDuLac Messages postés 495 Date d'inscription jeudi 5 mars 2009 Statut Membre Dernière intervention 24 octobre 2020 - 1 mars 2016 à 21:13
A voir également:
- Utiliser la formule Count avec IF
- Formule excel - Guide
- Comment utiliser chromecast - Guide
- Formule si et - Guide
- Formule moyenne excel - Guide
- Formule excel pour additionner plusieurs cellules - Guide
4 réponses
m@rina
Messages postés
20077
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
25 avril 2024
11 272
23 févr. 2016 à 23:50
23 févr. 2016 à 23:50
Bonsoir,
Tu parles de compter "le nombre de cases cochées" ... sans préciser ce que sont ces cases. Contrôles de contenu ? Contrôles ActiveX, Champs de formulaire ?
Ensuite, la formule dont tu parles compte des cellules, mais pas des cases. ça n'a rien à voir. Pour compter des cases, il faut passer par une macro.
m@rina
Tu parles de compter "le nombre de cases cochées" ... sans préciser ce que sont ces cases. Contrôles de contenu ? Contrôles ActiveX, Champs de formulaire ?
Ensuite, la formule dont tu parles compte des cellules, mais pas des cases. ça n'a rien à voir. Pour compter des cases, il faut passer par une macro.
m@rina
m@rina
Messages postés
20077
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
25 avril 2024
11 272
25 févr. 2016 à 03:43
25 févr. 2016 à 03:43
Bonjour,
Pour commencer, tu aurais dû utiliser des boutons d'option et non pas des cases à cocher : les boutons d'option s'éliminent alors que, là, l'utilisateur pourra cocher trois cases sur la même ligne...
Voici néanmoins un exemple de macro. Cette macro compte les cases activées dans la 3e colonne du 2e tableau :
m@rina
Pour commencer, tu aurais dû utiliser des boutons d'option et non pas des cases à cocher : les boutons d'option s'éliminent alors que, là, l'utilisateur pourra cocher trois cases sur la même ligne...
Voici néanmoins un exemple de macro. Cette macro compte les cases activées dans la 3e colonne du 2e tableau :
Sub compte()
'macro écrite par m@rina
Dim tablo As Table
Set tablo = ActiveDocument.Tables(2)
x = 0
For y = 2 To tablo.Columns(3).Cells.Count
If tablo.Columns(3).Cells(y).Range.ContentControls(1).Checked = True Then
x = x + 1
End If
Next
MsgBox x
End Sub
m@rina
ButteDuLac
Messages postés
495
Date d'inscription
jeudi 5 mars 2009
Statut
Membre
Dernière intervention
24 octobre 2020
40
Modifié par ButteDuLac le 25/02/2016 à 20:36
Modifié par ButteDuLac le 25/02/2016 à 20:36
Oui, j'aurais dû utiliser les boutons d'option, je trouvais cela beaucoup plus long, car avec la case à cocher, je peux faire un copier-coller...
Les boutons d'option demandent de travailler dans les propriétés, ce qui est beaucoup plus long... et chaque bouton doit être indépendant l'un de l'autre. Si je fais un copier-coller
Et surtout parce que je suis dans les contrôles de contenu, car les Contrôles ActiveX, il faut verrouiller le formulaire (en tout cas, c'est ce qu'on m'a déjà dit...
Cela dit, c'est probablement dû au fait que je ne maîtrise pas totalement ces options de Word.
Les boutons d'option demandent de travailler dans les propriétés, ce qui est beaucoup plus long... et chaque bouton doit être indépendant l'un de l'autre. Si je fais un copier-coller
Et surtout parce que je suis dans les contrôles de contenu, car les Contrôles ActiveX, il faut verrouiller le formulaire (en tout cas, c'est ce qu'on m'a déjà dit...
Cela dit, c'est probablement dû au fait que je ne maîtrise pas totalement ces options de Word.
ButteDuLac
Messages postés
495
Date d'inscription
jeudi 5 mars 2009
Statut
Membre
Dernière intervention
24 octobre 2020
40
25 févr. 2016 à 20:39
25 févr. 2016 à 20:39
Pour ce qui est de la macro, elle fonctionne très bien... mais partiellement.
J'aurais besoin des comptes des trois colonnes, dans la msg box.
Je peux composer le texte de la msgbox (enfin, je crois)
MsgBox "Facilement = " & x & Chr(10) & "un peu = " & ...
Mais la macro compte la colonne 3 seulement.
Comme puis-je ajouter la colonne 2 et la colonne 4?
Je suis très débutante en matière de macro VBA.
J'ai tenté quelque chose, mais ça ne fonctionne pas.
Si je pouvais "pousser ma luck" (comme on dit au Québec - car j'ignore d'où vous êtes dans le monde!), j'irais jusqu'à vous demander comment je peux compter séparément les
13 premières lignes (2 à 14)
lignes suivantes (15 à 26)
puis 3 dernières lignes (27 à 29).
Merci! Merci énormément!
(Dans le fond, tout ce temps que je prends, j'en suis consciente, j'aurais eu le temps de compter manuellement les réponses, mais cela me permet par le fait même d'apprendre à automatiser les opérations, à produire des macros par moi-même pour l'avenir!)
J'aurais besoin des comptes des trois colonnes, dans la msg box.
Je peux composer le texte de la msgbox (enfin, je crois)
MsgBox "Facilement = " & x & Chr(10) & "un peu = " & ...
Mais la macro compte la colonne 3 seulement.
Comme puis-je ajouter la colonne 2 et la colonne 4?
Je suis très débutante en matière de macro VBA.
J'ai tenté quelque chose, mais ça ne fonctionne pas.
Si je pouvais "pousser ma luck" (comme on dit au Québec - car j'ignore d'où vous êtes dans le monde!), j'irais jusqu'à vous demander comment je peux compter séparément les
13 premières lignes (2 à 14)
lignes suivantes (15 à 26)
puis 3 dernières lignes (27 à 29).
Merci! Merci énormément!
(Dans le fond, tout ce temps que je prends, j'en suis consciente, j'aurais eu le temps de compter manuellement les réponses, mais cela me permet par le fait même d'apprendre à automatiser les opérations, à produire des macros par moi-même pour l'avenir!)
ButteDuLac
Messages postés
495
Date d'inscription
jeudi 5 mars 2009
Statut
Membre
Dernière intervention
24 octobre 2020
40
Modifié par ButteDuLac le 25/02/2016 à 20:45
Modifié par ButteDuLac le 25/02/2016 à 20:45
Ah oui, idéalement, je voudrais que les résultats s'affichent dans le document, plutôt que dans une MsgBox, sinon, je perds mes données en fermant la petite fenêtre... :)
C'est pour cette raison qu'au début j'essayais avec une formule dans les cellules...
(À bien y penser, j'aurais vraiment dû faire le tout en EXCEL!!!!)
C'est pour cette raison qu'au début j'essayais avec une formule dans les cellules...
(À bien y penser, j'aurais vraiment dû faire le tout en EXCEL!!!!)
ButteDuLac
Messages postés
495
Date d'inscription
jeudi 5 mars 2009
Statut
Membre
Dernière intervention
24 octobre 2020
40
25 févr. 2016 à 20:55
25 févr. 2016 à 20:55
En essayant d'exécuter la macro avec la colonne 4, j'obtiens un « Erreur d'exécution '6290' : Cette propriété est disponible uniquement pour les contrôles de contenu de case à cocher. »
Pourtant, j'ai copié-collé la procédure, en ne changeant que les numéros de colonnes. Ça fonctionne pour la 2 et la 3, mais pas la 4...
Qu'est-ce qui cloche???
Pourtant, j'ai copié-collé la procédure, en ne changeant que les numéros de colonnes. Ça fonctionne pour la 2 et la 3, mais pas la 4...
Sub compte_un_peu()
'macro écrite par m@rina
Dim tablo As Table
Set tablo = ActiveDocument.Tables(2)
x = 0
For y = 2 To tablo.Columns(4).Cells.Count
If tablo.Columns(4).Cells(y).Range.ContentControls(1).Checked = True Then
x = x + 1
End If
Next
MsgBox x
End Sub
Qu'est-ce qui cloche???
m@rina
Messages postés
20077
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
25 avril 2024
11 272
Modifié par m@rina le 26/02/2016 à 04:02
Modifié par m@rina le 26/02/2016 à 04:02
Bonsoir
Qu'est ce qui cloche ? :)) Ce qui cloche c'est la mauvaise gérance des contrôles de contenu par le VBA de Word ! Il y a très peu de possibilités pour macroter avec les contrôles de contenu, et surtout dans un tableau car on n'a pas la possibilité de vérifier ce que contient la cellule en matière de contrôle de contenu.
J'ai testé une autre méthode en faisant des sélections de colonnes, mais c'est toujours pareil, et vraiment j'ignore pourquoi, Word ne veut rien entendre lorsqu'il s'agit de la dernière colonne. Si tu ajoutes par exemple une cinquième colonne, bizarrement le problème ne se produit plus dans la 4e.
Il faut procéder autrement. Le mieux serait de donner un titre différent pour les contrôles d'une même colonne. Ainsi on ne s'occuperait plus des colonnes mais uniquement des contrôles de contenu qui sont dans le document et qui ont un titre commun :
Je ne comprends pas pourquoi tu veux gérer ça avec Word, alors qu'avec Excel c'était tout simple.
Le mieux ici serait de créer un Userform... Y a pas mieux.
m@rina
Nous ne sommes pas devins : n'oubliez pas d'indiquer la version du logiciel utilisé, et comment vous avez procédé.
Qu'est ce qui cloche ? :)) Ce qui cloche c'est la mauvaise gérance des contrôles de contenu par le VBA de Word ! Il y a très peu de possibilités pour macroter avec les contrôles de contenu, et surtout dans un tableau car on n'a pas la possibilité de vérifier ce que contient la cellule en matière de contrôle de contenu.
J'ai testé une autre méthode en faisant des sélections de colonnes, mais c'est toujours pareil, et vraiment j'ignore pourquoi, Word ne veut rien entendre lorsqu'il s'agit de la dernière colonne. Si tu ajoutes par exemple une cinquième colonne, bizarrement le problème ne se produit plus dans la 4e.
Il faut procéder autrement. Le mieux serait de donner un titre différent pour les contrôles d'une même colonne. Ainsi on ne s'occuperait plus des colonnes mais uniquement des contrôles de contenu qui sont dans le document et qui ont un titre commun :
For y = 1 To ActiveDocument.ContentControls.Count
If ActiveDocument.ContentControls(y).Title = "mon titre" Then
If ActiveDocument.ContentControls(y).Checked = True Then
x=x+1
End If
End If
Next
Je ne comprends pas pourquoi tu veux gérer ça avec Word, alors qu'avec Excel c'était tout simple.
Le mieux ici serait de créer un Userform... Y a pas mieux.
m@rina
Nous ne sommes pas devins : n'oubliez pas d'indiquer la version du logiciel utilisé, et comment vous avez procédé.
ButteDuLac
Messages postés
495
Date d'inscription
jeudi 5 mars 2009
Statut
Membre
Dernière intervention
24 octobre 2020
40
26 févr. 2016 à 16:24
26 févr. 2016 à 16:24
Oui, mais maintenant, c'est fait.
De toute façon, je commence à recevoir des formulaire papier (tout le monde n'a pas le même intérêt pour l'utilisation des formulaires électroniques!) Je n'aurai plus le choix de compter manuellement... misère!
Merci pour le temps consacré à ma demande. Sûrement que vos macros me seront utile ultérieurement, quand même!
Prochaine fois, sans aucun doute, ce sera Excel! (Surtout qu'ironiquement, mon questionnaire portait sur Excel!) ;)
De toute façon, je commence à recevoir des formulaire papier (tout le monde n'a pas le même intérêt pour l'utilisation des formulaires électroniques!) Je n'aurai plus le choix de compter manuellement... misère!
Merci pour le temps consacré à ma demande. Sûrement que vos macros me seront utile ultérieurement, quand même!
Prochaine fois, sans aucun doute, ce sera Excel! (Surtout qu'ironiquement, mon questionnaire portait sur Excel!) ;)
m@rina
Messages postés
20077
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
25 avril 2024
11 272
26 févr. 2016 à 21:02
26 févr. 2016 à 21:02
"Surtout qu'ironiquement, mon questionnaire portait sur Excel!"
mais oui !! :))) c'est bien ce que j'ai constaté.C'est drôle parce que, formatrice moi même, j'ai utilisé exactement ce type de questionnaire, et fait avec Excel ! ;)
mais oui !! :))) c'est bien ce que j'ai constaté.C'est drôle parce que, formatrice moi même, j'ai utilisé exactement ce type de questionnaire, et fait avec Excel ! ;)
ButteDuLac
Messages postés
495
Date d'inscription
jeudi 5 mars 2009
Statut
Membre
Dernière intervention
24 octobre 2020
40
26 févr. 2016 à 22:10
26 févr. 2016 à 22:10
Je suivrais bien l'une de vos formations... car la partie qui me manque, c'est la programmation... je ne la vois pas dans mes cours (sauf enregistrement d'une macro simple).
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 213
27 févr. 2016 à 13:10
27 févr. 2016 à 13:10
Bonjour,
Comme m@rina a mâché le boulot je me lance (salut m@rina ;-) )
Alors effectivement j'ai eu aussi des pb en balayant par ligne ou colonne, le dernier checkbox n'est pas vu (!?). En balayant la collection on arrive à tous les avoir.
Je n'ai pas réussi à insérer un tableau résultat dans la feuille (elle semble protégée en insertion ?), il faut donc sélectionner la 1ère ligne dispo dans la zone de commentaires (besoin de 4 lignes libres) avant de lancer la macro.
En la mettant dans un module de normal.dot tu peux la lancer sur les .xlsx
https://www.cjoint.com/c/FBBmfvbhjmi
eric
Comme m@rina a mâché le boulot je me lance (salut m@rina ;-) )
Alors effectivement j'ai eu aussi des pb en balayant par ligne ou colonne, le dernier checkbox n'est pas vu (!?). En balayant la collection on arrive à tous les avoir.
Je n'ai pas réussi à insérer un tableau résultat dans la feuille (elle semble protégée en insertion ?), il faut donc sélectionner la 1ère ligne dispo dans la zone de commentaires (besoin de 4 lignes libres) avant de lancer la macro.
Sub compte() 'macro écrite par m@rina Dim resultat() As Long, ctrl As Object, gr As Long Dim lig As Long, col As Long, msg(1 To 3) As String If MsgBox("Avez-vous sélectionné l'emplacement de restitution ?", vbYesNo) = vbNo Then Exit Sub With ActiveDocument.Tables(2) ReDim resultat(1 To 3, 1 To .Columns.Count - 1) For Each ctrl In .Range.ContentControls If ctrl.Type = wdContentControlCheckBox Then With ctrl.Range.Cells(1) Debug.Print .RowIndex, .ColumnIndex Select Case .RowIndex Case 2 To 14 gr = 1 Case 15 To 26 gr = 2 Case 27 To 29 gr = 3 End Select If ctrl.Checked Then resultat(gr, .ColumnIndex - 1) = resultat(gr, .ColumnIndex - 1) + 1 End If End With End If Next ctrl For lig = 1 To 3 For col = 1 To .Columns.Count - 1 msg(lig) = msg(lig) & ", " & resultat(lig, col) Next col Next lig End With ' MsgBox msg(1) & vbLf & msg(2) & vbLf & msg(3) Selection.TypeText Text:="Résultat par groupe :" For lig = 1 To 3 Selection.TypeParagraph Selection.TypeText Text:=msg(lig) Next lig End Sub
En la mettant dans un module de normal.dot tu peux la lancer sur les .xlsx
https://www.cjoint.com/c/FBBmfvbhjmi
eric
m@rina
Messages postés
20077
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
25 avril 2024
11 272
28 févr. 2016 à 14:02
28 févr. 2016 à 14:02
Merci eriiic !
ButteDuLac
Messages postés
495
Date d'inscription
jeudi 5 mars 2009
Statut
Membre
Dernière intervention
24 octobre 2020
40
1 mars 2016 à 21:13
1 mars 2016 à 21:13
C'est merveilleux! Ça marche!
Ah, ce que je vous envie de maîtriser tout cela... un jour, peut-être!
Merci, énormément!
Ah, ce que je vous envie de maîtriser tout cela... un jour, peut-être!
Merci, énormément!
24 févr. 2016 à 14:15
Pour faciliter les choses, j'ai déposé mon fichier ici :
http://www.cjoint.com/c/FBynogSdOI0
À noter que je vais recevoir près d'une trentaine de ces questionnaires, alors vous comprendrez que je n'ai pas envie de tout compter à la main!
Merci de votre aide!