|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Inscription : mai 2002 Messages : 83 ![]() |
Bonjour,
j'ai une document word contenant une liste hiérarchique numerotée, du style: 1. blablabla a. bliblibli b. bleblebleLorsque je me met en mode plan, les titres ne sont pas considérés comme titres pour un plan, il faut le faire manuellement (sinon, pas de table des matieres). Existe-t-il un moyen de créer automatiquement le plan a partir de cette liste (pour éviter de me taper tous les titres de la liste un a un... et la liste est longue!) ? Vu qu'elle est deja structurée, ca me paraitrait logique qu'une telle fonction existe, mais je ne l'ai pas trouvée... Merci ! |
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 354 ![]() |
Tu n'as pas utilisé les styles ?
Une table des matières ne s'obtient pas par le plan, mais par la table des matières. Dans ma signature, il y a un tuto sur la table des matières.
__________________
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 ! |
|
|
00
|
|
|
#3 | ||
|
Nouveau Membre du Club
![]() Inscription : mai 2002 Messages : 83 ![]() |
Salut !
Oui mais il faut bien définir tes titres ! En fait mon document word est généré depuis une page ASP, un truc du style: Code :
Et vu que la liste générée est extremement longue (environ 100 pages), je n'ai pas envie de définir tous les titres un a un |
||
|
|
00
|
|
|
#4 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 354 ![]() |
Dans ce cas, on pourrais éventuellement parcourir le document et repérer les "Titres" et changer leur style.
__________________
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 ! |
|
|
00
|
|
|
#5 |
|
Nouveau Membre du Club
![]() Inscription : mai 2002 Messages : 83 ![]() |
Ok, donc ce que tu dis est qu'il n'y a pas de moyen de faire cela automatiquement, et que je dois me taper tous les titres un a un ?
|
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 354 ![]() |
C'est pas ce que j'ai dit !
Si on peut repérer une séquence dans les pseudo titres, on peut envisager en VBA de modifier le style. Peux-tu mettre un morceau de texte réel pour voir à quoi il ressemble ?
__________________
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 ! |
|
|
00
|
|
|
#7 |
|
Nouveau Membre du Club
![]() Inscription : mai 2002 Messages : 83 ![]() |
Oui, voila a quoi cela ressemble en mode page / mode plan:
|
|
|
00
|
|
|
#8 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 354 ![]() |
Un bout de fichier m'intéresserais un peu plus, pour voir comment il est construit.
__________________
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 ! |
|
|
00
|
|
|
#10 | ||
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 354 ![]() |
Code :
__________________
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 ! |
||
|
|
00
|
|
|
#11 |
|
Nouveau Membre du Club
![]() Inscription : mai 2002 Messages : 83 ![]() |
Wow, c'est excellent !
Merci beaucoup ! J'ai juste du changer header par titre pour que ca fonctionne ! Je n'y connais rien en VBA, donc y'a -t-il moyen de remplacer cette ligne For Each para In ActiveDocument.Paragraphs Par une autre pour que lma macro s'execute sur le texte séléctionné ? du style SelectedText.Paragraphs ? |
|
|
00
|
|
|
#12 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 354 ![]() |
Essaie de remplace ActiveDocument par selection.paragraphs.
Pour le Header, le soft au taf est en anglais Il faut donc faire avec.
__________________
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 ! |
|
|
00
|
|
|
#13 |
|
Nouveau Membre du Club
![]() Inscription : mai 2002 Messages : 83 ![]() |
SUper, un enorme merci !!!!!!
|
|
|
00
|
|
|
#14 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 354 ![]() |
Alors, clique sur le tag
__________________
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 ! |
|
|
00
|
|
|
#15 | ||||
|
Nouveau Membre du Club
![]() Inscription : mai 2002 Messages : 83 ![]() |
Encore une petite question a propos de cet procédure:
Comment faire pour que du texte ne soit pas mis en titre Je peux avoir par exemple: Code :
J'ai essayé d'ajouter un case 0 qui ne fait rien, mais le texte est qd meme vu en tant que paragraphe, mais je n'arrive pas a trouver une condition pour vérifier que c'esr juste du texte et pas un titre ni une liste Ci dessous, rapel du code: Code :
|
||||
|
|
00
|
|
|
#16 |
![]() ![]() ![]() Olivier LebeauContrôleur d'industrie Inscription : février 2006 Messages : 17 354 ![]() |
C'est lié au fait que tu n'as pas un nouveau paragraphe, mais un simple retour à la ligne.
Il faudrait avant d'appliquer le titre supprimer le retour à la ligne et le changer en paragraphe. Et alors, tu n'auras cet effet que sur le titre.
__________________
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 ! |
|
|
00
|
|
|
#17 |
|
Nouveau Membre du Club
![]() Inscription : mai 2002 Messages : 83 ![]() |
Pourtant, le commentaire, ne fait pas partie du titre.
Au niveau de word il n'est vu ni comme un element de liste, ni comme un titre cf doc ci joint: http://tocanne.free.fr/doc.doc Pourtant la macro le voit comme un titre de niveau 1, on a Case Selection.Range.ListFormat.ListLevelNumber qui vaut 1. Poiurquoi ce simple texte est il vu comme une titre, et n'existe-t-il pas une autre fonction (du style ISText(valeur)) pour vérifier qu'il ne s'agit que de texte, et pas d'un titre, liste ou autre formatage ? |
|
|
00
|
|
|
#18 |
![]() ![]() JF JousseaumeInscription : octobre 2007 Messages : 2 390 ![]() |
Salut,
Pour les textes qui ne sont pas des listes, tu peux utiliser "Selection.Range.ListFormat.ListType" qui vaut alors 0 Mais tu te compliques la vie, pas de besoin de macro, Word tout seul le faire avec de simples rechercher/remplacer. Utilisez plutôt le soft que des macros, c'est tellement plus simple. ![]() Dans ton cas, sur le fichier que tu as passer en exemple sur le site, tu recherches tous les paragraphes (style normal) qui commencent par un N° (avec n point et une tabulation) puis tu les fais passer en titre niveau n); puis tu décrementes ceux qui ont (n-1) points (en début) en titre niveau (n-1)... jusqu'à titre 1 et voila ![]() Le pb se complexifie un peu si tu as des éventuelles suites de n° avec des points dans ton texte car là tu dois détecter les débuts de paragraphes dans Word. Tu dois alors remplacer en 2 fois selon le même principe. Par exemple pour les niveaux 4, tu cliques sur la commande "Edition-Remplacer..." Dans Rechercher, tu tapes (pas trop fort sinon tu vas casser le clavier) le texte suivant entre les guillements (et sans les guillemets) "^p^#.^#.^#.^#.^t" qui recherche une fin de paragraphe (donc le début du suivant) avec 4 fois un nombre suivi d'un point, le tout suivi d'une tabulation. La recherche doit se faire sans Style. Dans remplacer, tu tapes le texte suivant entre les guillements (et sans les guillemets) "^&$$$"; qui insère la chaine $$$ à la suite du contenu de ta recherche avec l'option "remplacer tout". Puis tu refais une recherche avec "$$$" sans style que tu remplaces par...du rien ("") avec le style "Titre 4". C'est bo Word |
|
|
00
|
|
|
#19 | ||
|
Nouveau Membre du Club
![]() Inscription : mai 2002 Messages : 83 ![]() |
Excellent sepia !!
Selection.Range.ListFormat.ListType est exactement le test que je cherchais ! La macro est utile car le document que je reformate fait 80 pages donc a la main c'est un peu long... Voici donc les macros finales, un grand merci a sepia et heureux-oli: ParaChangeStyle est la proc principale a appeler: Code :
|
||
|
|
00
|
|
|
#20 |
![]() ![]() JF JousseaumeInscription : octobre 2007 Messages : 2 390 ![]() |
Alors, clique sur le tag
![]() A+ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com