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

  • Initiateur de la discussion Initiateur de la discussion C@thy
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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.
 
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:
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
 
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
 
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:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

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