bonjour ,
J'aimerai faire une macro capable de lire un fichier Word , mais de ne récuperer que certains paragraphes dont le style serait bien déterminé, puis de les coller dans excel en automatique.
Exemple :
Dans mon word plusieurs paragraphes
Paragraphe 1 (style début) ...bla bla ... (style FIN)
Paragraphe 2 (style autre) ... bla bla ... (style autre)
Paragraphe 3 (style début) ... bla bla ... (style FIN)
Dans excel j'aimerai récupérer les Paragraphe 1 et 3 qui commence par le style début et se termine avec le style fin.
J'ai trouvé des fragments de code mais aucun qui me permettent de choisir précisement mes paragraphes. Pouvez vous m'aider ?
j'ai deux solutions la premiere selectionne tout le contenu de word depuis excel mais j'arrive pas à filtrer par style de paragraphe
With AppWord
' On sélectionne tout
' .Selection.WholeStory
' On copie tout
' .Selection.Copy
La seconde lance une macro contenu dans word qui permet la selection par style :
'// Rechercher le texte de style "Identifiant"
Selection.Find.ClearFormatting
Selection.Find.Style = ActiveDocument.Styles("ID_DBT") <== Style debut parag.
With Selection.Find
.Text = "^?"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
While Selection.Find.Found
With Selection
.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend
.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
End With
'// On stocke le texte de l'identifiant
aIdentifiant = Trim(Selection.Text)
Selection.MoveRight Unit:=wdCharacter, Count:=2
While Selection.Paragraphs(Selection.Paragraphs.Count).Style <> "FIN" <== Style fin de selection
Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend
Wend
Selection.MoveUp Unit:=wdParagraph, Count:=1, Extend:=wdExtend
ActiveDocument.Range(Start:=ActiveDocument.Tables(1).Cell(Row:=ActiveDocument.Tables(1).Rows.Count - 1, Column:=1).Range.Start, End:=ActiveDocument.Tables(1).Cell(Row:=ActiveDocument.Tables(1).Rows.Count - 1, Column:=1).Range.Start).InsertAfter aIdentifiant
ActiveDocument.Range(Start:=ActiveDocument.Tables(1).Cell(Row:=ActiveDocument.Tables(1).Rows.Count - 1, Column:=2).Range.Start, End:=ActiveDocument.Tables(1).Cell(Row:=ActiveDocument.Tables(1).Rows.Count - 1, Column:=2).Range.Start).InsertAfter Selection.Text
'// On ajoute une ligne pour le tableau
ActiveDocument.Tables(1).Rows.Add BeforeRow:=ActiveDocument.Tables(1).Rows(ActiveDocument.Tables(1).Rows.Count)
Selection.MoveDown Unit:=wdParagraph, Count:=1
Selection.Find.Style = ActiveDocument.Styles("ID_DBT")
With Selection.Find
.Text = "^?"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
Wend
Mais j'arrive pas à récuperer comme je le voudrai mes différents chapitres.
Please aidez moi
J'aimerai faire une macro capable de lire un fichier Word , mais de ne récuperer que certains paragraphes dont le style serait bien déterminé, puis de les coller dans excel en automatique.
Exemple :
Dans mon word plusieurs paragraphes
Paragraphe 1 (style début) ...bla bla ... (style FIN)
Paragraphe 2 (style autre) ... bla bla ... (style autre)
Paragraphe 3 (style début) ... bla bla ... (style FIN)
Dans excel j'aimerai récupérer les Paragraphe 1 et 3 qui commence par le style début et se termine avec le style fin.
J'ai trouvé des fragments de code mais aucun qui me permettent de choisir précisement mes paragraphes. Pouvez vous m'aider ?
j'ai deux solutions la premiere selectionne tout le contenu de word depuis excel mais j'arrive pas à filtrer par style de paragraphe
With AppWord
' On sélectionne tout
' .Selection.WholeStory
' On copie tout
' .Selection.Copy
La seconde lance une macro contenu dans word qui permet la selection par style :
'// Rechercher le texte de style "Identifiant"
Selection.Find.ClearFormatting
Selection.Find.Style = ActiveDocument.Styles("ID_DBT") <== Style debut parag.
With Selection.Find
.Text = "^?"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
While Selection.Find.Found
With Selection
.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend
.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
End With
'// On stocke le texte de l'identifiant
aIdentifiant = Trim(Selection.Text)
Selection.MoveRight Unit:=wdCharacter, Count:=2
While Selection.Paragraphs(Selection.Paragraphs.Count).Style <> "FIN" <== Style fin de selection
Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend
Wend
Selection.MoveUp Unit:=wdParagraph, Count:=1, Extend:=wdExtend
ActiveDocument.Range(Start:=ActiveDocument.Tables(1).Cell(Row:=ActiveDocument.Tables(1).Rows.Count - 1, Column:=1).Range.Start, End:=ActiveDocument.Tables(1).Cell(Row:=ActiveDocument.Tables(1).Rows.Count - 1, Column:=1).Range.Start).InsertAfter aIdentifiant
ActiveDocument.Range(Start:=ActiveDocument.Tables(1).Cell(Row:=ActiveDocument.Tables(1).Rows.Count - 1, Column:=2).Range.Start, End:=ActiveDocument.Tables(1).Cell(Row:=ActiveDocument.Tables(1).Rows.Count - 1, Column:=2).Range.Start).InsertAfter Selection.Text
'// On ajoute une ligne pour le tableau
ActiveDocument.Tables(1).Rows.Add BeforeRow:=ActiveDocument.Tables(1).Rows(ActiveDocument.Tables(1).Rows.Count)
Selection.MoveDown Unit:=wdParagraph, Count:=1
Selection.Find.Style = ActiveDocument.Styles("ID_DBT")
With Selection.Find
.Text = "^?"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
Wend
Mais j'arrive pas à récuperer comme je le voudrai mes différents chapitres.
Please aidez moi
Dernière édition: