Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4346 connectés 

  FORUM HardWare.fr
  Windows & Software
  Logiciels

  [Word]: Macro pour cacher paragraphe

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Word]: Macro pour cacher paragraphe

n°2494745
xophox
Posté le 21-08-2006 à 18:19:56  profilanswer
 

Bonjour,
 
Je souhaite réaliser une macro permettant de cacher un paragraphe ayant comme style (mise en forme) "Mon Style".
 
Auriez-vous des idées?
 
Merci d'avance!
 
Cordialement,
Xophox

mood
Publicité
Posté le 21-08-2006 à 18:19:56  profilanswer
 

n°2494774
TAM136
Posté le 21-08-2006 à 18:39:27  profilanswer
 

Bonsoir
 
Est-ce que ça veut dire que tous les paragraphes n'ont pas la même mise en forme et que tu veux donccacher uniquement certains paragarphes et non tous? De plus, tu entends masquer par cacher?

n°2495324
xophox
Posté le 22-08-2006 à 11:59:38  profilanswer
 

Exactement.
Tous les paragraphes n'ont pas la même mise en forme, et je souhaite cacher (masquer) certaines mises en forme.
 
Je souhaite donc savoir s'il existe un moyen de faire
CacheTexte si MiseEnForme = "Ma Mise en Forme"
 
Merci pour vos réponses!
 

n°2495344
AztechXX
Le bonheur est dans le pré
Posté le 22-08-2006 à 12:14:51  profilanswer
 

Quand tu dis cacher tu veux dire pas là à l'impression et en print preview (apercu ?) si oui , tu applique sur ton paragraphe le formatage de caractère "hidden" (je sais pas le nom en fr (format / font / effect/ hidden)
 
Puis après tu peux en faire un style  
 
ps: désolé moi c en anglais au taf.

n°2495369
TAM136
Posté le 22-08-2006 à 12:36:24  profilanswer
 

Ça se dit masquer tout simplement.Xophox, quand tu parles de mise en forme, tu parles de quoi précisément: l'option Mise en forme automatique dans le menu format, la police,etc...? T'as un exemple parlant?

n°2495522
xophox
Posté le 22-08-2006 à 14:35:12  profilanswer
 

Merci de vous pencher sur le sujet!  
 
Voilà le cas concret:
J'ai un document qui se décline en plusieurs versions selon le lecteur.
 
Il existe une partie commune lisible par tout le monde dont la mise en forme est "Commun", puis les différentes sections ont comme mise en forme "Lecteur1", "Lecteur2"...
 
Voilà. Donc j'aimerais mettre en place un bouton, ou une fonction qui permet d'indiquer quel est le lecteur en cours, afin de cacher le texte qui ne le concerne pas. Genre si on clique sur le bouton "Lecteur 1", toutes les sections qui ont la mise en forme "Lecteur 2" sont automatiquement cachées.
 
Merci pour votre aide!

n°2495980
TAM136
Posté le 22-08-2006 à 20:14:13  profilanswer
 

Là, je t'avoue, que le problème est un plus compliqué et je ne comprends pas tout. A priori, tu envoies ton fichier: par  quel biais: mail,etc..?. Si oui, pourquoi ne pas envoyer à chaque groupe le document ponctionné de la partie qui ne le concerne pas. Tu emploies le terme de masquer ou cacher mais je l'interprète comme couper des morceaux du document. Car effectivement comme en parle AztechXX, à ce moment là, les parties en question sont masquées à l'impression mais pas à la lecture. Par contre, si on coupe, à ce moment là par définition, les parties n'apparaissent plus.
Enfin, tu ne précises toujours pas le type de mise en forme.
Bref, je te propose une macro perfectible et incomplète. Elle suppose que tu crées des signets sur les parties à masquer (attention mon code coupe ou supprime les parties) et elle suppose qu'il faut lancer la macro. Il faudrait une procédure permettant de lancer la macro à l'ouverture du document: Autorun mais là je ne saurais pas te dire et en outre comment faire pour que la macro se lance pour certains et pas pour d'autres, alors là!
 
