Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

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
 

C@thy

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

coucou (re)

ben ça je l'ai déjà fait, (c'est ce que fait la 2ème macro que j'ai mise)
c'est pour ceux qui restent tout seuls


Bises

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 !

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!

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…