selection entre deux textes (dans word a partir d'excel) - VB/VBA/VBS - Programmation
Marsh Posté le 17-01-2009 à 15:56:04
J'ai trouvé une partie de mon erreur : en fait, je n'avais pas mis les parentheses... j'avais du les enlever pour tester.
Maintenant je souhaiterai faire une boucle jusqu'à la fin du document?
Comment fait-on?
J'ai testé avec
Do While Not Monword.Selection.EndKey
.....
Loop
Merci de m'apporter une petite aide
Marie
Marsh Posté le 17-01-2009 à 16:46:14
J'ai trouvé pour la boucle...
il faut mettre :
Do While Monword.Selection.Find.Execute("(\DebutTableau*\FinTableau)" ) = True
....
Monword.Selection.MoveRight Unit:=wdCharacter, Count:=1
Loop
Mon probleme suivant est de modifier la largeur des cellules de mon tableau.
Voici ce que j'ai fait :
Monword.Selection.Tables(1).Columns(1).PreferredWidthType = wdPreferredWidthPoints
Monword.Selection.Tables(1).Columns(1).PreferredWidth = CentimetersToPoints(3.25)
Mais ca ne marche pas, j'ai une erreur...
Y a personne pour aider?
A bientot
Marie
Marsh Posté le 17-01-2009 à 16:52:55
Essaie avec la propriété columnwidth plutot que preferredwidth
Marsh Posté le 17-01-2009 à 17:40:56
Bonjour,
Merci pour la proposition...
j'ai un message d'erreur d'execution 438
"Propriété ou methode non geree par cet objet"
J'avais mis :
Monword.Selection.Tables(1).Columns(1).ColumnWidth = CentimetersToPoints(3.25)
Il ne me reste plus que ca et j'ai fini....
Avez-vous une autre idée?
Merci
Marie
Marsh Posté le 17-01-2009 à 18:10:07
Et avec la propriété width à la place de columnwidth simplement ?
Marsh Posté le 17-01-2009 à 12:35:23
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