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 01/12/2010, 17h18   #1
Membre du Club
 
Inscription : juin 2004
Messages : 153
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : juin 2004
Messages : 153
Points : 50
Points : 50
Par défaut Imbriquer une recherche dans une autre

Bonjour,

J'ai besoin de faire des recherches dans un document.
Je dois dans un premier temps rechercher le mot commune.
Si ce dernier est trouvé, alors il faut que je cherche sur ma page ("niveau 2")
Si la recherche aboutit alors je supprime la page.
Voici le code que j'utilise pour le moment:
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
 
 
Sub Macro1()
 
 
 Dim rdeb As Long
 Dim rfin As Long
 Dim i As Integer
 
 
 Do
    selection.Find.ClearFormatting 'formattage du champs de recherche
    With selection.Find  'definition de la recherche
        .Text = "commune"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindStop
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
 
 
 
  If selection.Find.Execute = True Then 'tant que la recherche retourne un resultat
        i = selection.Information(wdActiveEndAdjustedPageNumber) 'recuperation du numero de page
        selection.Find.ClearFormatting 'formattage du champs de recherche
       With selection.Find 'definition de la recherche
           .Text = "Niveau : 2"
           .Replacement.Text = ""
           .Forward = True
           .Wrap = wdFindContinue
           .Format = False
           .MatchCase = False
           .MatchWholeWord = False
           .MatchWildcards = False
           .MatchSoundsLike = False
           .MatchAllWordForms = False
        End With
 
        If selection.Find.Execute = True Then
            rdeb = selection.GoTo(what:=wdGoToPage, which:=wdGoToNext, Name:=i).Start 'selection du debut de plage a supprimer
            rfin = selection.GoTo(what:=wdGoToPage, which:=wdGoToNext, Name:=i + 1).Start 'selection de la plage de fin
                If rfin = rdeb Then 'si plage de fin =plage de debut, alors on est sur la derniere page
                    rfin = selection.GoTo(what:=wdGoToLine, which:=wdGoToLast, Name:=i).Start 'si derniere page alors on se place sur la derniere ligne du document
                    rfin1 = selection.EndKey(wdLine, wdMove) + (rfin)
                    ActiveDocument.Range(rdeb, rfin1).Delete
                Else
                    ActiveDocument.Range(rdeb, rfin).Delete
                End If
         End If
   End If
 Loop
 
End Sub
Pour le recherche sur le mot "commune" pas de prob.
Par contre ma recherche ("niveau 2") se fait sur la totalité du doc et non pas sur la page qui contient le mot "commune".

Voila, n'hesitez pas a me demander des explications si jamais.
__________________
Amicalement Scons
scons est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 20h50   #2
Modérateur
 
Homme Christophe CHAPAT
Spécialiste progiciel
Inscription : février 2010
Messages : 978
Détails du profil
Informations personnelles :
Nom : Homme Christophe CHAPAT
Âge : 25
Localisation : France, Haute Loire (Auvergne)

Informations professionnelles :
Activité : Spécialiste progiciel
Secteur : Service public

Informations forums :
Inscription : février 2010
Messages : 978
Points : 1 582
Points : 1 582
Envoyer un message via MSN à carden752
Bonjour,

C'est normal puisque ta sélection ne porte pas que sur une page.
Essaye d'insérer ce code avant qui te sélectionne ta page
Code :
1
2
3
4
5
6
7
i = Selection.Information(wdActiveEndAdjustedPageNumber) 'recuperation du numero de page
rdeb = Selection.GoTo(what:=wdGoToPage, Count:=i, which:=wdGoToAbsolute).Start
rfin = Selection.GoTo(what:=wdGoToPage, which:=wdGoToNext, Count:=1).Start
If (rdeb = rfin) Then
    ActiveDocument.Characters((ActiveDocument.Characters.Count) - 1).Select
    rfin = Selection.Start
End If
__________________
Cordialement,
Christophe

Merci de ne pas oublier de mettre résolu quand le sujet l'est. Cela aide tous les DVPnautes dans leur recherche
carden752 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 09h40.


 
 
 
 
Partenaires

Hébergement Web