Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Case à cocher

3 réponses
Avatar
Jocelyne
Bonjour à tous,

J’ai un formulaire qui ne contient que des cases à cocher 32 au total qui
sont réparties sur 8 colonnes. Dans chaque colonne, une seule case doit
obligatoirement être cochée. Les cases de chaque colonne sont nommées de 0 à
3 avec l’en-tête de colonne.

Je voudrais faire une macro qui analyse, pour chaque colonne, si plus d’une
case est cochée ou qu’aucune case n’est cochée et donne un seul avertissement
si ce cas se retrouve dans n’importe quelle colonne du formulaire.

Par exemple :
Si la case à cocher Retouche0 est cochée Et la case Retouche1 est cochée Ou
la case Retouche2 est cochée Ou la case Retouche3 est cochée

Alors affiche le message d’avertissement

Ça fonctionne pour cette situation mais je dois aussi analyser si la case
Retouche0 n’est pas cochée et que d’autres le sont et ce, pour chaque
possibilité dans cette colonne uniquement.

De plus, cette même analyse doit se répéter pour les 7 autres colonnes. Vous
voyez le portrait. Beaucoup de lignes de codes.

Existe-t-il une façon plus condensée de programmer cette analyse.

Merci de votre aide

Jocelyne

3 réponses

Avatar
heureux-oli
Salut,

Je ne vais répondre que pour une partie de ta question.

Pour être certain que seul une case à cocher le soit, il suffit sur clic de
l'une des quatre, de décocher les autres.

Sub CaseACocher()
Dim i as integer
for i = 2 to 4
ActiveDocument.FormFields(i).CheckBox.Value = False
next i
End Sub

Mais je pense que ton document va devenir très lourd.
L'utilisation de UserForm est plus oouple, on peut factoriser le code plus
facilement.


--
Heureux-oli
http://word.developpez.com/
http://word.developpez.com/faq/

----------------------------------------------------------------------------------

"Jocelyne" a écrit dans le message de
news:
Bonjour à tous,

J'ai un formulaire qui ne contient que des cases à cocher 32 au total qui
sont réparties sur 8 colonnes. Dans chaque colonne, une seule case doit
obligatoirement être cochée. Les cases de chaque colonne sont nommées de 0
à
3 avec l'en-tête de colonne.

Je voudrais faire une macro qui analyse, pour chaque colonne, si plus d'une
case est cochée ou qu'aucune case n'est cochée et donne un seul
avertissement
si ce cas se retrouve dans n'importe quelle colonne du formulaire.

Par exemple :
Si la case à cocher Retouche0 est cochée Et la case Retouche1 est cochée
Ou
la case Retouche2 est cochée Ou la case Retouche3 est cochée

Alors affiche le message d'avertissement

Ça fonctionne pour cette situation mais je dois aussi analyser si la case
Retouche0 n'est pas cochée et que d'autres le sont et ce, pour chaque
possibilité dans cette colonne uniquement.

De plus, cette même analyse doit se répéter pour les 7 autres colonnes.
Vous
voyez le portrait. Beaucoup de lignes de codes.

Existe-t-il une façon plus condensée de programmer cette analyse.

Merci de votre aide

Jocelyne



Avatar
Jocelyne
Merci de votre suggestion mais je ne sais pas si la userform se prête à mon
document. En fait, le document est un modèle de formulaire de 5 pages qui
contient des macrobutton pour le remplir. Cependant, cette section de
formulaire est faites avec des cases à cocher pour le remplissage étant donné
que le résultat des cases à cocher doit créer une barre de progression. De
plus, plusieurs parties du document une fois rempli sont reportées dans un
autre modèle.

Si vous pensez que ce sera simplifié, je tenterai cette façon. Par contre,
je dois vous dire que je suis à mes débuts dans VBA. Mais avec le temps, on
arrive à tout.

Jocelyne


Salut,

Je ne vais répondre que pour une partie de ta question.

Pour être certain que seul une case à cocher le soit, il suffit sur clic de
l'une des quatre, de décocher les autres.

Sub CaseACocher()
Dim i as integer
for i = 2 to 4
ActiveDocument.FormFields(i).CheckBox.Value = False
next i
End Sub

Mais je pense que ton document va devenir très lourd.
L'utilisation de UserForm est plus oouple, on peut factoriser le code plus
facilement.


