Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word
Word Forum d'entraide sur le traitement de texte Microsoft Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/09/2007, 12h27   #1
Nouveau Membre du Club
 
Inscription : mai 2002
Messages : 83
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 83
Points : 25
Points : 25
Par défaut [STYLES]Word: Créer un plan a partir d'une liste hiérarchique ?

Bonjour,
j'ai une document word contenant une liste hiérarchique numerotée, du style:

1. blablabla
a. bliblibli
b. blebleble
Lorsque 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 !
chris92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2007, 19h03   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2007, 09h14   #3
Nouveau Membre du Club
 
Inscription : mai 2002
Messages : 83
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 83
Points : 25
Points : 25
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 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
<%Response.ContentType = "application/msword"%>
<html>
 
<body>
<ol>
<li> Titre 1
<ol>
<li>Titre 1.1
</ol>
</ol>
 
</body>
</html>
Ce qui me permet d'avoir une liste hiérarchique ordonnée MAIS les titres ne sont pas définis en tant que titres ! La est mon probleme !
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
chris92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2007, 16h31   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/09/2007, 09h16   #5
Nouveau Membre du Club
 
Inscription : mai 2002
Messages : 83
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 83
Points : 25
Points : 25
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 ?
chris92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/09/2007, 09h41   #6
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2007, 09h32   #7
Nouveau Membre du Club
 
Inscription : mai 2002
Messages : 83
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 83
Points : 25
Points : 25
Oui, voila a quoi cela ressemble en mode page / mode plan:

chris92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2007, 16h24   #8
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2007, 15h26   #9
Nouveau Membre du Club
 
Inscription : mai 2002
Messages : 83
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 83
Points : 25
Points : 25
Je t'ai mis un bout de document ici:

document

Merci pour ton aide !!!
chris92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2007, 16h06   #10
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
Sub ParaChangeStyle()
Dim para As Paragraph
For Each para In ActiveDocument.Paragraphs
para.Range.Select
Select Case Selection.Range.ListFormat.ListLevelNumber
Case 1
Selection.Style = ActiveDocument.Styles("Heading 2")
Case 2
Selection.Style = ActiveDocument.Styles("Heading 3")
End Select
 
 
Next para
 
End Sub
En premier essai, mais il faut changer pour ne travailler qu'avec une sélection et pas avec tout le 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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2007, 18h25   #11
Nouveau Membre du Club
 
Inscription : mai 2002
Messages : 83
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 83
Points : 25
Points : 25
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 ?
chris92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2007, 18h34   #12
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2007, 18h56   #13
Nouveau Membre du Club
 
Inscription : mai 2002
Messages : 83
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 83
Points : 25
Points : 25
SUper, un enorme merci !!!!!!
chris92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2007, 19h09   #14
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2007, 09h55   #15
Nouveau Membre du Club
 
Inscription : mai 2002
Messages : 83
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 83
Points : 25
Points : 25
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 :
1
2
3
4
5
6
 
5.1 MUSIC STUDIO
 
Commentaire
 
  5.1.1 blablabla
Avec la procedure actuelle, le commentaire est ausi passé en titre.
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 :
1
2
3
4
5
6
7
8
9
10
11
 
For Each para In ActiveDocument.Paragraphs
        para.Range.Select
        Select Case Selection.Range.ListFormat.ListLevelNumber
        Case 0
        Case 1
            Selection.Style = ActiveDocument.Styles("Titre 2")
        Case 2
            Selection.Style = ActiveDocument.Styles("Titre 3")
        End Select
    Next para
chris92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2007, 14h04   #16
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 354
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 354
Points : 29 270
Points : 29 270
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2007, 14h27   #17
Nouveau Membre du Club
 
Inscription : mai 2002
Messages : 83
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 83
Points : 25
Points : 25
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 ?
chris92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2007, 02h01   #18
Rédacteur/Modérateur
 
Avatar de Sepia
 
Homme JF Jousseaume
Inscription : octobre 2007
Messages : 2 390
Détails du profil
Informations personnelles :
Nom : Homme JF Jousseaume
Âge : 48
Localisation : France

Informations professionnelles :
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 2 390
Points : 3 356
Points : 3 356
Par défaut Et Word sauve le monde (et sans macro)

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
Sepia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2007, 11h27   #19
Nouveau Membre du Club
 
Inscription : mai 2002
Messages : 83
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 83
Points : 25
Points : 25
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 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
 
