Découpe fichier Word toute les X pages - VB/VBA/VBS - Programmation
MarshPosté le 13-03-2012 à 12:29:11
Bonjour, Je viens vous demander votre aide, car mes faibles compétences en VB ne me suffise pas à résoudre mon soucis.
Je cherche à créer une macro pour dissocier le résultat d'un publipostage. - Je voudrais que cette macro me demande au lancement, le nombre de page dont est composé le fichier initial (c'est a dire que mon publipostage concerne un fichier qui fais parfois 7 pages, et parfois 10). Donc j'ai besoin d'initialiser cette valeur au lancement de la macro.
J'ai trouvé le nécéssaire pour dissocier mon fichier (voir ci-dessous), mais je n'arrive pas a couper ce fichier toutes les 10 pages. Pouvez vous m'aider avec ce petit détail s'il vous plait ? Sub DissocierPage() Application.Browser.Target = wdBrowsePage For i = 1 To ActiveDocument.BuiltInDocumentProperties("Number of Pages" ) ActiveDocument.Bookmarks("\page" ).Range.Copy Documents.Add Selection.Paste Selection.TypeBackspace ChangeFileOpenDirectory "C:" DocNum = DocNum + 1 ActiveDocument.SaveAs FileName:="test_" & DocNum & ".doc" ActiveDocument.Close Application.Browser.Next Next i ActiveDocument.Close savechanges:=wdDoNotSaveChanges End Sub
- J'ai un deuxième petit soucis. Je voudrais renommer le fichier par un nom qui se trouve dans mon document (emplacement fixe une fois le découpage terminé), mais ce nom se trouve dans une zone de texte. J'ai trouvé un autre code pour cela (voir ci-dessous), mais encore une fois, je ne sais pas l'adapter à mon besoin. Sub nom() Dim nom nom = ActiveDocument.Paragraphs(12).Range.Words(5) '5e mot de la 12e ligne (exemple) ActiveDocument.SaveAs FileName:= "c:\" & nom & ".doc End Sub
Merci beaucoup du temps que vous prendrez à me repondre.
Sub DecoupageDoc() Dim NomDocDepart As String Dim i As Long, j As Long Dim Termine As Boolean Dim NumeroDoc As String, PgDepart As Long Dim Dossier As String, DossierSauvegarde As String Dim NbPages As Long Const DecouperEn As Integer = 10
Documents(NomDocDepart).Activate If Termine Then Exit Do
Selection.MoveRight Unit:=wdCharacter, Count:=1 Loop Application.ScreenUpdating = True End Sub
Private Sub VerifDossier(ByVal DossierSauvegarde As String) On Error GoTo erreur ChDir DossierSauvegarde Exit Sub erreur: If Err.Number = 76 Then MkDir DossierSauvegarde Resume Next End If End Sub
Marsh Posté le 13-03-2012 à 12:29:11
Bonjour,
Je viens vous demander votre aide, car mes faibles compétences en VB ne me suffise pas à résoudre mon soucis.
Je cherche à créer une macro pour dissocier le résultat d'un publipostage.
- Je voudrais que cette macro me demande au lancement, le nombre de page dont est composé le fichier initial (c'est a dire que mon publipostage concerne un fichier qui fais parfois 7 pages, et parfois 10). Donc j'ai besoin d'initialiser cette valeur au lancement de la macro.
J'ai trouvé le nécéssaire pour dissocier mon fichier (voir ci-dessous), mais je n'arrive pas a couper ce fichier toutes les 10 pages.
Pouvez vous m'aider avec ce petit détail s'il vous plait ?
Sub DissocierPage()
Application.Browser.Target = wdBrowsePage
For i = 1 To ActiveDocument.BuiltInDocumentProperties("Number of Pages" )
ActiveDocument.Bookmarks("\page" ).Range.Copy
Documents.Add
Selection.Paste
Selection.TypeBackspace
ChangeFileOpenDirectory "C:"
DocNum = DocNum + 1
ActiveDocument.SaveAs FileName:="test_" & DocNum & ".doc"
ActiveDocument.Close
Application.Browser.Next
Next i
ActiveDocument.Close savechanges:=wdDoNotSaveChanges
End Sub
- J'ai un deuxième petit soucis. Je voudrais renommer le fichier par un nom qui se trouve dans mon document (emplacement fixe une fois le découpage terminé), mais ce nom se trouve dans une zone de texte. J'ai trouvé un autre code pour cela (voir ci-dessous), mais encore une fois, je ne sais pas l'adapter à mon besoin.
Sub nom()
Dim nom
nom = ActiveDocument.Paragraphs(12).Range.Words(5) '5e mot de la 12e ligne (exemple)
ActiveDocument.SaveAs FileName:= "c:\" & nom & ".doc
End Sub
Merci beaucoup du temps que vous prendrez à me repondre.
Message édité par Plouf le 13-03-2012 à 12:30:58