Trouver un terme et copier celui ci avec son paragraphe

5 réponses
Avatar
Arnaud
Bonjour,

Je ne suis pas un pro de Visual Basic n=E9anmoins j'ai trouv=E9 cette
formule pour faire exactement ce que je voulais, =E0 savoir trouver un
terme pr=E9cis, copier dans un nouveau document le paragraphe ou il
apparait. Tr=E8s utile pour les synth=E8ses.

Voil=E0 le code pour word 2002
Sub CopyParas
Selection.Find.ClearFormatting
With Selection.Find
.Text =3D "The Text You Want to Find"
.Forward =3D True
.Wrap =3D wdFindStop
.Format =3D False
.MatchCase =3D False
.MatchWholeWord =3D False
.MatchWildcards =3D False
.MatchSoundsLike =3D False
.MatchAllWordForms =3D False
End With
Do While Selection.Find.Execute
Selection.StartOf Unit:=3DwdParagraph
Selection.MoveEnd Unit:=3DwdParagraph
sBigString =3D sBigString + Selection.Text
Selection.MoveStart Unit:=3DwdParagraph
Loop
Documents.Add DocumentType:=3DwdNewBlankDocument
Selection.InsertAfter (sBigString)
End Sub

Modifi=E9 pour 2010, celui ci ne marche plus (m'affiche une s=E9rie de
lettre), pouvez vous m'aider?
Sub CopyParas
Selection.Find.ClearFormatting
With Selection.Find
.Text =3D "The Text You Want to Find"
.Forward =3D True
.Wrap =3D wdFindStop
.Format =3D False
.MatchCase =3D False
.MatchWholeWord =3D False
.MatchWildcards =3D False
.MatchSoundsLike =3D False
.MatchAllWordForms =3D False
End With
Do While Selection.Find.Execute
Selection.StartOf Unit:=3DwdParagraph
Selection.MoveEnd Unit:=3DwdParagraph
sBigString =3D sBigString + Selection.Text
Selection.MoveStart Unit:=3DwdParagraph
Loop
Documents.Add
Selection.InsertAfter (sBigString)
End Sub

Merci d'avance,

Arnaud.

5 réponses

Avatar
DanielCo
Bonjour,
Oui, mais tu es chez Excel, ici. Pose ta question ici :

http://answers.microsoft.com/fr-fr/office/forum/word

ou sur un autre forum Word.
Daniel


Bonjour,

Je ne suis pas un pro de Visual Basic néanmoins j'ai trouvé cette
formule pour faire exactement ce que je voulais, à savoir trouver un
terme précis, copier dans un nouveau document le paragraphe ou il
apparait. Très utile pour les synthèses.

Voilà le code pour word 2002
Sub CopyParas
Selection.Find.ClearFormatting
With Selection.Find
.Text = "The Text You Want to Find"
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Do While Selection.Find.Execute
Selection.StartOf Unit:=wdParagraph
Selection.MoveEnd Unit:=wdParagraph
sBigString = sBigString + Selection.Text
Selection.MoveStart Unit:=wdParagraph
Loop
Documents.Add DocumentType:=wdNewBlankDocument
Selection.InsertAfter (sBigString)
End Sub

Modifié pour 2010, celui ci ne marche plus (m'affiche une série de
lettre), pouvez vous m'aider?
Sub CopyParas
Selection.Find.ClearFormatting
With Selection.Find
.Text = "The Text You Want to Find"
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Do While Selection.Find.Execute
Selection.StartOf Unit:=wdParagraph
Selection.MoveEnd Unit:=wdParagraph
sBigString = sBigString + Selection.Text
Selection.MoveStart Unit:=wdParagraph
Loop
Documents.Add
Selection.InsertAfter (sBigString)
End Sub

Merci d'avance,

Arnaud.
Avatar
MichD
Bonjour,


Cette macro recherche l'expression stipulée dans chacun des paragraphes du document à l'écran.
Si l'expression recherchée est présente, elle place dans une variable tout le paragraphe. Elle boucle
sur tous les paragraphes du document.
À la fin, elle place tous les paragraphes où l'expression était présente dans un nouveau document.

'-----------------------------------------
Sub CopyParas11()
Dim Rg As Range,sBigString As String
Set Rg = ActiveDocument.Range
Rg.Find.ClearFormatting
With Rg.Find
.Text = "Le texte à rechercher"
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
With Rg
Do While .Find.Execute
.StartOf Unit:=wdParagraph
.MoveEnd Unit:=wdParagraph
sBigString = sBigString + .Text
.MoveStart Unit:=wdParagraph
Loop
End With
If sBigString <> "" then
Documents.Add
ActiveDocument.Range.InsertAfter sBigString
End If
End Sub
'-----------------------------------------



