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 29/11/2010, 12h32   #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 dernier caractére d'une page

Bonjour,

Voila j'ai l'habitude de travailler en vba sous excel mais sous word c'est une première et il y a quand même beaucoup de différences.

En fait j'ai écrit un petit bout de macro me permettant de rechercher un mot précis dans un document et de supprimer les pages quand la sélection retourne un résultat.

J'aimerais savoir comment on pourrait se positionner sur le dernier caractère d'une page.

Merci
__________________
Amicalement Scons
scons est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 17h47   #2
Responsable Word

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

Il faut aller au premier caractère de la page suivante et reculer d'un caractère.
Dans Word, la page n'est pas un objet, mais avec la commande GoTo, on peut aller à une page précise, le hic c'est que c'est toujours le haut de la page.
Donc, on va à la suivante et on recule un peu.
__________________
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 29/11/2010, 18h29   #3
Modérateur
 
Homme Christophe CHAPAT
Spécialiste progiciel
Inscription : février 2010
Messages : 974
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 : 974
Points : 1 576
Points : 1 576
Envoyer un message via MSN à carden752
Bonjour,

Simple précision, il faut faire attention de ne pas être à la dernière page.
Pour la dernière page, il suffit d'aller au dernier caractère directement ou le dernier caractère de la dernière ligne
__________________
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
Vieux 30/11/2010, 08h42   #4
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
Bonjour,

Merci d'avoir repondu
Je me trouve en effet dans le cas de la derniere page.
Dans ce cas la, je voudrais effectivement me placer sur le dernier caractere de la derniere ligne.
J'arrive a me placer sur la derniere ligne (avec le gotoline) mais pas sur le dernier caractere.

Si vous pouviez me donner un coup de pouce ca serait sympa!!

Merci
__________________
Amicalement Scons
scons est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 09h28   #5
Modérateur
 
Homme Christophe CHAPAT
Spécialiste progiciel
Inscription : février 2010
Messages : 974
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 : 974
Points : 1 576
Points : 1 576
Envoyer un message via MSN à carden752
bonjour,

Je pense que cela fonctionne
Attention la sélection doit être étendue.
Code :
selection.moveEnd Unit:=wdline, count:=1
Tu peux la rendre non étendue en faisant simplement un moveleft suivi de moveright avec la constante wdmove

Code :
1
2
selection.MoveLeft Unit:=wdcharacter, count:=1, extend:=wdmove
selection.MoveRight Unit:=wdcharacter, count:=1, extend:=wdmove
__________________
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
Vieux 30/11/2010, 09h30   #6
Responsable Word

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

Peut-être plus simple qu'un GoTo

Code :
ActiveDocument.Characters((ActiveDocument.Characters.Count) - 1).Select
Sachant que le dernier caractère est un saut de paragraphe, il faut enlever une unité.
__________________
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 30/11/2010, 12h12   #7
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
bonjour,

je n'arrive pas a faire ce que je veux.
je vous explique
en fait j'aimerais avoir la position du dernier caractere pour pouvoir effectuer une suppression de la page via le methode "activedocument.range".

mon probleme (que je n'arrive pas a resoudre pour le moment) est que ma derniere ligne de ma derniere page n'est que partiellement effacer.

je vous joins mon code, un autre regard ne peut etre que le bienvenu.
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
 
 
Sub Macro1()
 
 
 Dim rdeb As Long
 Dim refin As Long
 Dim i As Integer
 
 
 
    Selection.Find.ClearFormatting 'formattage du champs de recherche
    With Selection.Find 'definition de la recherche
        .Text = "crozet"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
 
    Do While Selection.Find.Execute = True 'tant que la recherche retourne un resultat
        i = Selection.Information(wdActiveEndAdjustedPageNumber) 'recuperation du numero de page
        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
            End If
        ActiveDocument.Range(rdeb, rfin).Delete
 
    Loop
 
End Sub
Merci
__________________
Amicalement Scons
scons est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 12h26   #8
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
Bon j'ai fini par trouvé la solution pour tout supprimer sur ma derniere page cependant maintent il me reste une page vierge en fin de document.

voici mon code modifié
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
 
 
Sub Macro1()
 
 
 Dim rdeb As Long
 Dim rfin As Long
 Dim i As Integer
 
 
 
    Selection.Find.ClearFormatting 'formattage du champs de recherche
    With Selection.Find 'definition de la recherche
        .Text = "crozet"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
 
    Do While Selection.Find.Execute = True 'tant que la recherche retourne un resultat
        i = Selection.Information(wdActiveEndAdjustedPageNumber) 'recuperation du numero de page
        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 + 1)
            ActiveDocument.Range(rdeb, rfin1).Delete
            Else
            ActiveDocument.Range(rdeb, rfin).Delete
            End If
    Loop
 
End Sub
__________________
Amicalement Scons
scons est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 12h54   #9
Modérateur
 
Homme Christophe CHAPAT
Spécialiste progiciel
Inscription : février 2010
Messages : 974
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 : 974
Points : 1 576
Points : 1 576
Envoyer un message via MSN à carden752
je pense que cela vient de rdeb qui est place au premier caractère de la page mais tu n"enlèves pas le saut de paragraphe ou de ligne de la page précédente. Effectue un rdeb.moveleft avec count:=1, il te placera après le dernier caractère de la page précédente.
__________________
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
Vieux 01/12/2010, 17h10   #10
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
Bonjour,
Désolé j'avais décroché un peu
Pour la suppression du saut de page je me suis débrouillé autrement.
En fait j'ai rajouté "-1" après "rdeb" dans mon instruction de suppression.
cela donne:
Code :
1
2
 
ActiveDocument.Range(rdeb - 1, rfin).Delete
.

Merci

Cependant j'ai un autre souci mais pour cela je vais réouvrir un deuxième sujet et mettre celui-ci en .

Mon nouveau sujet traite d'une imbrication de recherche.
__________________
Amicalement Scons
scons est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h33.


 
 
 
 
Partenaires

Hébergement Web