Bonjour,
Dans une macro excel, j'ouvre un fichier word pour faire une fusion. Après, je dois réaliier une mise en forme pour une chaine de caractères qui se trouve entre deux textes(DebutTableau et FinTableau) et bien sur supprimer ces deux textes.
Suite à mes recherches sur internet, voici ce que j'ai fait :
Ouverture du word et publipostage, il s'agit de la sub publipostage
Sélection du texte et mise en forme , il s'agit de la sub SelectionEntreDeuxTextes. Dans l'exemple ci'dessous, je n'ai aps encore fait la mise en forme. Il s'agit de convertir du texte en tableau, de faire des bordures et de donner la largeur des cellules...
Sub Publipostage()
'
'Penser à activer la référence : Microsoft Word 11.0 Object Library
'Pour excel 2003, au niveau du débuggage (code), choisir menu Outils et ensuite Préférences
'Pour excel 2000, revoir le programmation en passant par les objets (late binding)
'
Dim Wkb As Workbook
Dim Monword As Word.Application
Dim Mondoc As Word.Document
Dim Conn As String
Application.ScreenUpdating = False
ActiveSheet.Range("A2" ).CurrentRegion.Copy
Set Monword = New Word.Application
Monword.DisplayAlerts = wdAlertsNone
Set Mondoc = Monword.Documents.Open(Filename:=ThisWorkbook.Path & "\ModeleFiche.doc", ConfirmConversions:=True, _
ReadOnly:=False, AddToRecentFiles:=False, PasswordDocument:="", _
PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _
WritePasswordTemplate:="", Format:=wdOpenFormatAuto, XMLTransform:="" )
Conn = "Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=" & ThisWorkbook.Path & "\base fiche PE.xls;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet "
Mondoc.MailMerge.OpenDataSource Name:= _
ThisWorkbook.Path & "\base fiche PE.xls" _
, ConfirmConversions:=True, ReadOnly:=False, LinkToSource:=True, _
AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
Format:=wdOpenFormatAuto, Connection:=Conn, SQLStatement:="SELECT * FROM `Feuil1$`", SQLStatement1:="", SubType:= _
wdMergeSubTypeAccess
With Mondoc.MailMerge
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=False
End With
Mondoc.ActiveWindow.ActivePane.View.ShowAll = False
Stop
Monword.Visible = True
Call SelectionEntreDeuxTextes(Monword)
Mondoc.Close False
Monword.DisplayAlerts = wdAlertsAll
Set Mondoc = Nothing
Application.ScreenUpdating = True
End Sub
Private Sub SelectionEntreDeuxTextes(Monword)
Monword.Selection.HomeKey unit:=wdStory
Monword.ScreenUpdating = False
With Monword.Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Replacement.Font.Bold = True
.MatchWildcards = True
.Text = "(\debutTableau*\FinTableau)"
.Replacement.Text = "\1"
.Forward = True
.Execute Replace:=wdReplaceAll
End With
Stop
Monword.ScreenUpdating = True
End Sub
Mon problème est que la sélection ne se fait pas...Je pense surtout du fait que je ne comprenne pas ".Text = "(\DebutTableau*\FinTableau)""
Pouvez-vous m'aider?
Marie