Word créer une liste déroulante permettant d'afficher/masquer un paragraphe

A voir également:Word créer une liste déroulante permettant d'afficher/masquer un paragrapheCréer une liste déroulante dans word - Conseils pratiques - Excel Créer une Liste déroulante (Word 2003) ✓ - Forum - Word Créer une liste déroulante excel semi-automatique - Conseils pratiques - Excel Créer des listes déroulantes en cascade avec excel - Conseils pratiques - Excel Créer une liste déroulante excel 2003 - Conseils pratiques - Excel

Bonjour,

J'ai un formulaire word qui contient plusieurs paragraphes contenant eux mêmes de nombreux champs.
Ce formulaire est un courrier type qui n'est pas lié à un publipostage..
Je cherche a faire en sorte que lorsque l'on choisi l'objet du courrier qui est dans une liste déroulante avec 2 choix, un paragraphe différent s'affiche selon le choix.
J'ai trouvé pas mal de solutions en vba permettant d'afficher du texte selon le choix de la liste déroulant mais cela ne répond pas à mon problème. En effet, j'ai besoin que ces paragraphes contiennent des champs.
J'ai donc pensé à la possibilité de créer des signets au niveau des paragraphes et d'afficher ou masquer ces signets en fonction du choix de la liste déroulante.
Malheureusement débutant en vba, je n'arrive pas à trouver la solution.
D'autant plus qu'il faut pouvoir enlever la protection avec mot de passe et la remettre à la fin de l'exécution de la macro.
D'avance merci pour votre aide ou toute solution pouvant aboutir au résultat :-)

Sam

Forum

A voir également:Word créer une liste déroulante permettant d'afficher/masquer un paragrapheCréer une liste déroulante dans word - Conseils pratiques - Excel Créer une Liste déroulante (Word 2003) ✓ - Forum - Word Créer une liste déroulante excel semi-automatique - Conseils pratiques - Excel Créer des listes déroulantes en cascade avec excel - Conseils pratiques - Excel Créer une liste déroulante excel 2003 - Conseils pratiques - Excel

Web: www.shapebootstrap.net

4 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,

qu'entends-tu par Formulaire?

Un UserForm?

Il faudrait être plus précis!

Poster la macro qui a été faite

en attendant lire ceci, il y aura peut être une réponse à la question:

https://word.developpez.com/faq/?page=VBA


Reply
réponses:
  • auteur

    Bonjour,

    Il s'agit bien d'un formulaire Word (et non un UserForm).
    C'est un courrier avec des champs soit en liste déroulante (civilité) soit avec des zones à remplir (coordonnées).

    J'ai commencé, avec les recherches web, ce code :

    Sub MaMacro()

        If Not ActiveDocument.ProtectionType = wdNoProtection Then
            ActiveDocument.Unprotect "test"
        End If
        
        Select Case
    ActiveDocument.FormFields("MaListeDeroulante").Result
        Case "Choix1"
        ActiveDocument.Bookmarks("Signet1").Range.Font.Hidden = True
        Case "Choix2"
        ActiveDocument.Bookmarks("Signet2").Range.Font.Hidden = True
        End Select
        ActiveDocument.Protect wdAllowOnlyFormFields 

    End Sub

    J'aimerai pouvoir compléter le code pour que lors d'un nouveau changement dans ma liste déroulante, le nouveau choix apparaisse et que l'ancien disparaisse.
    De plus, à la fin de la macro, j'aimerai que la protection avec le mot de passe soit remise en place.

    Merci pour votre aide.

    Sam.

  • auteur

    Je suis désolé, mais je ne peux pas t'aider. Je travaille sur des UserForm

    Bon courage

    @+

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,

J'ai avancé sur ma problématique.
J'ai fait le code suivant :


Sub MaMacro()

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