Sub Cacher()
 Selection.GoTo What:=wdGoToBookmark, Name:="Signet1"
'Sélectionner le signet 1
 Selection.Delete
'Supprimer la sélection
  Selection.GoTo What:=wdGoToBookmark, Name:="Signet2"
'Sélectionner le signet 2
  Selection.Delete
'Supprimer la sélection
End Sub
 
Bref bis, il faut encore quelques précisions.

n°2496018
xophox
Posté le 22-08-2006 à 20:45:04  profilanswer
 

Merci beaucoup TAM.
En fait il s'agit réellement de cacher le texte à la lecture. (comme le disait Aztech, de la même facon que la fonction Hidden)
En effet, l'objectif est d'avoir un fichier référentiel avec une partie commune à tous les lecteurs, et quelques paragraphes spécifiques pour chaque lecteur.
Imagine un document en anglais (partie commune), avec quelques spécificités selon les pays par exemple en français, espagnol et allemand.
Le lecteur français ne souhaite lire que la partie commune en anglais, et sa partie spécifique en français. Il cliquerait donc sur la macro "Français", qui cacherait les paragraphes correspondant aux mises en forme "Espagnol" et "Allemand".
 
Cela permet ainsi de ne gérer qu'un seul document au lieu de plusieurs dont la partie commune serait redondante.
 
Rem: Je ne souhaite pas couper le texte, car le document n'est pas statique. Le français par exemple peut ajouter quelques lignes dans la partie commune ainsi que dans sa partie spécifique, puis l'envoyer à l'Espagnol.
 
Voilà.. J'espère être assez clair... Je pense qu'une telle macro pourrait servir à pas mal de monde d'ailleurs.
 
En tout cas, merci pour vos propositions!
Xophox

n°2496034
TAM136
Posté le 22-08-2006 à 21:01:25  profilanswer
 

Excuses moi xophox mais masquer veut simplement dire masquer à l'impression pas à la lecture en tout cas si on parle de la fonction hidden. Ça, je peux te le garantir.Par contre, a priori, tu dis le lecteur cliquerait sur la macro.Si je comprends bien, tu laisses entendre que le lecteur a malgré tout la possibilté de lire. Tu ne l'empêches pas de lire. Par ailleurs, quand je dis couper, je ne veux pas dire couper définitivement.

n°2496047
TAM136
Posté le 22-08-2006 à 21:30:04  profilanswer
 

Tu peux d'ailleurs faire le test avec cette macro. Mais il faut d'abord définir des signets.
Sub CacherTest()
Selection.GoTo What:=wdGoToBookmark, Name:="Signet1"
  With Selection.Font
    .Hidden = True
  Selection.GoTo What:=wdGoToBookmark, Name:="Signet2"
   With Selection.Font
    .Hidden = True
    End With
    End With
End Sub

mood
Publicité
Posté le 22-08-2006 à 21:30:04  profilanswer
 

n°2496106
xophox
Posté le 22-08-2006 à 23:00:05  profilanswer
 

Merci bien TAM136, ce sont de très bons éléments pour que je puisse commencer ma macro.
 
Bonne soirée!
Xophox

n°2496207
TAM136
Posté le 23-08-2006 à 06:23:36  profilanswer
 

Bonjour
 
Ce matin, en me réveillant, j'ai pensé à truc, à la fonction invisible et non hidden. J'y réfléchis en attendant que d'autres aient peut-être une idée.Tu n'as pas dit si tu veux empêcher les lecteurs français de lire tout ou si tu laisses malgré tout cette liberté. Les conséquences ne sont pas les mêmes et il faut alors en tenir compte dans la macro, si macro, il faut bien.

n°2496763
xophox
Posté le 23-08-2006 à 17:42:29  profilanswer
 

