Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA 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 09/08/2007, 09h56   #1
Invité de passage
 
Inscription : août 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 2
Points : 0
Points : 0
Par défaut chapitrage d'un document word en VBA

Bonjour,
je cherche à contrôler le chapitrage d'un document word par rapport à un chapitrage standard. pour ce faire je fais une macro word qui ouvre chaque document à la suite, definit un "range" de tout le document et traite en boucle les chapitres trouvés par la fonction .GoTo(What:=wdGoToHeading, Which:=wdGoToNext).
cela fonctionne bien sauf dans le cas ou le titre se trouve dans une cellule de tableau : cela fait boucler la macro ! quelqu'un a une idée
un extract du code ci dessous :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Set Doctot = ActiveDocument.Content
With Doctot.Find
    .ClearFormatting
    .Wrap = Word.WdFindWrap.wdFindStop
    .Style = wdStyleHeading1
    If .Execute(FindText:="fiabilisation", Forward:=True, Wrap:=Word.WdFindWrap.wdFindStop, _
        Format:=True) = True Then
        'Affecter à TitreN le titre suivant (1ere lecture)
        Doctot.SetRange Start:=Doctot.Start, _
        End:=ActiveDocument.Content.End
        TitreN = Doctot.GoTo(What:=wdGoToHeading, Which:=wdGoToNext).Paragraphs(1)
        'définir la plage à partir de ce titreN (1ere lecture)
        Doctot.SetRange Start:=TitreN.Paragraphs(1).Range.Start, _
        End:=ActiveDocument.Content.End
Do While (TitreN.Style <> ActiveDocument.Styles(wdStyleHeading1) And cpt < 200)
        'Traitement controle du sous chapitre trouvé
...
        cpt = cpt + 1
        TitreN = Doctot.GoTo(What:=wdGoToHeading, Which:=wdGoToNext).Paragraphs(1)
        Doctot.SetRange Start:=TitreN.Paragraphs(1).Range.Start, _
        End:=ActiveDocument.Content.End
Loop
madeleine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2007, 15h20   #2
Invité de passage
 
Inscription : août 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 2
Points : 0
Points : 0
Par défaut bypass

le bypass que j'ai trouvé pour l'instant est d'ouvrir le document en lecture seule + le fermer sans sauvegarder (ceinture + bretelles ) et de modifier le style du titre traité pour le remettre en normal avant le goto(next). cela marche, mais c'est pas satisfaisant pour l'esprit...
mais utiliser word doit-il satisfaire l'esprit
madeleine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2007, 18h48   #3
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 355
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 355
Points : 29 271
Points : 29 271
Une possibilité serait de compter le nombre de tableaux de ton document, vérifier pour chaque tableau la présence de ton Titre1.

Code :
1
2
3
4
5
6
7
8
9
10
 
Dim oTbl As Table
Dim i As Integer
Dim j As Integer
 
i = ActiveDocument.Tables.Count
 
For j = 0 To i
    Set oTbl = ActiveDocument.Tables(j)
Next j
Je ne suis pas allé au bout du code, mais juste pour te donner l'idée.
Il faut ensuite compter par tableau le nombre de lignes et le nombre de colonnes, ensuite pour chaque tableau, parcourir toutes les cellules.

Si ce sont des textbox, c'est la collection Shapes qu'il faut explorer.
__________________
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
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h47.


 
 
 
 
Partenaires

Hébergement Web