--
Heureux-oli
http://word.developpez.com/
http://word.developpez.com/faq/

----------------------------------------------------------------------------------

"Jocelyne" a écrit dans le message de
news:
Bonjour à tous,

J'ai un formulaire qui ne contient que des cases à cocher 32 au total qui
sont réparties sur 8 colonnes. Dans chaque colonne, une seule case doit
obligatoirement être cochée. Les cases de chaque colonne sont nommées de 0
à
3 avec l'en-tête de colonne.

Je voudrais faire une macro qui analyse, pour chaque colonne, si plus d'une
case est cochée ou qu'aucune case n'est cochée et donne un seul
avertissement
si ce cas se retrouve dans n'importe quelle colonne du formulaire.

Par exemple :
Si la case à cocher Retouche0 est cochée Et la case Retouche1 est cochée
Ou
la case Retouche2 est cochée Ou la case Retouche3 est cochée

Alors affiche le message d'avertissement

Ça fonctionne pour cette situation mais je dois aussi analyser si la case
Retouche0 n'est pas cochée et que d'autres le sont et ce, pour chaque
possibilité dans cette colonne uniquement.

De plus, cette même analyse doit se répéter pour les 7 autres colonnes.
Vous
voyez le portrait. Beaucoup de lignes de codes.

Existe-t-il une façon plus condensée de programmer cette analyse.

Merci de votre aide

Jocelyne








Avatar
heureux-oli
Pas facile de dire si c'est plus simple, il faut connaître la nature du
document.
Mais je pense que ce serait au moins plus convivial pour l'utilisateur, avec
un UserForm, on peut utiliser des onglets si on a besoin de beaucoup de
place, on peut faire appel à une autre UserForm,...


--
Heureux-oli
http://word.developpez.com/
http://word.developpez.com/faq/

----------------------------------------------------------------------------------

"Jocelyne" a écrit dans le message de
news:
Merci de votre suggestion mais je ne sais pas si la userform se prête à
mon
document. En fait, le document est un modèle de formulaire de 5 pages qui
contient des macrobutton pour le remplir. Cependant, cette section de
formulaire est faites avec des cases à cocher pour le remplissage étant
donné
que le résultat des cases à cocher doit créer une barre de progression. De
plus, plusieurs parties du document une fois rempli sont reportées dans un
autre modèle.

Si vous pensez que ce sera simplifié, je tenterai cette façon. Par contre,
je dois vous dire que je suis à mes débuts dans VBA. Mais avec le temps,
on
arrive à tout.

Jocelyne


Salut,

Je ne vais répondre que pour une partie de ta question.

Pour être certain que seul une case à cocher le soit, il suffit sur clic
de
l'une des quatre, de décocher les autres.

Sub CaseACocher()
Dim i as integer
for i = 2 to 4
ActiveDocument.FormFields(i).CheckBox.Value = False
next i
End Sub

Mais je pense que ton document va devenir très lourd.
L'utilisation de UserForm est plus oouple, on peut factoriser le code
plus
facilement.


--
Heureux-oli
http://word.developpez.com/
http://word.developpez.com/faq/

----------------------------------------------------------------------------------

"Jocelyne" a écrit dans le message
de
news:
Bonjour à tous,

J'ai un formulaire qui ne contient que des cases à cocher 32 au total
qui
sont réparties sur 8 colonnes. Dans chaque colonne, une seule case doit
obligatoirement être cochée. Les cases de chaque colonne sont nommées
de 0
à
3 avec l'en-tête de colonne.

Je voudrais faire une macro qui analyse, pour chaque colonne, si plus
d'une
case est cochée ou qu'aucune case n'est cochée et donne un seul
avertissement
si ce cas se retrouve dans n'importe quelle colonne du formulaire.

Par exemple :
Si la case à cocher Retouche0 est cochée Et la case Retouche1 est
cochée
Ou
la case Retouche2 est cochée Ou la case Retouche3 est cochée

Alors affiche le message d'avertissement

Ça fonctionne pour cette situation mais je dois aussi analyser si la
case
Retouche0 n'est pas cochée et que d'autres le sont et ce, pour chaque
possibilité dans cette colonne uniquement.

De plus, cette même analyse doit se répéter pour les 7 autres colonnes.
Vous
voyez le portrait. Beaucoup de lignes de codes.

Existe-t-il une façon plus condensée de programmer cette analyse.

Merci de votre aide

Jocelyne