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 13/09/2007, 13h09   #1
Invité de passage
 
Inscription : septembre 2007
Messages : 21
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 21
Points : 2
Points : 2
Par défaut retrouver toutes les pages ou un item apparait

Bonjour

j'ai affaire à un document technique d'un système dans lequel sont définis des paramètres.

Ces paramètres sont systématiquement écrits sous la forme :
par_xxx_xxxxxx_xx_xxxxxxx...
(le nombre de "_xxx" est variable aprés le "par" ainsi que le nombre de x c'est à dire de caractères dans chaque partie)
exemples :
par_debut_du_systeme
par_fin_aleatoire_de_la_procedure
...

J'aimerais, si c'est possible, avoir une macro qui serait capable de m'établir une "table des matières" pour tous les paramètres, en précisant pour chacun les pages où il apparait

cette table des matières aurait l'apparence suivante :

par_debut_du_systeme 25, 142, 251, 366
par_fin_aleatoire_de_la_procedure 102, 451, 511

J'aimerais également une macro qui serait capable de me transformer tous ces paramètres en italique

Merci
loupgarou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2007, 13h46   #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
sans vouloir te contredire, on appelle ça un index.

Tu choisis ton entrée, tu fais Alt + Shif + X, tu vas recevoir une boîte de dialogue Tu choisis Marquer toutes les entrées, et OK.
Tu recommence pour l'entrée suivante, .....

Ensuite, il ne te reste plus qu'à faire ton index.
Si tu as 25 fois le même mot, tu auras 25 pages indiquées.

Une table des matières pointe vers un style ou un titre et ne possède qu'une seule entrée par ligne.
__________________
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 13/09/2007, 14h30   #3
Invité de passage
 
Inscription : septembre 2007
Messages : 21
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 21
Points : 2
Points : 2
Ok, merci pour ta réponse mais peut etre me suis je mal exprimé, mais comme faire ça de manière automatique....je dois avoir environ 250 paramètres diffèrents...si je fais ca a la main j'en ai pour un moment..
loupgarou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2007, 16h04   #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
Comment vas tu le repérer si ils sont tous différents.

De manière automatique, il faut pouvoir les repérer.
Je pense que c'est là la vraie question.

Tu peux toujours faire un

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
Dim para As Paragraph
Dim x, y As Integer
For Each para In ActiveDocument.Paragraphs
para.Range.Select
y = Selection.Words.Count
 
For x = 1 To y
Debug.Print x, y
 
   If Left(Selection.Words(x), 4) = "par_" Then
          ActiveDocument.Indexes.MarkEntry Range:=Selection.Range, Entry:=Selection.Words(x), _
         EntryAutoText:=Selection.Words(x), CrossReference:="", CrossReferenceAutoText:="" _
        , BookmarkName:="", Bold:=False, Italic:=False
    End If
 
Next x
Next para
__________________
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 14/09/2007, 11h11   #5
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Une question : Chaque "variable" est-elle suivie d'un saut de ligne ?
Si oui, voici un code qui devrait te permettre de faire ce que tu veux.
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
Sub Test()
    Selection.HomeKey Unit:=wdStory 'On se place en début de document
    With Selection.Find
        .ClearFormatting
        'Début la boucle de recherche : Tant que la donnée est trouvée, on continue
        Do While .Execute(FindText:="par_", Forward:=True, Wrap:=wdFindStop) = True
            Selection.EndKey Unit:=wdLine, Extend:=wdExtend 'Sélection de la ligne
            'insertion d'un index
            ActiveDocument.Indexes.MarkEntry Range:=Selection.Range, _
                Entry:=Selection.Range.Text, Italic:=True
            Selection.Font.Italic = wdToggle 'on met la sélection en italiques
            Selection.EndKey 'on se place en fin de ligne afin de ne pas...
                'poursuivre la recherche sur la sélection
        Loop
    End With
    Selection.EndKey Unit:=wdStory  'L'index sera placé en fin de doc...
    'insertion d'un saut de page
    Selection.InsertBreak Type:=wdPageBreak '... sur la page suivante
    'il aura une seule colonne et les N° de pages seront placés à droite
    With ActiveDocument
        .Indexes.Add Range:=Selection.Range, HeadingSeparator:= _
            wdHeadingSeparatorNone, Type:=wdIndexIndent, RightAlignPageNumbers:= _
            True, NumberOfColumns:=1, IndexLanguage:=wdFrench
        .Indexes(1).TabLeader = wdTabLeaderDots
    End With
End Sub
J'ai fait le test sur le texte que tu as dans ton premier post.
Tu dis
A+
ouskel'n'or 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 05h28.


 
 
 
 
Partenaires

Hébergement Web