Oui, en effet, il faut laisser la liberté de lire tout.
Le problème vient du fait que cette macro n'est pas reversible: si on la modifie en .Hidden = True après l'avoir exécutée, elle n'affiche pas le paragraphe, comme on aurait pu s'y attendre...
 
La fonction invisible me semble être une bonne alternative. Mais comment pourrait-on l'implémenter?
 
Merci pour vos idées!!!

n°2496829
TAM136
Posté le 23-08-2006 à 19:00:50  profilanswer
 

Et bien si, la macro peut-être réversible avec l'instruction .Hidden= False.
A ce moment là, il faut créer un userform avec deux boutons: un bouton dansn lesquel on colle l'instruction .Hidden=True et un bouton dans lequel on colle l'instruction .Hidden=False sur lequel, l'utilisateur clique après la lecture pour réafficher ou démasquer les parties en questions. Pour ce qui est de la fonction Invisible, je réfléchis mais maintenant, je me psoe une question. Tu dis que les lecteurs peuvent être libres de lire tout. Dans ces conditions, pourquoi ne pas créer tout simplement un sommaire avec le titre des paragraphes et créer un lien hypertexte sur chacune des parties.  
 
Il y aurait par exemple dans le sommaire
I Patati patata
II Bidule-Truc
III Time is money (attention cette partie est en anglais)
IV Haben sie verstanden? (attention, cette partie est en allemand)
VI Machin chouette
etc...
 
Ensuite, il suffirait aux lecteurs de cliquer sur le lien qui va les conduire sur la paragraphe qui les intéresse.
 
Qu'en penses-tu?

n°2496867
xophox
Posté le 23-08-2006 à 19:46:16  profilanswer
 

Pardon, je voulais bien dire .Hidden = False.
Cette commande ne permet pas de faire réapparaître le signet caché... Va savoir... Comme si le fait que le signet soit caché ne permette pas de le voir et donc de le faire réapparaître.
 
Ta solution ne convient pas réellement, car la structure du document est plutot du style:
I. I like it
 a) Just like that
 b) auf Deutsh
 
II. But sometimes
 a) It is better
 b) comme cela
 c) y como eso
 
II. For sure
 a) c'est un problème
 b) with a solution
 c) Last Point
 
Voilà voilà...  
 
Des idées?

n°2496956
TAM136
Posté le 23-08-2006 à 21:38:36  profilanswer
 

C'est bien un code de ce type que t'utilises? Chez moi,ça fonctionne bel et bien.
 
Sub Démasquer
Selection.GoTo What:=wdGoToBookmark, Name:="Signet1"
  With Selection.Font
    .Hidden = False
  Selection.GoTo What:=wdGoToBookmark, Name:="Signet2"
   With Selection.Font
    .Hidden = False
    End With
    End With
    End Sub

n°2496964
TAM136
Posté le 23-08-2006 à 21:51:09  profilanswer
 

Attention à ne pas mélanger
 
Sub Cacher()
Selection.GoTo What:=wdGoToBookmark, Name:="Signet1"
  With Selection.Font
    .Hidden = True
  Selection.GoTo What:=wdGoToBookmark, Name:="Signet2"
   With Selection.Font
    .Hidden = True
    End With
    End With
End Sub
 
qui masque les signets et
 
Sub Supprimer()
 Selection.GoTo What:=wdGoToBookmark, Name:="Signet1"
'Sélectionner le signet 1
 Selection.Delete
'Supprimer la sélection
  Selection.GoTo What:=wdGoToBookmark, Name:="Signet2"
'Sélectionner le signet 2
  Selection.Delete
'Supprimer la sélection
End Sub  
 
qui supprime les signets. Je t'ai peut-être embrouillé avec les noms de macro.

n°2497491
xophox
Posté le 24-08-2006 à 15:27:27  profilanswer
 

C'est bizarre pour la réversibilite:
Sub hideSpain()
Selection.GoTo What:=wdGoToBookmark, Name:="Spain"
  With Selection.Font
    .Hidden = True
      End With
