OVH Cloud OVH Cloud

Case à cocher dans formulaire et mise en forme de paragraphe

4 réponses
Avatar
Jacques Astier
Bonjour !

Dans un formulaire contenant un grand nombre de cases à cocher, je voudrais
que lorsqu'une case est cochée, le texte qui suit - disons le paragraphe -
soit mis en gras. Inversement, le texte devrait être remis en non gras si la
case est décochée.

J'ai pu créer une macro qui est appelée en entrée et en sortie de la case à
cocher, mais comme je ne peux savoir si la case est cochée ou non, cela ne
fonctionne pas vraiment.
Voici le code de cette macro :

Sub FormatParagrapheGras()
'
'Déprotection du document
If ActiveDocument.ProtectionType <> wdNoProtection Then
ActiveDocument.Unprotect
End If

'mise en gras ou non
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
Selection.Font.Bold = wdToggle
Selection.HomeKey Unit:=wdLine

'protection du document
If ActiveDocument.ProtectionType = wdNoProtection Then
ActiveDocument.Protect _
Type:=wdAllowOnlyFormFields, NoReset:=True
End If

End Sub

Je souhaite bien sûr n'avoir qu'une seule macro à appeler, et l'idéal serait
de connaître la valeur de la case appelante.

Quelqu'un a-t-il une solution répondant à cette question ?

Merci à tous !

Jacques.

4 réponses

Avatar
Jean-Guy Marcil
Jacques Astier was telling us:
Jacques Astier nous racontait que :

Bonjour !

Dans un formulaire contenant un grand nombre de cases à cocher, je
voudrais que lorsqu'une case est cochée, le texte qui suit - disons
le paragraphe - soit mis en gras. Inversement, le texte devrait être
remis en non gras si la case est décochée.

J'ai pu créer une macro qui est appelée en entrée et en sortie de la
case à cocher, mais comme je ne peux savoir si la case est cochée ou
non, cela ne fonctionne pas vraiment.



Ta macro fonctionne bien. Assure-toi que la case n'est pas cochée, enlève la
protection du document, enlève le gras et reprotège le document. Si tu
coches la case, la ligne est mise en gras, si tu décoche, le gras s'enlève.

Si tu veux vraiment changer le pragraphe au complet, tu pourrais remplacer


Selection.EndKey Unit:=wdLine, Extend:=wdExtend
Selection.Font.Bold = wdToggle
Selection.HomeKey Unit:=wdLine

par

Selection.Paragraphs(1).Range.Font.Bold = wdToggle


Aussi, comme tu sais bien que la macro n'est appelée que quand le formulaire
est protégé, remplace ce que tu as obtenu avec l'enregistreur de macro:

If ActiveDocument.ProtectionType <> wdNoProtection Then
ActiveDocument.Unprotect
End If

et

If ActiveDocument.ProtectionType = wdNoProtection Then
ActiveDocument.Protect _
Type:=wdAllowOnlyFormFields, NoReset:=True
End If

par

ActiveDocument.Unprotect

et

ActiveDocument.Protect _
Type:=wdAllowOnlyFormFields, NoReset:=True

--
Salut!
_______________________________________
Jean-Guy Marcil - Word MVP

Word MVP site: http://www.word.mvps.org

Avatar
Jacques Astier
Merci Jean-Guy !

Mais le résultat ne me convient pas :
- si je me déplace entre les champs du formulaire, le simple fait d'arriver
sur une case à cocher la passe de gras vers non gras et vice versa sans tenir
compte si la case est cochée ou non : c'est l'option 'au démarrage'
- si je coche et décoche de suite il ne se passe rien , lorsqu'on sort de la
case le paragraphe passe en gras alors que la case n'est pas cochée.

Est-ce qu'il y a un moyen de passer la valeur de la case à cocher à la macro
pour que la mise en forme dépende vraiment de cette valeur ?

Merci,
Jacques.


Jacques Astier was telling us:
Jacques Astier nous racontait que :

Bonjour !

Dans un formulaire contenant un grand nombre de cases à cocher, je
voudrais que lorsqu'une case est cochée, le texte qui suit - disons
le paragraphe - soit mis en gras. Inversement, le texte devrait être
remis en non gras si la case est décochée.

J'ai pu créer une macro qui est appelée en entrée et en sortie de la
case à cocher, mais comme je ne peux savoir si la case est cochée ou
non, cela ne fonctionne pas vraiment.



Ta macro fonctionne bien. Assure-toi que la case n'est pas cochée, enlève la
protection du document, enlève le gras et reprotège le document. Si tu
coches la case, la ligne est mise en gras, si tu décoche, le gras s'enlève.

Si tu veux vraiment changer le pragraphe au complet, tu pourrais remplacer


