Macro

Le
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.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
heureux-oli
Le #1769389
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" 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.


Geo
Le #1769388

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+

TedIF
Le #1769386
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

Guylaine
Le #1769375
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






TedIF
Le #1769374
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

Guylaine
Le #1769368
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






Guylaine
Le #1757266
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








TedIF
Le #1769348
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

Guylaine
Le #1769346
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






Publicité
Poster une réponse
Anonyme