Supprimer les lignes vides mais pas les sauts de page

C@thy

XLDnaute Barbatruc
Bonjour,

cette macro supprime les lignes vides, mais les sauts de page aussi :mad:

Code:
Public Sub SupprimerLignesVides()
Dim para As Paragraph
Dim i As Integer
Dim y As Integer
 
i = 0
For Each para In ActiveDocument.Paragraphs
    i = i + 1
    para.Range.Select
    y = Len(Selection.Words(1))
    If y = 1 Then Selection.Delete
Next para
End Sub

Cette macro ne supprime pas les paragraphes vides isolés

Code:
Public Sub SupprimerParagraphesVides()
Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "^013{2;}"
        .Replacement.Text = "^p"
        .Forward = True
        .Wrap = wdFindContinue
        .MatchWildcards = True
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub

Avez-vous une soluce???

Merci

C@thy
 

chris

XLDnaute Barbatruc
Re : Supprimer les lignes vides mais pas les sauts de page

Re

J'avais pas vu (pas l'habitude des expressions régulières)

Une piste car en regardant Dico, j'ai déduis, peut-être à tort, qu'il s'agit des fin de paragraphes qui suivent les tableaux.

Si c'est le cas
Code:
Sub Macro2()

Selection.HomeKey Unit:=wdStory
y = ActiveDocument.Tables.Count

For i = 1 To y
    Selection.GoTo What:=wdGoToTable, Which:=wdGoToNext, Count:=1, Name:=""
    Selection.Tables(1).Select
    Selection.MoveDown Unit:=wdLine, Count:=1
    Selection.EndKey Unit:=wdLine, Extend:=wdExtend
    x = Selection.Characters.Count
    If x = 1 And Selection = Chr(13) Then Selection.Delete
 Next
End Sub
A utiliser après celle qui enlève les doubles.

Sinon précise car je ne vois pas les para isolés.
 

C@thy

XLDnaute Barbatruc
Re : Supprimer les lignes vides mais pas les sauts de page

OK, Chris, tu m'as bien aidée, j'ai peaufiné la chose :

Public Sub SupprimerLignesVides()
Dim para As Paragraph
Dim i As Integer
Dim y As Integer

i = 0
For Each para In ActiveDocument.Paragraphs
i = i + 1
para.Range.Select

y = Len(Selection.Words(1))
If y = 1 And Selection = Chr(13) Then Selection.Delete
If y = 1 And Selection = Chr(12) & Chr(13) Then
Selection.MoveStart Unit:=wdCharacter, Count:=1
Selection.Delete
End If
Next para
End Sub


Un grand MERCI à toi et bonne journée

Bises

C@thy
 
Dernière édition:

chris

XLDnaute Barbatruc
Re : Supprimer les lignes vides mais pas les sauts de page

Bonjour

Décidément je n'ai pas assez regardé tes macros hier et me suis concentrée sur la compréhension du problème ! :rolleyes:

Cela me replonge dans le VBA word (je n'ai pas eu l'occasion d'en faire depuis longtemps et j'en ai fait peu car j'avais surtout développé du Word Basic) : un peu de gym à neurones ne fait pas de mal.

Bonne journée
 

C@thy

XLDnaute Barbatruc
Re : Supprimer les lignes vides mais pas les sauts de page

et voici la version définitive :

Code:
Public Sub SupprimerLignesVides()
Dim para As Paragraph
Dim i As Integer
Dim y As Integer
 
i = 0
For Each para In ActiveDocument.Paragraphs
    i = i + 1
    para.Range.Select
 
    y = Len(Selection.Words(1))
    If y = 1 And Selection = Chr(13) Then Selection.Delete
    If y = 1 And Selection = Chr(12) & Chr(13) Then
       Selection.MoveStart Unit:=wdCharacter, Count:=1
       Selection.Delete
    End If
     If y = 1 And Selection = Chr(13) & Chr(12) Then
       Selection.MoveEnd Unit:=wdCharacter, Count:=1
       Selection.Delete
     End If
 
 
Next para
End Sub

Et là, ça fait tout ce que je veux

Un grand Merci à toi

Bises

C@thy
 

C@thy

XLDnaute Barbatruc
Re : Supprimer les lignes vides mais pas les sauts de page

Arf! Je vais mettre un ElseIf ça fera plus joli!:p

If y = 1 Then
If Selection = Chr(12) & Chr(13) Then
Selection.MoveStart Unit:=wdCharacter, Count:=1
ElseIf Selection = Chr(13) & Chr(12) Then
Selection.MoveEnd Unit:=wdCharacter, Count:=1
End If
Selection.Delete
End If

Bonne journée

C@thy
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 294
Messages
2 086 899
Membres
103 404
dernier inscrit
sultan87