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 des paragraphes


Sujet :

VBA Word

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 17
    Points : 12
    Points
    12
    Par défaut Macro pour cacher des paragraphes
    Bonjour,

    Dans un document Word, je souhaite pouvoir afficher ou cacher certains paragraphes de façon automatique par l'activation d'une macro.
    Le but est de rédiger un seul document pédagogique qui contiendra des exercices et leurs corrections. Avant d'imprimer l'exemplaire pour les élèves, on appellera la macro afin de cacher tous les paragraphes qui auront été marqués comme étant des solutions.
    J'ai trouvé sur un forum une piste :
    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
    Sub cachep()
     
     
        Selection.GoTo What:=wdGoToBookmark, Name:="cacher"
        ActiveDocument.Bookmarks("cacher").Range.Style = "invisible"
     
    End Sub
     
    Sub montrep()
     
     
      Selection.GoTo What:=wdGoToBookmark, Name:="cacher"
      ActiveDocument.Bookmarks("cacher").Range.Style = wdStyleNormal
     
     
    End Sub
    Mais cette solution présente quelques inconvénients:
    • Il doit y avoir plusieurs zones correspondant à plusieurs signets à cacher (ex : signet 'cacher1', signet 'cacher2', ...). Il faut donc boucler sur tous les signets dont le nom commence par 'cacher...'.
    • Lorsque l'on veut réafficher le paragraphe, on lui réaffecte le style normal qui n'était peut être pas son style d'origine.
    • La mise en page se trouve modifiée vu que lorsque l'on cache un texte (ce que fait le style 'invisible'), ce paragraphe disparait, provoquant la remonté de tout ce qui suit.


    Ne connaissant pas le langage VB et encore moins VBA pour Word, avez-vous une solution, une piste à me suggérer (avec les signet, en mettant un gros rectangle blanc sur les zones à cacher, ...)

    Merci d'avance,

    Philippe

  2. #2
    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
    Salut,

    Ce n'est pas au niveau du style que tu dois travailler, mais au niveau de la police.
    On peut le faire au niveau du style, mais c'est plus simple par le police.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Afficher()
    ActiveDocument.Bookmarks("Cacher").Range.Font.Hidden = True
    End Sub
    Le seul inconvénient est que tous les signets doivent avoir un nom différent.

    Mais une simple boucle et un test devrait le faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Afficher()
    Dim bm As Bookmark
    For each bm in ActiveDocument.Bookmarks
    If left(bm.name, 2) = "Ca" then bm.Range.Font.Hidden = True
    next bm
    End Sub
    et les signets seraient Cacher01, Cacher02, Cacher03,...
    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 !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    Bravo et merci,

    Ca marche très bien. Le seul petit inconvénient qui reste est que lorsque l'on fait disparaitre un bloc, tout ce qui était en dessous remonte. Est-il possible de garder l'emplacement où il y avait l'information que l'on vient de faire disparaitre de manière à ne pas perturber la mise en page.

    Si je reprends mon exemple d'énoncé-solution, si l'on fait disparaitre les solutions, je souhaite garder, sous forme d'un bloc blanc, l'emplacement occupé précédemment par la solution de manière à ce que l'étudiant puisse y écrire à la main sa solution.

    Encore merci,

    Philippe

  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
    Oui, au lieu de cacher le texte, il suffit de le mettre en blanc.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.Bookmarks(1).Range.Font.Color = wdColorWhite
    L'espace occupé le restera.
    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
    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
    Salut,

    Vu que tu as compris ce que te propose Heureux-Oli, tu vas qu'il y a encore mieux et tu n'as même pas besoin des signets.

    Tu crées un style (de paragraphe) dans Word que tu appelles "Correction", tu écris toutes corrections dans ce style, puis lorsque tu ne veux qu'il soit apparent (mais qu'il soit présent) tu vas dans Format-Style, tu choisis le style "Correction", tu cliques sur "Modifier" et tu changes l'attribut de couleur de police en blanc ==> C'est tout, tous tes paragraphes "Correction" passent en blanc et donc ne sont plus visibles et pour les faire ré-apparaître, tu refais la même chose avec une couleur "Automatique".

    Mais attention, il y a plusieurs inconvénients :
    1. Tu dois utiliser du papier blanc (sinon le texte va apparaître)
    2. Le texte est toujours présent (ce que tu veux) donc tes élèves peuvent faire la même manip que toi et donc voir les solutions (sauf si tu leurs fournis en PDF)
    3. Si tu sélectiones à la souris, la solution passe en inverse vidéo donc texte redevient visible
    4. Les paragraphes restent ==> pas de gain en terme de nombre de pages car la place du texte reste (mais ça c'est que tu sembles vouloir donc ça ne semble pas un problème)
    5. Si un élève supprime le style "Correction", ton texte repasse en normal ==> il redevient visible


    Sinon c'est tout simple. Il ne faut pas que tu oublies d'utiliser le style "Correction" pour tes corrections et si tu diffuses en PDF, tu n'auras pas trop de problème (mais un petit malin pourra te trouver la ruse suivante en utilisant PDF Writer : utiliser l'outil de sélection avancée, sélectionner le texte invisible et faire un copier-coller mais celui-là tu peux déjà lui filer une bonne note, c'est toujours un qui saura se débrouiller dans la vie).

    @+

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    Salut,

    Merci pour cette nouvelle solution.

    Effectivement, je comptais distribuer aux élèves une version PDF du document et, oui, nous avons déjà quelques élèves qui savent faire du copier-coller d'une partie invisible sur un document PDF.

    Encore merci.

    Philippe

  7. #7
    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
    On peut alors cacher le lignes et ajouter des paragraphes vides pour garder l'espace.
    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 !

Discussions similaires

  1. [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
  2. [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
  3. Macro pour cacher paragraphes
    Par benj0 dans le forum VBA Word
    Réponses: 19
    Dernier message: 26/02/2008, 16h58
  4. macro pour créer des graphiques
    Par Sebastien_INR59 dans le forum Access
    Réponses: 1
    Dernier message: 07/06/2006, 09h44
  5. Pb pour cacher des contrôles à l'ouverture d'une page
    Par Anne1969 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/01/2005, 15h16

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