bonjour,
je suis sur ce forum car j'ai un soucis, et malgré de nombreuses recherches, je n'ai rien trouvé.
voila mon problème:
je cherche a modifier un document word pré écrit, comme des cours par exemple. ce document contient: un sommaire et un texte
le but est de detecter le pucage, pour le mettre en forme :

le pucage est sous cette forme
1.
1.1
1.1.1
1.1.2
...
le grand 1, "1." doit etre en arial 14 gras
le moyen 1, "1.1." doit etre en arial 12 gras
le petit 1, "1.1.1." doit etre en arial 11 gras
les titres doivent etre preceder d'un alinéa

le tout doit etre fait via un programme en VBA qui ne prendra pas en compte la table des matières.

problème 1: la variable lecture dois copier le contenu de des 6 premiers caractères du paragraphe, et pour etre plus précis, de ma selection. elle doit également prendre en contre la présence ou non d'alinéa. ces 6 caractères seront lu, puis s'il correspondent, le programme s'exécutera. puis je devrais re sélectionner la ligne pour la mettre en forme.

problème 2: je ne sais pas comment detecter la fin

voici ce que j'ai actuellement:

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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
Sub presntation_du_doc()
'
'
Dim LVL_1 As String, LVL_2 As String, LVL_3 As String, un As Integer, deux As Integer, trois As Integer, nbligne As Integer, fin As Integer, lecture As String, nouvellevaleur As Integer, paragraphe As Paragraph, numeroduparagraphe As Integer 'je suis débutant en VBA, excusez moi de mettre autant de variables...
 
Selection.HomeKey Unit:=wdStory 'aller au debut du doc
 
While fin <> 1 'pour que le programme ne s'arrête qu'a la fin du document.
    objdoc.Paragraphs(numeroduparagrraphe).Range.Select      'permet de selectionner tout les paragraphe du document 1 par 1
    set lecture = (0,6)  'la est mon probleme: lecture dois copier le contenu de des 6 premiers caracteres du paragraphe, et pour etre plus precis, de ma selection.
    lecture = LVL_1' LVL_1=1.
    lecture = LVL_2' LVL_2=1.1.
    lecture = LVL_3' LVL_3=1.1.1.
'   ces 3 dernières étapes sont inutiles, les valeurs LVL_1,LVL_2 et LVL_3 ne me serve que de repère le temps de la création du programme
    If LVL_1 = un & "." Then 'permet d'alleger le code, pour éviter qu'il ne s'execute a chaque paragraphe
        If LVL_3 = un & "." & deux & "." & trois & "." Then 'si 1.1.1. alors
            LVL_3 = Replace(LVL_3, un & "." & deux & "." & trois & ".", "  " & un & "." & deux & "." & trois & ".") 'pour mettre un alinéa
            trois = trois + 1
'           sélectionner 6 caractères (ou + pour que le programme soit fonctionnel si alinéas?)
'           mise en forme, pas encore préparé
 
        ElseIf LVL_2 = un & "." & deux & "." Then 'la meme chose pour 1.1
            LVL_2 = Replace(LVL_2, un & "." & deux & ".", "  " & un & "." & nouvellevaleur & ".") 'pour remplacer la ligne
            trois = 1 'réinitialisation de trois car quand on passe de 1.1.9 a 1.2.1, le dernier chiffre est remis a 0
            deux = deux + 1
 
        ElseIf LVL_1 = un & "." Then 'la meme chose qu'au dessus
            nouvellevaleur = un + 1
            LVL_1 = Replace(LVL_1, un & ".", "  " & un & "." & nouvellevaleur & ".")  'pour remplacer la ligne
            trois = 1
            deux = 1
            un = un + 1
        End If
    End If
    numeroduparagrraphe=numeroduparagraphe+1
Loop
 
End Sub
Bien sur, le document programme est en cours, mais je bloque sur la sélection et deux/trois autre trucs


j'insererait par la suite les commandes qui définiront la présentation:
Selection.Font.Name= "arial"
.bold= true pour metre en gras
.font.color= wdcolorred pour metre en rouge
.font.seize = 18 pour metre en taille 18

désoler pour la "violence" de mon code, mais j'ai tendance a me compliquer la tache naturellement, et donc, par conséquent, a compliquer la votre
cordialement