Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Macro

9 réponses
Avatar
Guylaine
Bonjour à vous,

J'ai un héritant, j'importe un document .txt en word et le documents
contient beaucoup de lignes, je dois insérer un saut de page avant le texte
"Toto" et détruire tous les paragraphes vides au-dessus de "Toto", il n'y a
pas toujours le même nombre de paragraphes vides au-dessus.

Je passe beaucoup de temps à faire la mise en page de mon document

exemple :

blablablabla
blablablablablablablabla
(détruire ligne)
(détruire ligne)
(Saut de page)
Toto

Je n'ai jamais fait du vba en word.
Est-ce possible de créer une macro qui pourrait faire le travail pour moi ?

Merci d'être là pour nous :-)
Malheureusement, je dois absolument quitter ce soir par contre je vais me
reconnecterai demain.

9 réponses

Avatar
heureux-oli
Bonjour,

Pour faire cette macro, le plus simple a été la recherche de Toto, j'ai
utilisé l'enregistreur de macro.

Le mot trouvé, il faut se placer juste devant le mot et ensuite faire la
sélection du texte jusqu'au début du document.
Selection.HomeKey convient à merveille.
La sélection faite, il ne reste plus que la suppression et le saut de page.

Sub DelAvantToto()
Selection.Find.ClearFormatting
With Selection.Find
.Text = "Toto"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
With Selection
.Find.Execute
.HomeKey
.HomeKey unit:=wdStory, Extend:=True
.Delete
.InsertBreak wdPageBreak
End with
End Sub

--
Heureux-oli
http://heureuxoli.developpez.com/

----------------------------------------------------------------------------------

"Guylaine" a écrit dans le message de
news:
Bonjour à vous,

J'ai un héritant, j'importe un document .txt en word et le documents
contient beaucoup de lignes, je dois insérer un saut de page avant le
texte
"Toto" et détruire tous les paragraphes vides au-dessus de "Toto", il n'y
a
pas toujours le même nombre de paragraphes vides au-dessus.

Je passe beaucoup de temps à faire la mise en page de mon document

exemple :

blablablabla
blablablablablablablabla
(détruire ligne)
(détruire ligne)
(Saut de page)
Toto

Je n'ai jamais fait du vba en word.
Est-ce possible de créer une macro qui pourrait faire le travail pour moi
?

Merci d'être là pour nous :-)
Malheureusement, je dois absolument quitter ce soir par contre je vais me
reconnecterai demain.


Avatar
Geo

Bonjour à vous,

J'ai un héritant, j'importe un document .txt en word et le documents
contient beaucoup de lignes, je dois insérer un saut de page avant le texte
"Toto" et détruire tous les paragraphes vides au-dessus de "Toto", il n'y a
pas toujours le même nombre de paragraphes vides au-dessus.

Je passe beaucoup de temps à faire la mise en page de mon document

exemple :

blablablabla
blablablablablablablabla
(détruire ligne)
(détruire ligne)
(Saut de page)
Toto

Je n'ai jamais fait du vba en word.
Est-ce possible de créer une macro qui pourrait faire le travail pour moi ?


L'enregistreur de macro est votre ami:
Lancez l'enregistrement
Remplacez ^p{2,}Toto par ^p^mToto

Ça devrait fonctionner, mais je n'y arrive pas avec la version 2007
(l'exemple de l'aide ne marche pas d'ailleurs)
Si vous avez une version antérieure ?

Merci d'être là pour nous :-)
Malheureusement, je dois absolument quitter ce soir


Ce soir à 3 heures du matin, vous êtes du coté Ouest de la flaque.

--
A+

Avatar
TedIF
Il se trouve que Guylaine a formulé :
Bonjour à vous,

J'ai un héritant, j'importe un document .txt en word et le documents
contient beaucoup de lignes, je dois insérer un saut de page avant le texte
"Toto" et détruire tous les paragraphes vides au-dessus de "Toto", il n'y a
pas toujours le même nombre de paragraphes vides au-dessus.

Je passe beaucoup de temps à faire la mise en page de mon document

exemple :

blablablabla
blablablablablablablabla
(détruire ligne)
(détruire ligne)
(Saut de page)
Toto

Je n'ai jamais fait du vba en word.
Est-ce possible de créer une macro qui pourrait faire le travail pour moi ?

Merci d'être là pour nous :-)
Malheureusement, je dois absolument quitter ce soir par contre je vais me
reconnecterai demain.


Public Sub CleanDoc()

For Each Parag In ActiveDocument.Content.Paragraphs
If Parag.Range = "Toto" + Chr(13) Then
Set myRange = Parag.Range
With myRange
.Collapse Direction:=wdCollapseStart
.InsertBreak Type:=wdPageBreak
End With
Exit For
ElseIf Parag.Range = "" + Chr(13) Then
Parag.Range.Delete
End If
Next
End Sub

--

Dominique

Avatar
Guylaine
Merci beaucoup de votre aide à tous

TedIF la macro fonctionne très bien sauf qu'elle arrête après le 1er Toto,
est-ce possible de faire exécuter la macro jusqu'à la fin du document ?

Encore merci à tous :-)


Il se trouve que Guylaine a formulé :
Bonjour à vous,

J'ai un héritant, j'importe un document .txt en word et le documents
contient beaucoup de lignes, je dois insérer un saut de page avant le texte
"Toto" et détruire tous les paragraphes vides au-dessus de "Toto", il n'y a
pas toujours le même nombre de paragraphes vides au-dessus.

Je passe beaucoup de temps à faire la mise en page de mon document

exemple :

blablablabla
blablablablablablablabla
(détruire ligne)
(détruire ligne)
(Saut de page)
Toto

Je n'ai jamais fait du vba en word.
Est-ce possible de créer une macro qui pourrait faire le travail pour moi ?

Merci d'être là pour nous :-)
Malheureusement, je dois absolument quitter ce soir par contre je vais me
reconnecterai demain.


Public Sub CleanDoc()

For Each Parag In ActiveDocument.Content.Paragraphs
If Parag.Range = "Toto" + Chr(13) Then
Set myRange = Parag.Range
With myRange
.Collapse Direction:=wdCollapseStart
.InsertBreak Type:=wdPageBreak
End With
Exit For
ElseIf Parag.Range = "" + Chr(13) Then
Parag.Range.Delete
End If
Next
End Sub

--

Dominique






Avatar
TedIF
Guylaine a couché sur son écran :
Merci beaucoup de votre aide à tous

TedIF la macro fonctionne très bien sauf qu'elle arrête après le 1er Toto,
est-ce possible de faire exécuter la macro jusqu'à la fin du document ?

Public Sub CleanDoc()


For Each Parag In ActiveDocument.Content.Paragraphs
If Parag.Range = "Toto" + Chr(13) Then
Set myRange = Parag.Range
With myRange
.Collapse Direction:=wdCollapseStart
.InsertBreak Type:=wdPageBreak
End With
ElseIf Parag.Range = "" + Chr(13) Then
Parag.Range.Delete
End If
Next
End Sub

--

Dominique

Avatar
Guylaine
Exellent la macro fonctionne à merveille

Merci beaucoup TedIF.




Guylaine a couché sur son écran :
Merci beaucoup de votre aide à tous

TedIF la macro fonctionne très bien sauf qu'elle arrête après le 1er Toto,
est-ce possible de faire exécuter la macro jusqu'à la fin du document ?

Public Sub CleanDoc()


For Each Parag In ActiveDocument.Content.Paragraphs
If Parag.Range = "Toto" + Chr(13) Then
Set myRange = Parag.Range
With myRange
.Collapse Direction:=wdCollapseStart
.InsertBreak Type:=wdPageBreak
End With
ElseIf Parag.Range = "" + Chr(13) Then
Parag.Range.Delete
End If
Next
End Sub

--

Dominique






Avatar
Guylaine
Bonjour

J'ai tellement eu un bon service que j'en redemande :-)
Présentement la macro fonctionne pour Toto par contre j'ai des lignes qui
contiennent Toto 01 Toto 02 blablabla ect. Est-ce possible de modifier cette
macro pour qu'il vérifie s'il le paragraphe commance par Toto ...

Merci encore une fois


Exellent la macro fonctionne à merveille

Merci beaucoup TedIF.




Guylaine a couché sur son écran :
Merci beaucoup de votre aide à tous

TedIF la macro fonctionne très bien sauf qu'elle arrête après le 1er Toto,
est-ce possible de faire exécuter la macro jusqu'à la fin du document ?

Public Sub CleanDoc()


For Each Parag In ActiveDocument.Content.Paragraphs
If Parag.Range = "Toto" + Chr(13) Then
Set myRange = Parag.Range
With myRange
.Collapse Direction:=wdCollapseStart
.InsertBreak Type:=wdPageBreak
End With
ElseIf Parag.Range = "" + Chr(13) Then
Parag.Range.Delete
End If
Next
End Sub

--

Dominique








Avatar
TedIF
Guylaine a présenté l'énoncé suivant :
Bonjour

J'ai tellement eu un bon service que j'en redemande :-)
Présentement la macro fonctionne pour Toto par contre j'ai des lignes qui
contiennent Toto 01 Toto 02 blablabla ect. Est-ce possible de modifier cette
macro pour qu'il vérifie s'il le paragraphe commance par Toto ...

Merci encore une fois

Public Sub CleanDoc()


For Each Parag In ActiveDocument.Content.Paragraphs
If left(Parag.Range,4) = "Toto" + Chr(13) Then
Set myRange = Parag.Range
With myRange
.Collapse Direction:=wdCollapseStart
.InsertBreak Type:=wdPageBreak
End With
ElseIf Parag.Range = "" + Chr(13) Then
Parag.Range.Delete
End If
Next
End Sub

--

Dominique

Avatar
Guylaine
Excellent merci Beaucoup Dominique, je vous souhaite une bonne année 2008


Guylaine a présenté l'énoncé suivant :
Bonjour

J'ai tellement eu un bon service que j'en redemande :-)
Présentement la macro fonctionne pour Toto par contre j'ai des lignes qui
contiennent Toto 01 Toto 02 blablabla ect. Est-ce possible de modifier cette
macro pour qu'il vérifie s'il le paragraphe commance par Toto ...

Merci encore une fois

Public Sub CleanDoc()


For Each Parag In ActiveDocument.Content.Paragraphs
If left(Parag.Range,4) = "Toto" + Chr(13) Then
Set myRange = Parag.Range
With myRange
.Collapse Direction:=wdCollapseStart
.InsertBreak Type:=wdPageBreak
End With
ElseIf Parag.Range = "" + Chr(13) Then
Parag.Range.Delete
End If
Next
End Sub

--

Dominique