IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo
Sommaire > VBA > Pages
        Comment obtenir le nombre de page d'un document?
        Comment exporter un nombre de pages choisies ?
        Comment isoler une page spécifique dans un document ?
        Comment enregistrer chaque page de mondocument dans un nouveau document ?



Comment obtenir le nombre de page d'un document?
auteur : SilkyRoad
Comment faire pour obtenir le nombre de page d'un document en VBA

Sub NbrePages()
MsgBox Selection.Information(wdActiveEndPageNumber)
End Sub

Comment exporter un nombre de pages choisies ?
auteur : Lebeau Olivier
Mise en garde : les pages ne sont pas des objets fixes en Word, les pages dépendent de l'imprimante, de la mise en page, ...

Le principe est assez simple en soi. Pour sélectionner une plage de données, vous avez besoin de deux signets. Nous allons ajouter des signets sur des pages précises. Pour effectuer cette opération, nous allons utiliser la fonction Goto de VBA.

Selection.GoTo What:=wdGoToPage, which:=wdGoToAbsolute, Count:=2
Selection.Bookmarks.Add Name:="bmStart", Range:=Selection.Range
Dans ces lignes, nous plaçons un signet (Name:="bmStart") au début de la seconde page de notre document (Count:=2). Nous obtenons ainsi notre signet de départ.

Selection.GoTo What:=wdGoToPage, which:=wdGoToAbsolute, Count:=4
Selection.Bookmarks.Add Name:="bmEnd", Range:=Selection.Range
Dans cette seconde série de lignes, nous plaçons un signet (Name:="bmEnd") au début de la quatrième page de notre document(Count:=4). Nous obtenons ainsi notre signet de fin.

Dim myRange As Range
'Signet de début
Selection.GoTo What:=wdGoToPage, which:=wdGoToAbsolute, Count:=2
Selection.Bookmarks.Add Name:="bmStart", Range:=Selection.Range
'Signet de fin
Selection.GoTo What:=wdGoToPage, which:=wdGoToAbsolute, Count:=4
Selection.Bookmarks.Add Name:="bmEnd", Range:=Selection.Range
'sélection de la plage
Set myRange = ActiveDocument.Range(Start:=ActiveDocument.Bookmarks("bmStart").Range.Start, End:=ActiveDocument.Bookmarks("bmEnd").Range.End)
myRange.Select
'copie de la plage de le presse papier
Selection.Copy
Vous pouvez utiliser la copie de la plage de données dans un autre document.

Document.Add
ActiveDocument.Paste

Comment isoler une page spécifique dans un document ?
auteur : SilkyRoad

Sub Test()  
IsolerPage 4 
End Sub     

Public Sub IsolerPage(NumPage As Integer)  
Dim NbLigne As Long  
Dim NombrePage As Integer  
NombrePage = _ 
ActiveDocument.BuiltInDocumentProperties("Number of Pages")  
If NombrePage < NumPage Then Exit Sub  
ActiveDocument.Range.Select  
Selection.GoTo What:=wdGoToPage, _
 Which:=wdGoToAbsolute, Count:=NumPage + 1  
Selection.Move Unit:=wdCharacter, Count:=-1  

If NombrePage = NumPage Then Selection.Move Unit:=wdCharacter, _ 
Count:=ActiveDocument.Range.Characters.Count  

NbLigne = Selection.Information(wdFirstCharacterLineNumber)  

If NombrePage = NumPage Then NbLigne = NbLigne - 1  

Selection.Move Unit:=wdCharacter, Count:=1  

With Selection 
.HomeKey Unit:=wdLine, Extend:=wdMove 
.ExtendMode = True  
.MoveUp Unit:=wdLine, Count:=NbLigne 
.ExtendMode = False  
End With  
Selection.Copy  
Documents.Add  
ActiveDocument.Range.Paste   
If NumPage < NombrePage Then  
Selection.Move Unit:=wdCharacter, _ 
Count:=ActiveDocument.Range.Characters.Count  
Selection.Delete Unit:=wdCharacter, Count:=1  
End If 
End Sub

Comment enregistrer chaque page de mondocument dans un nouveau document ?
auteur : Lebeau Olivier
Il arrive parfois que l'on souhaite faire avec chaque page d'un document volumineux un petit document. C'est le cas pour des fiches, du publipostage.

Sub SeparerPages()
Dim intPage As Integer  'pour la page en cours
Dim intDoc As Integer   'pour le document

intDoc = 0

Do
intDoc = intDoc + 1 'définit le no qui sera donné au document
'on se rend à la seconde page et on recule d'un caractère
Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=2
Selection.MoveLeft Unit:=wdCharacter, Count:=1
'On sélectionne de la fin de la page au début du document
Selection.HomeKey Unit:=wdStory, Extend:=wdExtend
'on coupe
Selection.Cut
'on ajoute un nouveau document
Application.Documents.Add
'on colle
Selection.Paste
'on sauve
ActiveDocument.SaveAs "c:\temp\document" &amp; intDoc
'on ferme
ActiveDocument.Close
'tant qu'il reste plus d'une page on recommence
Loop While Selection.Information(wdNumberOfPagesInDocument) > 1
'C'est la dernière page
ActiveDocument.SaveAs "c:\temp\document" &amp; intDoc + 1

End Sub
Autre solution, intervenir lors du publipostage : article Fusion et Publipostage



Consultez les autres F.A.Q.


  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2009 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.