End Sub
 
 => cache bien le signet Spain, mais
 
Sub displaySpain()
Selection.GoTo What:=wdGoToBookmark, Name:="Spain"
  With Selection.Font
    .Hidden = False
      End With
End Sub
 => positionne le curseur là où devrait se trouver le signet Spain, mais sans toutefois l'afficher...
 
Comment faire ?
Merci pour vos conseils !


Message édité par xophox le 24-08-2006 à 15:27:47
n°2497817
TAM136
Posté le 24-08-2006 à 18:49:24  profilanswer
 

Bizarre, bizarre!
 
Tu fais comment pour lancer tes macros? Essaie de décrire précisément ta procédure.

n°2497848
xophox
Posté le 24-08-2006 à 19:16:20  profilanswer
 

Hé bien j'ai entré ces 2 fonctions dans l'editeur VBA, puis j'exécute l'une (cacher), puis j'exécute l'autre (afficher). Mais la deuxième ne s'exécute pas.
 
J'ai cependant trouvé une astuce: pour la deuxième, le problème vient du fait qu'il ne sélectionne pas mon signet. Du coup je fais une sélection sur tout le texte (WholeStory), puis j'assigne un .hidden=false, et je recache de nouveau ceux que je ne souhaite pas être affichés.
 
Voilà...  
En tout cas, merci beaucoup pour ton aide TAM !!

n°2497885
TAM136
Posté le 24-08-2006 à 19:51:30  profilanswer
 

Quand tu dis que tu exécutes, est-ce que tu entre dans VBE ou est-ce que tu passes par le menu Outils/Macro/Macros/Sélectionner la macro en question et double-click ou click sur exécuter?

n°2498352
xophox
Posté le 25-08-2006 à 11:17:50  profilanswer
 

J'ai essayé ces 2 chemins.
Aucun des deux ne fonctionne.

n°2498911
TAM136
Posté le 25-08-2006 à 18:04:39  profilanswer
 

Est-ce qu'après avoir lancé ta macro, ton signet hideSpain ne serait pas sélectionné? Si c'est le cas et que appuies par exemple sur la barre d'espace, alors, il y a suppression.
Par ailleurs, tu dis que tu a essayé les deux chemins. Et pour créer tes macros, même question, t'es allé dans VBE ou dans Outils/Macro/Macros et t'as collé tes codes?

n°2501617
TAM136
Posté le 29-08-2006 à 08:08:43  profilanswer
 

Salut
 
Pour ce qui est de la fonction visible j'ai cru comprendre qu'elle n'est pas disponible sur word 97. Concernant word 2003, je crois qu'elle s'applique à un objet ou contrôle. Je ne sais pas si on peut l'appliquer à un morceau de texte.J'espère que t'as pu te débrouiller avec la fonction hidden.

n°2504043
TAM136
Posté le 31-08-2006 à 13:05:59  profilanswer
 

Salut,
 
Ma question peut paraître stupide mais as tu fait apparaître tes marques de paragraphes? Je ne comprenais pas ce que tu disais. Si tu masques et que tu fais apparaître tes marques de paragraphe, le texte est visible à l'écarn et pas à l'impression.Si tu ne fais pas apparaître les marques de paragraphes, le texte n'est pas visible à l'écran.

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Windows & Software
  Logiciels

  [Word]: Macro pour cacher paragraphe

 

Sujets relatifs
[Powerpoint] Macro et diaporamacomment changer l'icone de word Excel et ppt?help me
[Word] Souci à la génération du sommaireerreur 1120 avec word
Word/Outlook 2003 et dossier par défautWord 2000 : Problèmes avec les .doc
Convertir des document word (.doc) vers du rtfPublipostage entre Excel et Word
word...Probleme selection de bac avec Word?
Plus de sujets relatifs à : [Word]: Macro pour cacher paragraphe


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)