Piloter Word depuis Visual Studio 2010 VB

vbjpc Messages postés 7 Date d'inscription mercredi 1 novembre 2000 Statut Membre Dernière intervention 3 avril 2012 - 9 janv. 2012 à 19:14
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 9 janv. 2012 à 20:40
Bonjour,

Avec le code suivant, dans VBA Word 2010, je supprime l'entête et la recrée.

Je voudrais pouvoir faire la même chose directement de visual studio après avoir chargé le document Word.

Pouvez-vous m'aider ?

Voici le code Word

*************************************
Sub CreationEntete()
ActiveDocument.ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
Selection.WholeStory
Selection.Delete
With ActiveDocument.PageSetup
.TopMargin = CentimetersToPoints(1.5)
.BottomMargin = CentimetersToPoints(1.5)
.LeftMargin = CentimetersToPoints(1.75)
.RightMargin = CentimetersToPoints(1.75)
.Gutter = CentimetersToPoints(0)
.HeaderDistance = CentimetersToPoints(0.8)
.FooterDistance = CentimetersToPoints(0.7)
.DifferentFirstPageHeaderFooter = False
End With
ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=2, NumColumns:= _
3, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
wdAutoFitFixed
With Selection.Cells(1)
.TopPadding = CentimetersToPoints(0)
.BottomPadding = CentimetersToPoints(0)
.LeftPadding = CentimetersToPoints(0.19)
.RightPadding = CentimetersToPoints(0.19)
.WordWrap = True
.FitText = False
End With
Selection.Tables(1).Cell(1, 1).Width = CentimetersToPoints(4.7)
Selection.Tables(1).Cell(1, 1).Height = CentimetersToPoints(1.8) '2.73
Selection.Tables(1).Cell(1, 2).Width = CentimetersToPoints(9.14)
Selection.Tables(1).Cell(1, 3).Width = CentimetersToPoints(4.7)
Selection.Tables(1).Cell(2, 3).Delete
Selection.Tables(1).Cell(2, 2).Delete
Selection.Tables(1).Cell(2, 1).Width = CentimetersToPoints(18.54)
Selection.Tables(1).Cell(2, 1).Height = CentimetersToPoints(0.24)
Selection.Tables(1).Cell(2, 1).Select
With Selection
.Font.Name = "Calibri"
.Font.Size = 5
.Text = "Ce document est propriété de xxx - yyy SA. Il ne peut être transmis, copié, utilisé ou exécuté par des tiers sans l'autorisation écrite de la Direction de xxx-yyy SA"
.Paragraphs.Alignment = wdAlignParagraphCenter
End With
Selection.Tables(1).Cell(1, 1).Select
Selection.InlineShapes.AddPicture FileName:= _
"R:\SMI\Nouveau-Logo-horizontal.PNG" _
, linkToFile:=False, saveWithDocument:=True
Selection.ParagraphFormat.SpaceBefore = 3
Selection.Font.Name = "Calibri"
Selection.Font.Size = 8
Selection.TypeParagraph
Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(1.71), _
Alignment:=wdAlignTabLeft, Leader:=wdTabLeaderSpaces
Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(3.5) _
, Alignment:=wdAlignTabLeft, Leader:=wdTabLeaderSpaces
Selection.TypeText Text:="Crée-par :"
Selection.TypeText Text:=vbTab & "18.12.11" & vbTab & "JPC"
Selection.TypeParagraph
Selection.ParagraphFormat.SpaceBefore = 0
Selection.TypeText Text:="Révisé-par :"
Selection.TypeText Text:=vbTab & "19.12.11" & vbTab & "ANC"
Selection.TypeParagraph
Selection.TypeText Text:="Validé-par :"
Selection.TypeText Text:=vbTab & "20.12.11" & vbTab & "ROA"
Selection.TypeParagraph
Selection.TypeText Text:="Distribué :"
Selection.TypeText Text:=vbTab & "ROA / ANC / JPC / FRS / ROA / FEV / SDF / QWE / XCV / ERW / QWE / XCV / ERW"
Selection.Tables(1).Cell(1, 2).Select
Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(2.04), _
Alignment:=wdAlignTabCenter, Leader:=wdTabLeaderSpaces
Selection.ParagraphFormat.TabStops.Add Position:=CentimetersToPoints(6.3), _
Alignment:=wdAlignTabCenter, Leader:=wdTabLeaderSpaces
Selection.Font.Name = "Calibri"
Selection.Font.Size = 12
Selection.Font.Bold = wdToggle
Selection.TypeText Text:=vbTab & "Essais 1" & vbTab & "Essais 2"
Selection.TypeParagraph
Selection.TypeParagraph
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
Selection.TypeText Text:=vbTab & "Essais essais essais essais essais essais essais essais essais 3"
ActiveDocument.Sections(1).Headers(1).Range.Tables(1).Cell(1, 3).Range.ParagraphFormat.TabStops.Add _
Position:=CentimetersToPoints(0.8), Alignment:=wdAlignTabCenter, Leader:=wdTabLeaderSpaces
ActiveDocument.Sections(1).Headers(1).Range.Tables(1).Cell(1, 3).Range.ParagraphFormat.TabStops.Add _
Position:=CentimetersToPoints(1.8), Alignment:=wdAlignTabCenter, Leader:=wdTabLeaderSpaces
With ActiveDocument.Sections(1).Headers(1).Range.Tables(1).Cell(1, 3).Range
.Font.Name = "Calibri"
.Font.Size = 16
.Font.Bold = wdToggle
.Text = vbTab & "ASD" & vbTab & "Essais"
End With

ActiveDocument.Sections(1).Headers(1).Range.Tables(1).Cell(1, 3).Range.InlineShapes.AddPicture _
FileName:="R:\SMI\Logo Process critique (v3).jpg", linkToFile:=False, saveWithDocument:=True

With ActiveDocument.Sections(1).Headers(1).Range.Tables(1).Cell(1, 3).Range.InlineShapes(1)
.Height = 21
.Width = 36.75
.ConvertToShape
End With
With ActiveDocument.Sections(1).Headers(1).Shapes(1)
.Top = 1.6
.Left = 90
.ZOrder msoBringInFrontOfText
End With


End Sub
***************************************************
Ce code fonctionne très bien dans Word VBA

Quand je suis dans Visual Studio 2010, j'arrive à charger mon document

Code VB
*************************************
Dim oWrd As Object
oWrd = CreateObject("Word.Application")
oWrd.visible = True
oWrd.documents.open("P:\Developp\vb-word.docm")
*************************************

et après je sèche.

Avez-vous quelque chose à me proposer ? merci

3 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
9 janv. 2012 à 20:04
Bonjour,

Piloter, c'est piloter,

Que ce soit Word ou Excel, seuls changent le nom de l'application et les objets de l'application à piloter !
Voilà un exemple pour "piloter" Excel ===>> à toi d'adapter pour Word !
Le principe général sera rigoureusement le même !


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
9 janv. 2012 à 20:07
Pardon ! j'ai oublié le lien ===>>>
PILOTER-EXCEL-SIMPLEMENT


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
9 janv. 2012 à 20:40
J'ai par contre quelques inquiétudes en lisant ton code VBA (depuis VBA, donc, sans même piloter)
Tu y vas à grands renforts alourdissants de Select pour ensuite travailler sur des sélections.
Il serait sans doute astucieux de procéder autrement (avant même de parler "pilotage"). Mais c'est là une autre affaire, qui devrait, en ce qui concerne cet aspect, être traitée à la rubrique VBA de ce forum, bien évidemment ...


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Rejoignez-nous