Select Case ActiveDocument.FormFields("MaListeDeroulante").Result
Case "choix1"
ActiveDocument.Bookmarks("signet1").Range.Font.Hidden = True
ActiveDocument.Bookmarks("signet2").Range.Font.Hidden = False
Case "choix2"
ActiveDocument.Bookmarks("signet2").Range.Font.Hidden = True
ActiveDocument.Bookmarks("signet1").Range.Font.Hidden = False
End Select

If ActiveDocument.ProtectionType = wdNoProtection Then
ActiveDocument.Protect wdAllowOnlyFormFields, noreset, "test"
End If

End Sub


Tout fonctionne bien, sauf le calcul en sortie de liste déroulante (j'ai mis la macro dans la liste déroulante avec calcul en sortie).
En effet, pour que les modifications sur les signets soient effectives, il faut absolument tabuler.
Hors, il peut arriver que quelqu'un sorte de la liste déroulante en cliquant à l'extérieur et dans ce cas le calcul en sortie ne se fait pas.

Pouvez-vous m'aider pour que le calcul en sortie s'effectue quelque soit la façon de quitter la liste déroulante?

D'avance merci.

Sam.

Reply
réponses:
  • auteur

  • auteur

    Avec une variable Booléenne qui se met à True lors du clic dans la liste déroulante. Cette variable est à False au début de la macro et remis à False à la fin.
    Le calcul en sortie ne se fait que si ta variable est à True.

    @+

  • auteur

    Bonjour,
    Serait-il possible de me donner plus de précisions avec le code, je débute et je ne vois pas comment faire.
    D’avance merci.
    Sam.

  • auteur

    j'ai mis la macro dans la liste déroulante avec calcul en sortie.

    Voir cette macro et comment se déclenche-t-elle?

  • auteur

    Bonjour,
    J’ai créé une liste déroulante à partir des formulaires hérités.
    Dans cette liste déroulante j’ai demandé à exécuter ma macro à la sortie.
    Ma macro (voir ci-dessus) est dans un module et non dans ThisDocument.
    Sam.

  • auteur

    Voir ceci si cela peut te faire avancer:

    https://heureuxoli.developpez.com/office/word/formulaires/#L2-E

    Sur ce point je ne peux pas t'aider!

  • auteur

    Bonjour,
    J'ai regardé le lien, c'est très bien fait et très intéressant.
    En revanche je n'ai pas trouvé la réponse à mon problème.
    Je suis preneur de toute solution.
    Merci.
    Sam.

  • auteur

    Tu ne peux pas te servir de cette méthode?

    CalculateOnExit

    https://heureuxoli.developpez.com/office/word/formulaires/#L5-B

    @+

  • auteur

    As-tu essayé cela:

    EntryMacro et ExitMacro

    https://heureuxoli.developpez.com/office/word/formulaires/#L5-B-5

  • auteur

    Je viens d'essayer EntryMacro et ExitMacro sans succès :-(
    Peut-être que je m'y prend mal ou peut-être que mon code au départ n'est pas bon.
    En tout cas merci pour toutes ces pistes.

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

J'ai essayé mais sans succès.
J'avais mis

ActiveDocument.FormFields(4).CalculateOnExit = True
à la fin de mon code, juste avant la remise de la protection, mais ça ne change rien.
Faut-il intégrer cette mise à jour à ma macro, ou faut-il mettre cette macro à part?
Et dans ce cas comment la déclenche t'on?

Reply
réponses:
  • auteur

    D'après ce que je comprends tu fais une macro avec ce code et tu la mets en macro de sortie dans ta liste déroulante.

  • auteur

    J'ai essayé aussi :-)
    Mais pas de changement, si je clique à l'extérieur de ma liste déroulante sans tabuler, le "CalculateOnExit" ne s'effectue pas.
    Mon soucis est de faire appliquer la macro par une sortie au clic de la liste déroulante.

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Ne serait-il pas possible de créer une boucle qui dirait que tant que je suis dans la liste déroulante, j'exécute la macro?
C'est une idée :-)

Reply

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed