Plutot que parcourir mon document paragraphe par paragraphe,
pour gagner du temps,
il me semble pr=E9f=E9rable de proc=E9der au moyen d'un "FIND",
Voici le code qui tourne :
Sub Formater_NomEtDate()
'PASSER LES NOMS D'OBJETS EN "Titre 2"
'PASSE LES PARAGRAPHES CONTENANT UNE CHAINE REP=C9RE EN STYLE
PERSONNALIS=C9
Dim rng As Range
Dim parag As Paragraph
Set rng =3D ActiveDocument.Range
With rng.Find
.Text =3D "FindMe"
.Replacement.Text =3D "\&"
If .Execute Then
Set Para =3D rng.Paragraphs(1)
If Not (Para Is Nothing) Then
Set rng =3D Para.Range
rng.Style =3D "UserStyle_1"
Para.Previous.Range.Style =3D "UserStyle_2"
Else
MsgBox "CAS =C0 TRAITER ?"
End If
End If
End With
End Sub
Ce code trouve bien la premi=E8re occurence de la chaine FindMe",
modifie bien le style du paragraphe contenant "FindMe" et celui le
pr=E9c=E9dent.
MAIS il ne passe pas aux autres occurence de "FindMe"
Quelque chose comme :
Selection.Find.Execute Replace:=3DwdReplaceAll
Merci d evotre collaboration
Il me semble que utilisation de cette ligne Set Para = rng.Paragraphs(1)
va toujours adresser le premier paragraphe du range. Ce qui nous donne une boucle inutile.
Voilà une boucle ******************************************* Sub rechercheFindMe()
Selection.HomeKey unit:=wdStory
Do Selection.Find.ClearFormatting With Selection.Find .Text = "FindMe" .Execute End With Selection.Expand unit:=wdParagraph Selection.Range.Style = "UserStyle_2" Selection.MoveRight unit:=wdCharacter, Count:=1 Loop Until Selection.Find.Execute = False
End Sub ***************************************** À toi de voir. -- Heureux-oli Si rien n'est mentionné pour le code, c'est que j'en suis l'auteur. http://heureuxoli.developpez.com/ http://word.developpez.com/
Plutot que parcourir mon document paragraphe par paragraphe, pour gagner du temps, il me semble préférable de procéder au moyen d'un "FIND",
Voici le code qui tourne :
Sub Formater_NomEtDate() 'PASSER LES NOMS D'OBJETS EN "Titre 2" 'PASSE LES PARAGRAPHES CONTENANT UNE CHAINE REPÉRE EN STYLE PERSONNALISÉ
Dim rng As Range Dim parag As Paragraph
Set rng = ActiveDocument.Range
With rng.Find .Text = "FindMe" .Replacement.Text = "&"
If .Execute Then Set Para = rng.Paragraphs(1) If Not (Para Is Nothing) Then Set rng = Para.Range rng.Style = "UserStyle_1" Para.Previous.Range.Style = "UserStyle_2" Else MsgBox "CAS À TRAITER ?" End If End If End With
End Sub
Ce code trouve bien la première occurence de la chaine FindMe", modifie bien le style du paragraphe contenant "FindMe" et celui le précédent.
MAIS il ne passe pas aux autres occurence de "FindMe" Quelque chose comme : Selection.Find.Execute Replace:=wdReplaceAll Merci d evotre collaboration
Salut,
Il me semble que utilisation de cette ligne
Set Para = rng.Paragraphs(1)
va toujours adresser le premier paragraphe du range.
Ce qui nous donne une boucle inutile.
Voilà une boucle
*******************************************
Sub rechercheFindMe()
Selection.HomeKey unit:=wdStory
Do
Selection.Find.ClearFormatting
With Selection.Find
.Text = "FindMe"
.Execute
End With
Selection.Expand unit:=wdParagraph
Selection.Range.Style = "UserStyle_2"
Selection.MoveRight unit:=wdCharacter, Count:=1
Loop Until Selection.Find.Execute = False
End Sub
*****************************************
À toi de voir.
--
Heureux-oli
Si rien n'est mentionné pour le code, c'est que j'en suis l'auteur.
http://heureuxoli.developpez.com/
http://word.developpez.com/
<jean-paul.bataille@sfr.com> a écrit dans le message de news:
2f0081a6-73b6-4fdb-a340-d744ee7c3329@w34g2000yqm.googlegroups.com...
Bonjour,
Plutot que parcourir mon document paragraphe par paragraphe,
pour gagner du temps,
il me semble préférable de procéder au moyen d'un "FIND",
Voici le code qui tourne :
Sub Formater_NomEtDate()
'PASSER LES NOMS D'OBJETS EN "Titre 2"
'PASSE LES PARAGRAPHES CONTENANT UNE CHAINE REPÉRE EN STYLE
PERSONNALISÉ
Dim rng As Range
Dim parag As Paragraph
Set rng = ActiveDocument.Range
With rng.Find
.Text = "FindMe"
.Replacement.Text = "&"
If .Execute Then
Set Para = rng.Paragraphs(1)
If Not (Para Is Nothing) Then
Set rng = Para.Range
rng.Style = "UserStyle_1"
Para.Previous.Range.Style = "UserStyle_2"
Else
MsgBox "CAS À TRAITER ?"
End If
End If
End With
End Sub
Ce code trouve bien la première occurence de la chaine FindMe",
modifie bien le style du paragraphe contenant "FindMe" et celui le
précédent.
MAIS il ne passe pas aux autres occurence de "FindMe"
Quelque chose comme :
Selection.Find.Execute Replace:=wdReplaceAll
Merci d evotre collaboration
Il me semble que utilisation de cette ligne Set Para = rng.Paragraphs(1)
va toujours adresser le premier paragraphe du range. Ce qui nous donne une boucle inutile.
Voilà une boucle ******************************************* Sub rechercheFindMe()
Selection.HomeKey unit:=wdStory
Do Selection.Find.ClearFormatting With Selection.Find .Text = "FindMe" .Execute End With Selection.Expand unit:=wdParagraph Selection.Range.Style = "UserStyle_2" Selection.MoveRight unit:=wdCharacter, Count:=1 Loop Until Selection.Find.Execute = False
End Sub ***************************************** À toi de voir. -- Heureux-oli Si rien n'est mentionné pour le code, c'est que j'en suis l'auteur. http://heureuxoli.developpez.com/ http://word.developpez.com/
Plutot que parcourir mon document paragraphe par paragraphe, pour gagner du temps, il me semble préférable de procéder au moyen d'un "FIND",
Voici le code qui tourne :
Sub Formater_NomEtDate() 'PASSER LES NOMS D'OBJETS EN "Titre 2" 'PASSE LES PARAGRAPHES CONTENANT UNE CHAINE REPÉRE EN STYLE PERSONNALISÉ
Dim rng As Range Dim parag As Paragraph
Set rng = ActiveDocument.Range
With rng.Find .Text = "FindMe" .Replacement.Text = "&"
If .Execute Then Set Para = rng.Paragraphs(1) If Not (Para Is Nothing) Then Set rng = Para.Range rng.Style = "UserStyle_1" Para.Previous.Range.Style = "UserStyle_2" Else MsgBox "CAS À TRAITER ?" End If End If End With
End Sub
Ce code trouve bien la première occurence de la chaine FindMe", modifie bien le style du paragraphe contenant "FindMe" et celui le précédent.
MAIS il ne passe pas aux autres occurence de "FindMe" Quelque chose comme : Selection.Find.Execute Replace:=wdReplaceAll Merci d evotre collaboration
jean-paul.bataille
> Do Selection.Find.ClearFormatting
Loop Until Selection.Find.Execute = False
End Sub ***************************************** Heureux-oli
Merci de ce bout de code Heeureux-Oli, Mais il saute une occurence sur deux, du fait de selection.find execute = false dans la ligne Loop
Merci de l'aide,
> Do
Selection.Find.ClearFormatting
Loop Until Selection.Find.Execute = False
End Sub
*****************************************
Heureux-oli
Merci de ce bout de code Heeureux-Oli,
Mais il saute une occurence sur deux, du fait de selection.find
execute = false dans la ligne Loop
T'es sûr ? Je dirais plutôt que ça fait avancer d'un cran.
Quand je fais une boucle "Manuelle", je fais : Trouvé = Selection.Find.Execute
et ensuite : Loop Until Trouvé = False
-- A+
heureux-oli
Salut,
Extrait de l'aide
"Renvoie la valeur True si l'opération a été effectuée avec succès. Argument de type Boolean."
Si on l'utilise dans une expression, on récupère un boolean. Je pensais que le fait de l'utiliser en simple comparaison n'appliquait pas la méthode, si c'est le cas, alors il faut en enlever un des deux, et de préférence le premier.
J'aurais donc eu de la chance en l'utilisant.
-- Heureux-oli Si rien n'est mentionné pour le code, c'est que j'en suis l'auteur. http://heureuxoli.developpez.com/ http://word.developpez.com/
T'es sûr ? Je dirais plutôt que ça fait avancer d'un cran.
Quand je fais une boucle "Manuelle", je fais : Trouvé = Selection.Find.Execute
et ensuite : Loop Until Trouvé = False
-- A+
Salut,
Extrait de l'aide
"Renvoie la valeur True si l'opération a été effectuée avec succès. Argument
de type Boolean."
Si on l'utilise dans une expression, on récupère un boolean. Je pensais que
le fait de l'utiliser en simple comparaison n'appliquait pas la méthode, si
c'est le cas, alors il faut en enlever un des deux, et de préférence le
premier.
J'aurais donc eu de la chance en l'utilisant.
--
Heureux-oli
Si rien n'est mentionné pour le code, c'est que j'en suis l'auteur.
http://heureuxoli.developpez.com/
http://word.developpez.com/
"Renvoie la valeur True si l'opération a été effectuée avec succès. Argument de type Boolean."
Si on l'utilise dans une expression, on récupère un boolean. Je pensais que le fait de l'utiliser en simple comparaison n'appliquait pas la méthode, si c'est le cas, alors il faut en enlever un des deux, et de préférence le premier.
J'aurais donc eu de la chance en l'utilisant.
-- Heureux-oli Si rien n'est mentionné pour le code, c'est que j'en suis l'auteur. http://heureuxoli.developpez.com/ http://word.developpez.com/
T'es sûr ? Je dirais plutôt que ça fait avancer d'un cran.
Quand je fais une boucle "Manuelle", je fais : Trouvé = Selection.Find.Execute
et ensuite : Loop Until Trouvé = False
-- A+
heureux-oli
Salut,
La nuit fait dormir. Geo ayant raison, j'ai modifié le code proposé.
******************************************* Sub rechercheFindMe() Dim myResult As Boolean Selection.HomeKey unit:=wdStory
Do Selection.Find.ClearFormatting With Selection.Find .Text = "FindMe" myResult = .Execute End With Selection.Expand unit:=wdParagraph Selection.Range.Style = "UserStyle_2" Selection.MoveRight unit:=wdCharacter, Count:=1 Loop while myResult
End Sub *****************************************
-- Heureux-oli Si rien n'est mentionné pour le code, c'est que j'en suis l'auteur. http://heureuxoli.developpez.com/ http://word.developpez.com/
"Renvoie la valeur True si l'opération a été effectuée avec succès. Argument de type Boolean."
Si on l'utilise dans une expression, on récupère un boolean. Je pensais que le fait de l'utiliser en simple comparaison n'appliquait pas la méthode, si c'est le cas, alors il faut en enlever un des deux, et de préférence le premier.
J'aurais donc eu de la chance en l'utilisant.
-- Heureux-oli Si rien n'est mentionné pour le code, c'est que j'en suis l'auteur. http://heureuxoli.developpez.com/ http://word.developpez.com/
T'es sûr ? Je dirais plutôt que ça fait avancer d'un cran.
Quand je fais une boucle "Manuelle", je fais : Trouvé = Selection.Find.Execute
et ensuite : Loop Until Trouvé = False
-- A+
Salut,
La nuit fait dormir.
Geo ayant raison, j'ai modifié le code proposé.
*******************************************
Sub rechercheFindMe()
Dim myResult As Boolean
Selection.HomeKey unit:=wdStory
Do
Selection.Find.ClearFormatting
With Selection.Find
.Text = "FindMe"
myResult = .Execute
End With
Selection.Expand unit:=wdParagraph
Selection.Range.Style = "UserStyle_2"
Selection.MoveRight unit:=wdCharacter, Count:=1
Loop while myResult
End Sub
*****************************************
--
Heureux-oli
Si rien n'est mentionné pour le code, c'est que j'en suis l'auteur.
http://heureuxoli.developpez.com/
http://word.developpez.com/
"heureux-oli" <yyy.heureux-oli@hotmail.yyy> a écrit dans le message de news:
OERCo3yrJHA.1304@TK2MSFTNGP05.phx.gbl...
Salut,
Extrait de l'aide
"Renvoie la valeur True si l'opération a été effectuée avec succès.
Argument de type Boolean."
Si on l'utilise dans une expression, on récupère un boolean. Je pensais
que le fait de l'utiliser en simple comparaison n'appliquait pas la
méthode, si c'est le cas, alors il faut en enlever un des deux, et de
préférence le premier.
J'aurais donc eu de la chance en l'utilisant.
--
Heureux-oli
Si rien n'est mentionné pour le code, c'est que j'en suis l'auteur.
http://heureuxoli.developpez.com/
http://word.developpez.com/
La nuit fait dormir. Geo ayant raison, j'ai modifié le code proposé.
******************************************* Sub rechercheFindMe() Dim myResult As Boolean Selection.HomeKey unit:=wdStory
Do Selection.Find.ClearFormatting With Selection.Find .Text = "FindMe" myResult = .Execute End With Selection.Expand unit:=wdParagraph Selection.Range.Style = "UserStyle_2" Selection.MoveRight unit:=wdCharacter, Count:=1 Loop while myResult
End Sub *****************************************
-- Heureux-oli Si rien n'est mentionné pour le code, c'est que j'en suis l'auteur. http://heureuxoli.developpez.com/ http://word.developpez.com/
"Renvoie la valeur True si l'opération a été effectuée avec succès. Argument de type Boolean."
Si on l'utilise dans une expression, on récupère un boolean. Je pensais que le fait de l'utiliser en simple comparaison n'appliquait pas la méthode, si c'est le cas, alors il faut en enlever un des deux, et de préférence le premier.
J'aurais donc eu de la chance en l'utilisant.
-- Heureux-oli Si rien n'est mentionné pour le code, c'est que j'en suis l'auteur. http://heureuxoli.developpez.com/ http://word.developpez.com/
T'es sûr ? Je dirais plutôt que ça fait avancer d'un cran.
Quand je fais une boucle "Manuelle", je fais : Trouvé = Selection.Find.Execute
et ensuite : Loop Until Trouvé = False
-- A+
jean-paul.bataille
Merci à vous deux, c'est tout à fait ce que je cherche, reste plus qu'a adapter à mon besoin réel. Normal il faut bien progresser, mais avec un support tel que celui que vous offrez tout les deux : solution certe mais aussi explication; je vais passer un bon week-end.
Jean-Paul
Merci à vous deux,
c'est tout à fait ce que je cherche, reste plus qu'a adapter à mon
besoin réel.
Normal il faut bien progresser,
mais avec un support tel que celui que vous offrez tout les deux :
solution certe mais aussi explication; je vais passer un bon week-end.
Merci à vous deux, c'est tout à fait ce que je cherche, reste plus qu'a adapter à mon besoin réel. Normal il faut bien progresser, mais avec un support tel que celui que vous offrez tout les deux : solution certe mais aussi explication; je vais passer un bon week-end.
Jean-Paul
heureux-oli
Salut,
Moi aussi, mais pour d'autres raisons. Comme tous les ans à pareille époque, les apertintailles vont résonner ce WE.
Donc, bon WE
-- Heureux-oli Si rien n'est mentionné pour le code, c'est que j'en suis l'auteur. http://heureuxoli.developpez.com/ http://word.developpez.com/
Merci à vous deux, c'est tout à fait ce que je cherche, reste plus qu'a adapter à mon besoin réel. Normal il faut bien progresser, mais avec un support tel que celui que vous offrez tout les deux : solution certe mais aussi explication; je vais passer un bon week-end.
Jean-Paul
Salut,
Moi aussi, mais pour d'autres raisons.
Comme tous les ans à pareille époque, les apertintailles vont résonner ce
WE.
Donc, bon WE
--
Heureux-oli
Si rien n'est mentionné pour le code, c'est que j'en suis l'auteur.
http://heureuxoli.developpez.com/
http://word.developpez.com/
<jean-paul.bataille@sfr.com> a écrit dans le message de news:
a1665d78-11ba-4c76-b0e3-d43afc4bc23f@q9g2000yqc.googlegroups.com...
Merci à vous deux,
c'est tout à fait ce que je cherche, reste plus qu'a adapter à mon
besoin réel.
Normal il faut bien progresser,
mais avec un support tel que celui que vous offrez tout les deux :
solution certe mais aussi explication; je vais passer un bon week-end.
Merci à vous deux, c'est tout à fait ce que je cherche, reste plus qu'a adapter à mon besoin réel. Normal il faut bien progresser, mais avec un support tel que celui que vous offrez tout les deux : solution certe mais aussi explication; je vais passer un bon week-end.
Jean-Paul
jean-paul.bataille
Et voici :
Sub rechercheFindMe()
Dim myResult As Boolean
'venir au début du document Selection.HomeKey unit:=wdStory
Do 'boucler pour passer en revue les "FindMe" Selection.Find.ClearFormatting With Selection.Find .Text = "FindMe" myResult = .Execute End With 'traiter par paragraphe complet Selection.Expand unit:=wdParagraph 'paragraphe précédent le "FindMe" Selection.Range.Previous.Style = "UserStyle_1" 'paragraphe du "FindMe" Selection.Range.Style = "UserStyle_2" Selection.MoveRight unit:=wdCharacter, Count:=1 Loop While myResult
End Sub
En fait je recherche une chaine "FindMe", jemet le paragraphe précédent au style "UserStyle_1", alors que le paragraphe contenant "FinfMe" est mis en style "UserStyle_2".
Merci pour le coup de main.
Et voici :
Sub rechercheFindMe()
Dim myResult As Boolean
'venir au début du document
Selection.HomeKey unit:=wdStory
Do
'boucler pour passer en revue les "FindMe"
Selection.Find.ClearFormatting
With Selection.Find
.Text = "FindMe"
myResult = .Execute
End With
'traiter par paragraphe complet
Selection.Expand unit:=wdParagraph
'paragraphe précédent le "FindMe"
Selection.Range.Previous.Style = "UserStyle_1"
'paragraphe du "FindMe"
Selection.Range.Style = "UserStyle_2"
Selection.MoveRight unit:=wdCharacter, Count:=1
Loop While myResult
End Sub
En fait je recherche une chaine "FindMe", jemet le paragraphe
précédent au style "UserStyle_1", alors que le paragraphe contenant
"FinfMe" est mis en style "UserStyle_2".
'venir au début du document Selection.HomeKey unit:=wdStory
Do 'boucler pour passer en revue les "FindMe" Selection.Find.ClearFormatting With Selection.Find .Text = "FindMe" myResult = .Execute End With 'traiter par paragraphe complet Selection.Expand unit:=wdParagraph 'paragraphe précédent le "FindMe" Selection.Range.Previous.Style = "UserStyle_1" 'paragraphe du "FindMe" Selection.Range.Style = "UserStyle_2" Selection.MoveRight unit:=wdCharacter, Count:=1 Loop While myResult
End Sub
En fait je recherche une chaine "FindMe", jemet le paragraphe précédent au style "UserStyle_1", alors que le paragraphe contenant "FinfMe" est mis en style "UserStyle_2".
Merci pour le coup de main.
Geo
Bonjour Jean-Paul
J'ai un petit doute ici :
'paragraphe précédent le "FindMe" Selection.Range.Previous.Style = "UserStyle_1"
Comme vous n'avez pas précisé le unit pour Previous, il n'est pas évident que ce soit le "paragraphe" précédent. Je n'ai pas vu dans la documentation quelle est l'unit par défaut. Mais si ça marche, pourquoi se poser des questions ? Bien joué.
-- A+
Bonjour Jean-Paul
J'ai un petit doute ici :
'paragraphe précédent le "FindMe"
Selection.Range.Previous.Style = "UserStyle_1"
Comme vous n'avez pas précisé le unit pour Previous, il n'est pas
évident que ce soit le "paragraphe" précédent.
Je n'ai pas vu dans la documentation quelle est l'unit par défaut.
Mais si ça marche, pourquoi se poser des questions ?
Bien joué.
'paragraphe précédent le "FindMe" Selection.Range.Previous.Style = "UserStyle_1"
Comme vous n'avez pas précisé le unit pour Previous, il n'est pas évident que ce soit le "paragraphe" précédent. Je n'ai pas vu dans la documentation quelle est l'unit par défaut. Mais si ça marche, pourquoi se poser des questions ? Bien joué.