[WORD] insérer un saut de page dans document fils

insérer un saut de page dans document fils [WORD] - VB/VBA/VBS - Programmation

Marsh Posté le 15-01-2009 à 15:33:49    

Bonjour
 
dsl pour le titre, j'ai eu du mal à en trouver un explicite
 
 
Voilà le topo : je dois créer un script VBA qui permette de créer un nouveau document Word, puis de sélectionner une liste d'images, et de coller ces images dans ce document Word mais avec 1 image = 1 page
 
 
Voilà mon script :
 

Code :
  1. Sub InsIMG()
  2.     Dim FichDest As String  'contiendra le chemin du fichier de destination
  3.     Dim WordApp As Word.Application
  4.     Dim WordDoc As Word.Document
  5.    
  6. ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  7.     MsgBox "Destination du fichier de sortie ? (Cliquer 'ok')"
  8.    
  9.     Dim fd As FileDialog
  10.     Set fd = Application.FileDialog(msoFileDialogSaveAs)
  11.     With fd
  12.         .AllowMultiSelect = False
  13.         .Title = "Sélectionnez le fichier de destination"
  14.         .InitialFileName = "DestinationFinale.doc"
  15.         .FilterIndex = 3
  16.         If .Show = -1 Then
  17.             FichDest = .SelectedItems(1) 'chemin fichier variable "FichDest"
  18.         End If
  19.     End With
  20.        
  21.     Set WordApp = CreateObject("Word.Application" )     '-- ouvre une session Word
  22.     WordApp.Visible = False
  23.     Set WordDoc = WordApp.Documents.Add    '-- crée un nouveau document
  24.     WordDoc.SaveAs FichDest        '-- enregistre le nouveau doc
  25.     WordDoc.Close
  26.    
  27. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' bon j'ai fermé le doc pour le rouvrir, juste pour être sur
  28.     Set WordApp = CreateObject("Word.Application" )
  29.     WordApp.Visible = True
  30.     Set WordDoc = WordApp.Documents.Open(FichDest)
  31.        
  32.     MsgBox "Sélectionner les images à insérer"
  33.        
  34.     Dim SelecImg As String  'contiendra les fichiers images à insérer dans le doc
  35.     Dim fd2 As FileDialog
  36.    
  37.    
  38.     Set fd2 = Application.FileDialog(msoFileDialogFilePicker)
  39.     With fd2
  40.         .Title = "Sélectionnez les fichiers"
  41.         .AllowMultiSelect = True
  42.         .InitialView = msoFileDialogViewDetails
  43.          With .Filters
  44.             .Clear
  45.             .Add "Fichiers Images", "*.tiff; *.jpg; *.jpeg; *.bmp; *.png; *.gif", 1
  46.             .Add "Tous les fichiers", "*.*", 2
  47.         End With
  48.         .FilterIndex = 1
  49.         If .Show = -1 Then
  50.     '        SelecImg = .SelectedItems(1)    'chemin fichier variable "FichDest"
  51.             For Each vrtSelectedItem In .SelectedItems
  52.                 MsgBox "Selected item's path: " & vrtSelectedItem
  53.                 WordDoc.InlineShapes.AddPicture FileName:=vrtSelectedItem, linkToFile:=False, saveWithDocument:=True
  54.                 With WordDoc.InlineShapes(1) 'ActiveDocument.Shapes.Countadapter l'index si d'autres images existantes dans le document WordDoc.InlineShapes.Count
  55.                     .Height = 900    'changement dimension image insérée : hauteur 850
  56.                     .Width = 700    'largeur  600
  57.                     .ConvertToShape
  58.                 End With
  59.                 With WordDoc.Shapes(1)
  60.                     .Top = -65    'position verticale de l'image dans le document  -70 = suppresion des marges...
  61.                     .Left = -70    'position horizontale de l'image dans le document
  62.                     .ZOrder msoBringInFrontOfText    'image au premier plan devant le texte
  63.                 End With
  64.                  
  65.          Selection.InsertBreak Type:=wdPageBreak
  66.          Selection.TypeText Text:="je viens de faire un saut de page"
  67.          Next
  68.            
  69.         End If
  70.     End With
  71.        
  72.   ' WordDoc.Close 'fermer le document Word
  73.   '  WordApp.Quit 'fermer l'application Word
  74. End Sub


 
Le problème c'est qu'il me met le saut de page dans le document à partir duquel j'ai lancé la macro. En gros, je souhaite trouver un moyen de lui dire "maintenant tu prends en compte le curseur dans le document qui a été crée, et plus le curseur du document inital.
 
Je ne sais pas si j'ai été clair...
 
Quelqu'un aurait-il une idée de génie ?
 
merci d'avance et bonne journée


---------------
feedback
Reply

Marsh Posté le 15-01-2009 à 15:33:49   

Reply

Marsh Posté le 15-01-2009 à 15:36:51    

Ton :

Code :
  1. Selection.InsertBreak Type:=wdPageBreak
  2. Selection.TypeText Text:="je viens de faire un saut de page"


Le Selection sans . devant, ou sans être appliqué à un objet, forcément ça va être dans le document qui lance la macro.
 
Faudrait plutôt l'appeller sur WordDoc (ou sur la variable qui a une propriété Selection)

Reply

Marsh Posté le 15-01-2009 à 15:44:54    

hum, je m'excuse, mais la POO ne fait pas (encore) partie de mes compétences et je code en VBA que depuis hier...
 
en gros, j'ai pas compris ce que tu essayes de me dire avec le "."
 
EDIT : j'avais essayé "WordDoc.Selection.InsertBreak Type:=wdPageBreak Type:=wdPageBreak"  mais il me sort une erreur "Propriété ou Méthode non Gérée par cet objet" d'où mon interrogation


Message édité par schlopa67 le 15-01-2009 à 15:50:12

---------------
feedback
Reply

Marsh Posté le 15-01-2009 à 15:49:04    

Faut trouver qui a la propriété Selection :D Je regarde

Reply

Marsh Posté le 15-01-2009 à 15:50:55    

Apparement ce serai WordDoc.ActiveWindow.Selection ?

Reply

Marsh Posté le 15-01-2009 à 15:55:33    

Ah mince effectivement ça marche :)
 
Je peux te demander un dernier service ? où est-ce que tu as regardé pour trouver ça ?


---------------
feedback
Reply

Marsh Posté le 15-01-2009 à 15:59:40    

J'ai Word 2003, j'ai ouvert l'aide, puis Table des Matières, Référence Visual Basic Microsoft Word, Propriétés, S, Selection.
 
Et là en haut, y'a un "S'applique à", puis de fil en aiguille tu constates que ça s'applique sur un objet Window, qu'on peut récupérer sur un objet Word.Application (ton WordDoc), via ActiveWindow

Reply

Marsh Posté le 15-01-2009 à 16:05:27    

J'utilise Word 2007, et je n'ai pas la mm arborescence que toi
 
Mais il faut dire que je n'ai pas regardé au bon endroit (j'étais dans les objets et les méthodes, mais pas propriétés)
 
Merci beaucoup, je pense pouvoir finir seul  !


---------------
feedback
Reply

Marsh Posté le 15-01-2009 à 16:06:17    

Bon courage, et bonjour à Sélestat :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed