IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Word Discussion :

Macro pour cacher paragraphes


Sujet :

VBA Word

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 12
    Points : 1
    Points
    1
    Par défaut Macro pour cacher paragraphes
    Bonjour,

    Je dois realiser un formulaire sous word dans lequel apparaissent ou non des paragraphes selon le fait que l'utilisateur coche ou non les "Champ case à cocher" relatifs à chaque paragraphes.

    ☺ sujet 1
    ☺ sujet 2
    ☺ sujet 3

    donne

    ☺ sujet 1
    blablablablablabla
    ☺ sujet 2
    ☺ sujet 3
    lorsque le Champ case à cocher sujet 1 est coché.

    j'ai cherche un peu partout une macro avec la fonction hide mais je n'ai rien trouvé de bien precis et je n'arrive pas nommer les 3 paragraphes pour les piloter par les cases.

    je suis nul en VB et c'est pour mon boulot.
    Si quelqu'un à une idée

    Merci d'avance

    ben

  2. #2
    Expert éminent
    Avatar de Sepia
    Homme Profil pro
    Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Inscrit en
    Octobre 2007
    Messages
    3 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur du cursus IDE@L - Chef de Projet NCU (digital learning) - Université de Rennes
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3 117
    Points : 6 856
    Points
    6 856
    Par défaut Masquer des paragraphes
    Salut,

    Une solution (mais il y en a d'autres) est de définir un style "Ne pas afficher" avec des caractères masqués. Lorsque tu cliques sur ton bouton (de formulaire), tu actives un macro qui récupère le(s) paragraphe(s) concerné(s) et qui lui applique le style "Ne pas afficher". Ton texte alors disparait de l'écran (mais est conservé) et la pagination est mise à jour.

    A+

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    merci pour ta reponse.
    appliquer un style...ca c'est bon
    disons que je les appelle texte1 texte2 et texte3
    mais pour rediger la macro je suis à l'ouest!
    j'lance l'enregistrement de la macro en selectionnant le style texte1 et en faisant format/police/masqué mais le style texte1 n'apparait nul part dans la macro et donc qd j'applique la macro a la case... ca marche pas.
    tu pourrais me montrer ce à quoi devrait ressembler la redaction stp

    Merci!

    up s'il vous plait.

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Pourquoi trois styles ?
    Si tu ne parviens pas à appleler l'un deux, comment faire pour trois.

    La solution est un seul style caché.
    si un seul paragraphe se trouve entre chaque titre, c'est relativement simple, il suffit de multiplier par deux pour avoir le paragraphe concerné.

    si le 1 est coché, c'est le paragraphe 2 qui doit être caché.
    Si c'est le 2 qui est coché, c'est la quatrième paragraphe qui doit être caché.

    pour atteindre un paragraphe dans un document :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ActiveDocument.paragraph(2).style = wdStyleHeading2
    si tu utilises ton propre style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.Paragraph(2).Style ="MonStyle"
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    Merci heureux oli
    on m'a parlé des signets et j'ai réussi a faire 2 macros:
    la première (macro1) qui cache le paragraphe et la deuxième (macro2) qui le fait reaparaitre.
    j'ai deux problèmes:
    - la macro2 ne marche que si je fait outil/option/texte caché. si je decoche cette option, la macro1 marche mais la 2 ne fait pas réapparaitre le texte....
    - lorsque j'applique ces macros à une caseacocher et que je passe en mode formulaire, j'ai un message d'erreur:
    erreur 4605: cette méthode ou propriete n'est pas disponible car l'objet fair reference à une zone protégée d'un document....
    j'ai mis le doc word en fichier joint

    Merci pour votre aide
    Fichiers attachés Fichiers attachés

  6. #6
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Il n'y a pas de code avec le doc !
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    oups
    et maintenant? tu peux utiliser les macros? peut etre parce que j'étais en mode formulaire + verrouillé....
    Fichiers attachés Fichiers attachés

  8. #8
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Sans vouloir être vexant, je sais déverouiller un formulaire, mais ton document ne comporte pas de code.

    Si ton code se trouve dans ton normal.dot, il serait mieux de le copier dans ton document ou de nous mettre son contenu dans le fil.

    De plus il ne ressemble pas vraiment à ce que tu espères avoir !!
    L'unique case à cocher se trouve derrière du texte ??
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    Pour la mise en forme effectivement ca ressemble pas tout à fait... c'était juste pour l'exemple.
    j'ai enregistré en .dot, j'espère que c'est ce que tu espérais parce que je ne sais pas ce que tu appelles "code"...
    j'ai ajouté macro3: cache paragraphe 2 et marcro 4: refait apparaitre paragraphe 2.

    merci pour ta patience
    Fichiers attachés Fichiers attachés

  10. #10
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Les macros sont pas dans le document !

    Par contre, j'ai vu que tu as mis ton texte dans des signets.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.Bookmarks("MonSignet").Range.Style = "Monstyle"
    Et pour le faire apparaître :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ActiveDocument.Bookmarks("MonSignet").RAnge.Style = wdStyleNormal
    Sachant que ton document est protégé, tu dois le déprotéger pour effectuer tes modifications.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ActiveDocument.Unprotect
    Et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ActiveDocument.Protect wdAllowOnlyFormFields
    Pour lever la protection et pour la remettre.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    salut
    comme je savais pas comment te mettre les macros je les ai copiées dans le doc.
    j'ai essayé de copier la ligne que tu m'as donné pour déverouiller mais je dois la copier au mauvais endroit: j'ai la fenetre qui m'indique un bug. si tu peux me dire ou l'inserrer dans la macro stp
    A+
    Fichiers attachés Fichiers attachés

  12. #12
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Le code que j'ai mis ne te convient pas

    C'est quand même plus simple que tes nombreuses lignes inutiles.

    Il suffit de créer ton style Caché.

    Et de connaître le nom des différent signets.

    Trois pages de code au lieu de trois lignes.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  13. #13
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    ah oui effectivement!!!
    j'ai refait mes macro, elles font reapparaitre le texte caché!!! MERCI
    par contre j'ai toujours un soucis pour les liers avec les deux cases à cocher...

    pour la case à cocher j'ai mis cache1 "au démarrage" et montre1 "à la sortie" (meme si ce sera l'inverse, mais c'est pas grave) mais le programme s'arrete sur les lignes permettant de déproteger le doc...
    si tu peux jeter un oeil stp
    Fichiers attachés Fichiers attachés

  14. #14
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Vaoilà à quoi devrait ressembler ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Sub CaseACoch1A()
    MsgBox ActiveDocument.FormFields(1).Result
     
    If ActiveDocument.FormFields(1).Result = True Then
    ActiveDocument.Unprotect
    ActiveDocument.Bookmarks("P1").Range.Font.Hidden = True
    ActiveDocument.Protect wdAllowOnlyFormFields
    Else
    ActiveDocument.Unprotect
    ActiveDocument.Bookmarks("P1").Range.Font.Hidden = False
    ActiveDocument.Protect wdAllowOnlyFormFields
    End If
     
     
     
     
    End Sub
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  15. #15
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    Salut heureux oli,

    j'dois avoir la poisse! j'arrive pas a faire marcher le code que tu m'as filé...

    j'ai inserer les macros dans le nouveau doc word:
    cachep1 et montrep1 marchent quand on les execute simplement
    cachep2 et montrep2 marchent pas avec la "deprotection"
    caseacocher ne marche pas non plus...

    j'vais essayer cette apres midi mais si quelqu'un a une idee...

    A+ et merci encore
    Fichiers attachés Fichiers attachés

  16. #16
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    C'est quoi, cacher montrer ??

    Pourquoi tant de procédures ?
    Il suffit comme montré dans mon code de vérifier l'état de la case à cocher.
    Si elle est cocher, il faut montrer le texte contenu dans le signet, si elle n'est pas cochée, il faut cacher le texte.

    Malheureusement, le DMZ bloque ton doc.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  17. #17
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    oui effectivement ton code est plus simple, mais comme ca ne marchait pas quand je l'appliquait à la case, j'ai essayé avec ta premiere proposition (car j'étais sur qu'elle fonctionnait) et je ne suis pas revenu en arrière...

  18. #18
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    salut heureux oli

    voila le probleme est resolut.
    ton code était bon il suffisait d'utiliser boite à outil de control au lieu de formulaire. (merci à mécano41!!!!)

    Un GRAND merci à toi pour ton aide et ta patience!



    A+

  19. #19
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    je mets le fichier final (ouf!) en piece jointe pour ceux que ca interesse.

    Tchô
    Fichiers attachés Fichiers attachés

  20. #20
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    c'était trop beau...

    j'ai des champs de texte à faire remplir dans le document. Le problème c'est que lorsqu'on coche/decoche une case, tout ce que l'utilisateur à remplit s'efface...et revient sur le texte par défaut (tout comme les cases que l'on avait coché).
    voir n'ième piece jointe...

    Est ce que c'est possible de mémoriser ce qu'a fait l'utilisateur ou d'éviter ce "reset"?
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [XL-2013] Une macro pour cacher une colonne qui ne fonctionne plus
    Par DavidCsame dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 02/03/2015, 14h17
  2. [LibreOffice][Texte] Une macro pour styliser les paragraphes HTML
    Par Nerva dans le forum OpenOffice & LibreOffice
    Réponses: 4
    Dernier message: 05/11/2013, 19h15
  3. [WD-2007] Macro pour copier des paragraphes dans un tableau
    Par foxhound77 dans le forum VBA Word
    Réponses: 1
    Dernier message: 20/03/2013, 22h55
  4. [XL-2007] Macro pour cacher des onglets
    Par Kyoichi95 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 12/12/2012, 01h44
  5. Macro pour cacher des paragraphes
    Par juhel philippe dans le forum VBA Word
    Réponses: 6
    Dernier message: 12/12/2008, 08h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo