: Macro pour cacher paragraphe [Word] - Logiciels - Windows & Software
Marsh Posté le 21-08-2006 à 18:39:27
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?
Marsh Posté le 22-08-2006 à 11:59:38
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!
Marsh Posté le 22-08-2006 à 12:14:51
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.
Marsh Posté le 22-08-2006 à 12:36:24
Ç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?
Marsh Posté le 22-08-2006 à 14:35:12
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!
Marsh Posté le 22-08-2006 à 20:14:13
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.
Marsh Posté le 22-08-2006 à 20:45:04
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
Marsh Posté le 22-08-2006 à 21:01:25
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.
Marsh Posté le 22-08-2006 à 21:30:04
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
Marsh Posté le 22-08-2006 à 23:00:05
Merci bien TAM136, ce sont de très bons éléments pour que je puisse commencer ma macro.
Bonne soirée!
Xophox
Marsh Posté le 23-08-2006 à 06:23:36
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.
Marsh Posté le 23-08-2006 à 17:42:29
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!!!
Marsh Posté le 23-08-2006 à 19:00:50
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?
Marsh Posté le 23-08-2006 à 19:46:16
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?
Marsh Posté le 23-08-2006 à 21:38:36
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
Marsh Posté le 23-08-2006 à 21:51:09
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.
Marsh Posté le 24-08-2006 à 15:27:27
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 !
Marsh Posté le 24-08-2006 à 18:49:24
Bizarre, bizarre!
Tu fais comment pour lancer tes macros? Essaie de décrire précisément ta procédure.
Marsh Posté le 24-08-2006 à 19:16:20
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 !!
Marsh Posté le 24-08-2006 à 19:51:30
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?
Marsh Posté le 25-08-2006 à 18:04:39
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?
Marsh Posté le 29-08-2006 à 08:08:43
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.
Marsh Posté le 31-08-2006 à 13:05:59
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.
Marsh Posté le 21-08-2006 à 18:19:56
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