Utiliser la formule Count avec IF
Résolu
ButteDuLac
Messages postés
534
Statut
Membre
-
ButteDuLac Messages postés 534 Statut Membre -
ButteDuLac Messages postés 534 Statut Membre -
Bonjour,
Dans Word, il est possible d'utiliser des formules dans un tableau.
J'ai un formulaire qui contient un tableau avec des cases à cocher (29 lignes sur 3 colonnes). J'aimerais compter rapidement le nombre de cases cochées dans chacune des trois colonnes.
Je peux facilement compter avec la formule =COUNT(ABOVE) le nombre de cellules qui contiennent une valeur, mais que la case soit cochée ou non, ça donne le même résultat. Est-ce qu'il y a moyen d'utiliser le IF, dans Word?
J'ai essayé, mais je n'arrive pas à trouver la syntaxe.
Je ne pouvais pas créer le formulaire dans Excel, car les autres parties nécessitaient trop de mises en page.
J'aurais peut-être dû faire une section avec un tableau inséré d'Excel, mais il est trop tard, le formulaire est parti et je commence à recevoir des réponses...
Merci de m'aider, si vous le pouvez!
Dans Word, il est possible d'utiliser des formules dans un tableau.
J'ai un formulaire qui contient un tableau avec des cases à cocher (29 lignes sur 3 colonnes). J'aimerais compter rapidement le nombre de cases cochées dans chacune des trois colonnes.
Je peux facilement compter avec la formule =COUNT(ABOVE) le nombre de cellules qui contiennent une valeur, mais que la case soit cochée ou non, ça donne le même résultat. Est-ce qu'il y a moyen d'utiliser le IF, dans Word?
J'ai essayé, mais je n'arrive pas à trouver la syntaxe.
Je ne pouvais pas créer le formulaire dans Excel, car les autres parties nécessitaient trop de mises en page.
J'aurais peut-être dû faire une section avec un tableau inséré d'Excel, mais il est trop tard, le formulaire est parti et je commence à recevoir des réponses...
Merci de m'aider, si vous le pouvez!
A voir également:
- Utiliser la formule Count avec IF
- Formule si et - Guide
- Comment utiliser chromecast sur tv - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Formule mathématique - Télécharger - Études & Formations
- Excel mise en forme conditionnelle formule - Guide
4 réponses
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
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
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.
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!)
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!!!!)
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???
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é.
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!) ;)
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
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!