Trouver un terme et copier celui ci avec son paragraphe
5 réponses
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
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.
Bonjour,
Oui, mais tu es chez Excel, ici. Pose ta question ici :
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
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.
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.
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 :
0393bc77-00a7-4694-b81e-52ee4388cd47@c1g2000vbw.googlegroups.com...
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
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.
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 ------------------------------------------
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
'---------------------------------------
'--------------------------------------- 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 ------------------------------------------
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 ------------------------------------------
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
'---------------------------------------
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 ------------------------------------------
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 ------------------------------------------
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
'---------------------------------------
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 '---------------------------------------