MichD
------------------------------------------
"Arnaud" a écrit dans le message de groupe de discussion :


Bonjour,

Je ne suis pas un pro de Visual Basic néanmoins j'ai trouvé cette
formule pour faire exactement ce que je voulais, à savoir trouver un
terme précis, copier dans un nouveau document le paragraphe ou il
apparait. Très utile pour les synthèses.

Voilà le code pour word 2002
Sub CopyParas
Selection.Find.ClearFormatting
With Selection.Find
.Text = "The Text You Want to Find"
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Do While Selection.Find.Execute
Selection.StartOf Unit:=wdParagraph
Selection.MoveEnd Unit:=wdParagraph
sBigString = sBigString + Selection.Text
Selection.MoveStart Unit:=wdParagraph
Loop
Documents.Add DocumentType:=wdNewBlankDocument
Selection.InsertAfter (sBigString)
End Sub

Modifié pour 2010, celui ci ne marche plus (m'affiche une série de
lettre), pouvez vous m'aider?
Sub CopyParas
Selection.Find.ClearFormatting
With Selection.Find
.Text = "The Text You Want to Find"
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Do While Selection.Find.Execute
Selection.StartOf Unit:=wdParagraph
Selection.MoveEnd Unit:=wdParagraph
sBigString = sBigString + Selection.Text
Selection.MoveStart Unit:=wdParagraph
Loop
Documents.Add
Selection.InsertAfter (sBigString)
End Sub

Merci d'avance,

Arnaud.
Avatar
MichD
Ceci est suffisant :

'---------------------------------------
Sub Trouver_Expression_Copie_Paragraphe_Nouveau_Document()
Dim Rg As Range, sBigString As String, Cherche As String
'******Variable à définir*******
Cherche = "ecoule" 'Expression à rechercher
'*******************************
'Avec le document actif à l'écran dans Word
Set Rg = ActiveDocument.Range
With Rg
.Find.ClearFormatting
Do While .Find.Execute(FindText:="écoule", MatchCase:úlse)
.StartOf Unit:=wdParagraph
.MoveEnd Unit:=wdParagraph
sBigString = sBigString + .Text
.MoveStart Unit:=wdParagraph
Loop
End With
'Ajoute un document seulement si au moins une occurrence est trouvée
If sBigString <> "" Then
Documents.Add
ActiveDocument.Range.InsertAfter sBigString
End If
End Sub
'---------------------------------------



MichD
------------------------------------------
Avatar
MichD
Suite à une modification de dernière minute, j'ai omis de modifier cette ligne
de code qui devrait se lire comme suit. J'ai simplement remplacé l'expression
recherchée par le nom de la variable...

Do While .Find.Execute(FindText:=Cherche, MatchCase:úlse)

'---------------------------------------
Sub Trouver_Expression_Copie_Paragraphe_Nouveau_Document()
Dim Rg As Range, sBigString As String, Cherche As String
'******Variable à définir*******
Cherche = "ecoule" 'Expression à rechercher
'*******************************
'Avec le document actif à l'écran dans Word
Set Rg = ActiveDocument.Range
With Rg
.Find.ClearFormatting
Do While .Find.Execute(FindText:=Cherche, MatchCase:úlse)
.StartOf Unit:=wdParagraph
.MoveEnd Unit:=wdParagraph
sBigString = sBigString + .Text
.MoveStart Unit:=wdParagraph
Loop
End With
'Ajoute un document seulement si au moins une occurrence est trouvée
If sBigString <> "" Then
Documents.Add
ActiveDocument.Range.InsertAfter sBigString
End If
End Sub
'---------------------------------------


MichD
------------------------------------------
Avatar
MichD
OUPS ! la bonne syntaxe de cette ligne de code est :

Do While .Find.Execute(FindText:=(Cherche), MatchCase:úlse)

Faut mettre la variable "Cherche" entre parenthèse pour assurer le
bon fonctionnement de la procédure.

'---------------------------------------
Sub Trouver_Expression_Copie_Paragraphe_Nouveau_Document()
Dim Rg As Range, sBigString As String, Cherche As String
'******Variable à définir*******
Cherche = "ecoule" 'Expression à rechercher
'*******************************
'Avec le document actif à l'écran dans Word
Set Rg = ActiveDocument.Range
With Rg
.Find.ClearFormatting
Do While .Find.Execute(FindText:=(Cherche), MatchCase:úlse)
.StartOf Unit:=wdParagraph
.MoveEnd Unit:=wdParagraph
sBigString = sBigString + .Text
.MoveStart Unit:=wdParagraph
Loop
End With
'Ajoute un document seulement si au moins une occurrence est trouvée
If sBigString <> "" Then
Documents.Add
ActiveDocument.Range.InsertAfter sBigString
End If
End Sub
'---------------------------------------


MichD
------------------------------------------