Selection.EndKey Unit:=wdLine, Extend:=wdExtend
Selection.Font.Bold = wdToggle
Selection.HomeKey Unit:=wdLine

par

Selection.Paragraphs(1).Range.Font.Bold = wdToggle


Aussi, comme tu sais bien que la macro n'est appelée que quand le formulaire
est protégé, remplace ce que tu as obtenu avec l'enregistreur de macro:

If ActiveDocument.ProtectionType <> wdNoProtection Then
ActiveDocument.Unprotect
End If

et

If ActiveDocument.ProtectionType = wdNoProtection Then
ActiveDocument.Protect _
Type:=wdAllowOnlyFormFields, NoReset:=True
End If

par

ActiveDocument.Unprotect

et

ActiveDocument.Protect _
Type:=wdAllowOnlyFormFields, NoReset:=True

--
Salut!
_______________________________________
Jean-Guy Marcil - Word MVP

Word MVP site: http://www.word.mvps.org







Avatar
Jean-Guy Marcil
Jacques Astier was telling us:
Jacques Astier nous racontait que :

Merci Jean-Guy !

Mais le résultat ne me convient pas :
- si je me déplace entre les champs du formulaire, le simple fait
d'arriver sur une case à cocher la passe de gras vers non gras et
vice versa sans tenir compte si la case est cochée ou non : c'est
l'option 'au démarrage' - si je coche et décoche de suite il ne se
passe rien , lorsqu'on sort de la case le paragraphe passe en gras
alors que la case n'est pas cochée.

Est-ce qu'il y a un moyen de passer la valeur de la case à cocher à
la macro pour que la mise en forme dépende vraiment de cette valeur ?


Duh! Comme dirait Homer...

Bien sûr, j'avais oublié cet aspect (la navigation sans cocher...)
Alors essaie ceci:

'_______________________________________
Sub FormatParagrapheGras()

'Déprotection du document
ActiveDocument.Unprotect

'mise en gras ou non
With Selection
.Paragraphs(1).Range.Font.Bold = _
.FormFields(1).CheckBox.Value
End With

'protection du document
ActiveDocument.Protect _
Type:=wdAllowOnlyFormFields, NoReset:=True

End Sub
'_______________________________________

--
Salut!
_______________________________________
Jean-Guy Marcil - Word MVP

Word MVP site: http://www.word.mvps.org

Avatar
Jacques Astier
Et bien voilà une opération terminée avec brio. Merci.

Avant que tu ne postes ta réponses, j'avais écrit ceci en m'inspirant de ton
code :
_____________________________
Sub FormatParagrapheGras()

'Déprotection du document
If ActiveDocument.ProtectionType <> wdNoProtection Then
ActiveDocument.Unprotect
End If

'mise en gras ou non en fonction de la case à cocher contenue dans la
sélection

If Selection.Paragraphs(1).Range.Font.Bold <>
Selection.FormFields(1).CheckBox.Value Then
Selection.Paragraphs(1).Range.Font.Bold =
Selection.FormFields(1).CheckBox.Value
End If

'protection du document
If ActiveDocument.ProtectionType = wdNoProtection Then
ActiveDocument.Protect _
Type:=wdAllowOnlyFormFields, NoReset:=True
End If

End Sub
____________________

Ca flasche un peu, mais ça marche !
J'ai rajouté une procédure pour mettre la macro en sortie sur toutes les
cases à cocher du document, et hop !
Merci pour ton aide !!

Jacques.


Jacques Astier was telling us:
Jacques Astier nous racontait que :

Merci Jean-Guy !

Mais le résultat ne me convient pas :
- si je me déplace entre les champs du formulaire, le simple fait
d'arriver sur une case à cocher la passe de gras vers non gras et
vice versa sans tenir compte si la case est cochée ou non : c'est
l'option 'au démarrage' - si je coche et décoche de suite il ne se
passe rien , lorsqu'on sort de la case le paragraphe passe en gras
alors que la case n'est pas cochée.

Est-ce qu'il y a un moyen de passer la valeur de la case à cocher à
la macro pour que la mise en forme dépende vraiment de cette valeur ?


Duh! Comme dirait Homer...

Bien sûr, j'avais oublié cet aspect (la navigation sans cocher...)
Alors essaie ceci:

'_______________________________________
Sub FormatParagrapheGras()

'Déprotection du document
ActiveDocument.Unprotect

'mise en gras ou non
With Selection
.Paragraphs(1).Range.Font.Bold = _
.FormFields(1).CheckBox.Value
End With

'protection du document
ActiveDocument.Protect _
Type:=wdAllowOnlyFormFields, NoReset:=True

End Sub
'_______________________________________

--
Salut!
_______________________________________
Jean-Guy Marcil - Word MVP

Word MVP site: http://www.word.mvps.org