Sub ParaChangeStyle()
    Call setstyle
    Dim para As Paragraph
    Dim test As String
    For Each para In ActiveDocument.Paragraphs
        para.Range.Select
        test = Selection.Range.ListFormat.ListType
        If test <> 0 Then
            Select Case Selection.Range.ListFormat.ListLevelNumber
            Case 1
                Selection.Style = ActiveDocument.Styles("Titre 2")
            Case 2
                Selection.Style = ActiveDocument.Styles("Titre 3")
           End Select
        End If
    Next para
End Sub
 
Sub setstyle()
'
' Masetstyle Macro
' Macro enregistrée le 26/09/2007 par Tocanne
'
    With ActiveDocument.Styles("Titre 1").Font
        .Name = "Courier New"
        .Size = 10
        .Bold = False
        .Italic = False
        .Underline = wdUnderlineNone
        .UnderlineColor = wdColorAutomatic
        .StrikeThrough = False
        .DoubleStrikeThrough = False
        .Outline = False
        .Emboss = False
        .Shadow = False
        .Hidden = False
        .SmallCaps = False
        .AllCaps = False
        .Color = wdColorAutomatic
        .Engrave = False
        .Superscript = False
        .Subscript = False
        .Scaling = 100
        .Kerning = 16
        .Animation = wdAnimationNone
        .SizeBi = 16
        .NameBi = "Arial"
        .BoldBi = True
        .ItalicBi = False
    End With
    With ActiveDocument.Styles("Titre 1")
        .AutomaticallyUpdate = False
        .BaseStyle = "Normal"
        .NextParagraphStyle = "Normal"
    End With
    With ActiveDocument.Styles("Titre 1").ParagraphFormat
        .SpaceBefore = 0
        .SpaceBeforeAuto = False
        .SpaceAfter = 10
        .SpaceAfterAuto = False
    End With
    With ActiveDocument.Styles("Titre 2").Font
        .Name = "Courier New"
        .Size = 10
        .Bold = False
        .Italic = False
        .Underline = wdUnderlineNone
        .UnderlineColor = wdColorAutomatic
        .StrikeThrough = False
        .DoubleStrikeThrough = False
        .Outline = False
        .Emboss = False
        .Shadow = False
        .Hidden = False
        .SmallCaps = False
        .AllCaps = False
        .Color = wdColorAutomatic
        .Engrave = False
        .Superscript = False
        .Subscript = False
        .Scaling = 100
        .Kerning = 0
        .Animation = wdAnimationNone
        .SizeBi = 14
        .NameBi = "Arial"
        .BoldBi = True
        .ItalicBi = True
    End With
    With ActiveDocument.Styles("Titre 2")
        .AutomaticallyUpdate = False
        .BaseStyle = "Normal"
        .NextParagraphStyle = "Normal"
    End With
    With ActiveDocument.Styles("Titre 2").ParagraphFormat
        .SpaceBefore = 0
        .SpaceBeforeAuto = False
        .SpaceAfter = 10
        .SpaceAfterAuto = False
    End With
    With ActiveDocument.Styles("Titre 3").Font
        .Name = "Courier New"
        .Size = 10
        .Bold = False
        .Italic = False
        .Underline = wdUnderlineNone
        .UnderlineColor = wdColorAutomatic
        .StrikeThrough = False
        .DoubleStrikeThrough = False
        .Outline = False
        .Emboss = False
        .Shadow = False
        .Hidden = False
        .SmallCaps = False
        .AllCaps = False
        .Color = wdColorAutomatic
        .Engrave = False
        .Superscript = False
        .Subscript = False
        .Scaling = 100
        .Kerning = 0
        .Animation = wdAnimationNone
        .SizeBi = 13
        .NameBi = "Arial"
        .BoldBi = True
        .ItalicBi = False
    End With
    With ActiveDocument.Styles("Titre 3")
        .AutomaticallyUpdate = False
        .BaseStyle = "Normal"
        .NextParagraphStyle = "Normal"
    End With
    With ActiveDocument.Styles("Titre 3").ParagraphFormat
        .SpaceBefore = 0
        .SpaceBeforeAuto = False
        .SpaceAfter = 10
        .SpaceAfterAuto = False
    End With
 
End Sub
chris92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2007, 23h54   #20
Rédacteur/Modérateur
 
Avatar de Sepia
 
Homme JF Jousseaume
Inscription : octobre 2007
Messages : 2 390
Détails du profil
Informations personnelles :
Nom : Homme JF Jousseaume
Âge : 48
Localisation : France

Informations professionnelles :
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 2 390
Points : 3 356
Points : 3 356
Alors, clique sur le tag

A+
Sepia est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h10.


 
 
 
 
Partenaires

Hébergement Web