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 07/04/2008, 12h31   #1
Invité régulier
 
Inscription : février 2005
Messages : 17
Détails du profil
Informations personnelles :
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : février 2005
Messages : 17
Points : 5
Points : 5
Envoyer un message via MSN à white-angel
Par défaut Afficher les no de pages/lignes des recherches

Bonjour,

Je voudrais créer une macro qui me permette d'afficher les pages et lignes où se trouvent les résultats d'une recherche lancée dans un document Word.

Est-ce qu'une telle macro existe déja dans ce forum (malgrès mes recherches je n'ai rien trouvé de probant) ? Si non avec vous des conseils à me donner pour la rédaction de ce code ?

Merci beaucoup
white-angel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2008, 12h39   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 363
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 363
Points : 29 284
Points : 29 284
Bonjour,

Pour les pages, ce sera une chose pas trop difficile, par contre, pour les lignes, c'est une autre paire de manches.

Ce que tu voudrais obtenir, c'est une sorte d'Index.

L'index fournis par Word ne te convient-il pas ? Il est beaucoup plus facile à mettre en oeuvre qu'une macro qui va parcourir une liste de mots et pour chaque mot le document pour en retirer le numéro de page.

A toi de voir, si tu veux malgré tout faire un macro, nous allons t'aider.
__________________
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 08/04/2008, 08h29   #3
Invité régulier
 
Inscription : février 2005
Messages : 17
Détails du profil
Informations personnelles :
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : février 2005
Messages : 17
Points : 5
Points : 5
Envoyer un message via MSN à white-angel
oui, je recherche une telle macro et voila son objet :
je possède une série de documents words dans lesquels je doit rechercher l'emplacement de certains mots dans un premier temps.
Après avoir trouvé l'emplacement de ces mots il me faudra les substituer à des mots de remplacement qui dépendent du contexte d'utilisation de ces mots.

Pour ce travail une macro me révélant l'emplacement de ces mots dans chacun de ces documents me faciliterai grandement la tâche.

Mais si c'est trop compliqué laissons tomber, je le ferai manuellement.
Je pensait que c'était une chose triviale à réaliser puisque lors des recherches, j'ai remarqué qu'il était indiqué pour chaque mot trouvé la ligne et la colonne dans la barre d'état (en bas).
Merci beaucoup.
white-angel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2008, 08h52   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 363
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 363
Points : 29 284
Points : 29 284
Je vais chercher comment faire.
__________________
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 08/04/2008, 09h34   #5
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 363
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 363
Points : 29 284
Points : 29 284
Pour le code qui permet de récupérer les informations concernant la position d'un mot dans une page et une ligne.

Code :
1
2
Selection.Information(wdFirstCharacterLineNumber)
Selection.Information(wdActiveEndPageNumber)
Voilà à quoi devrait ressembler ton code

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Sub testSelection()
Dim oTbl As Table
Dim iR As Integer
Dim monMot As String
 
iR = 0
 
Set oTbl = ActiveDocument.Tables(1)
For iR = 1 To oTbl.Rows.Count
    monMot = NetText(oTbl.Cell(iR, 1).Range.Text)
With ActiveDocument.Content.Find
    .ClearFormatting
    .MatchCase = False
    .MatchWholeWord = True
    .Forward = True
    .Execute FindText:=monMot
End With
oTbl.Cell(iR, 2).Range.Text = Selection.Information(wdFirstCharacterLineNumber)
oTbl.Cell(iR, 3).Range.Text = Selection.Information(wdActiveEndPageNumber)
Next iR
 
End Sub
Une petite fonction de nettoyage
Code :
1
2
3
4
5
 
Function NetText(monText As String) As String
NetText = Left(monText, Len(monText) - 2)
 
End Function
Jette un oeil et dis nous ce que tu en penses.
__________________
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 08/04/2008, 12h55   #6
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 363
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 363
Points : 29 284
Points : 29 284
J'ai oublié un petit détail !

Dans mon test, je crée un tableau de 3 colonnes, la première contient les mots à rechercher et les deux dernières sont vides.
Après exécution, la seconde colonne contient la ligne et la dernière la page.
__________________
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 08/04/2008, 14h57   #7
Invité régulier
 
Inscription : février 2005
Messages : 17
Détails du profil
Informations personnelles :
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : février 2005
Messages : 17
Points : 5
Points : 5
Envoyer un message via MSN à white-angel
impeccable, merci beaucoup

J'ai quelque peu modifié le code pour l'adapter à mes besoins :

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
 
Sub testSelection()
 
Dim oTbl As Table
Dim iR As Integer
Dim monMot As String
 
iR = 0
Set oTbl = ActiveDocument.Tables(1)
oTbl.Cell(1, 1).Range.Text = ""
page_a = 0
 
For iR = 1 To 100
 
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "responsable"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchByte = False
        .CorrectHangulEndings = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
 
    Selection.Find.Execute
 
    If Selection.Information(wdActiveEndPageNumber) >= page_a Then
        If page_a <> Selection.Information(wdActiveEndPageNumber) Then
            oTbl.Cell(1, 1).Range.Text = oTbl.Cell(1, 1).Range.Text & "-p" & Selection.Information(wdActiveEndPageNumber) & "r" & Selection.Information(wdFirstCharacterLineNumber)
        Else
            oTbl.Cell(1, 1).Range.Text = oTbl.Cell(1, 1).Range.Text & "r" & Selection.Information(wdFirstCharacterLineNumber)
        End If
        page_a = Selection.Information(wdActiveEndPageNumber)
 
    End If
 
Next iR
 
End Sub
j'ouvre ainsi chaque document, je créé une cellule de tableau en première page, je lance le code et récupère la chaine de caractères créée dans un document récapitulatif.

Merci beaucoup.
white-angel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2008, 18h10   #8
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 363
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 363
Points : 29 284
Points : 29 284
Pourquoi fixes-tu à 100 le nombre maximum de mots ou lignes ?
Et si tu as moins de 100 lignes, tu va rencontrer une erreur.
__________________
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 19h17.


 
 
 
 
Partenaires

Hébergement Web