XL 2013 Supprimer plusieurs lignes vides dans une cellules

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 !

Solution
Re,

Pour cela, on a fait une procédure qui prend en paramètre la plage sur laquelle on veut faire les remplacements:
Sub SupprimerDoubleRetour(plage As Range)
  • La procédure s'appelle SupprimerDoubleRetour
  • Le paramètre est la plage concernée

Tous les codes sont dans module1:
VB:
Sub Demo()

   ' pour une cellule, B2 en l'occurence
   MsgBox "Pour la cellule B2"
   SupprimerDoubleRetour Sheets("Feuil1").Range("b2")
  
   ' pour la première colonne du tableau structuré qui contient la celulle A1
   MsgBox "Pour la colonne 1 du tableau structuré"
   SupprimerDoubleRetour Sheets("Feuil1").Range("a1").ListObject.DataBodyRange.Columns(1)
  
   ' pour la Feuiille entière
   MsgBox "Pour l'ensemble de la feuille"...
Bonjour YouGuyBass

Pour moi c'est un peu plus compliqué qu'une simple ligne de code 🤔

A mettre dans un module, pas besoin que ce soit dans la feuille
VB:
Sub SupLigneVide()
  Dim dLig As Long, Lig As Long
  Dim Ind As Integer, TabCel, sTmp As String
  With ActiveSheet
   ' Dernière ligne remplie de la colonne
    dLig = .Range("A" & Rows.Count).End(xlUp).Row
    ' Pour chaque ligne
    For Lig = 1 To dLig
      sTmp = ""
      ' Si la cellule n'est pas vide
      If .Range("A" & Lig) <> "" Then
        ' Eclater le contenu dans un tableau en prenant en compte les retours à la ligne
        TabCel = Split(.Range("A" & Lig), vbLf)
        ' Pour chaque indice du tableau
        For Ind = 0 To UBound(TabCel)
         ' Vérifier qu'il contient bien une valeur
          If TabCel(Ind) <> "" Then
            sTmp = sTmp & TabCel(Ind) & vbLf
          End If
        Next Ind
        ' Retranscrire le résultat en supprimant le VbLf de fin
        sTmp = Left(sTmp, Len(sTmp) - 1)
        .Range("B" & Lig).Value = sTmp
      End If
    Next Lig
  End With
End Sub

A+
 
Bonjour @youguybass 🙂,

Essayez:
VB:
Sub Demo()
Dim x, a
   Application.ScreenUpdating = False
   With Sheets("Feuil1")
      For Each x In .UsedRange.Cells
         If Not x.HasFormula Then
            a = x.Value
            Do While InStr(a, Chr(10) & Chr(10)) > 0: a = Replace(a, Chr(10) & Chr(10), Chr(10)): Loop
            x.Value = a
         End If
      Next x
   End With
End Sub

edit : bonjour @BrunoM45 🙂
 
Dernière édition:
Re,

Pour cela, on a fait une procédure qui prend en paramètre la plage sur laquelle on veut faire les remplacements:
Sub SupprimerDoubleRetour(plage As Range)
  • La procédure s'appelle SupprimerDoubleRetour
  • Le paramètre est la plage concernée

Tous les codes sont dans module1:
VB:
Sub Demo()

   ' pour une cellule, B2 en l'occurence
   MsgBox "Pour la cellule B2"
   SupprimerDoubleRetour Sheets("Feuil1").Range("b2")
  
   ' pour la première colonne du tableau structuré qui contient la celulle A1
   MsgBox "Pour la colonne 1 du tableau structuré"
   SupprimerDoubleRetour Sheets("Feuil1").Range("a1").ListObject.DataBodyRange.Columns(1)
  
   ' pour la Feuiille entière
   MsgBox "Pour l'ensemble de la feuille"
   SupprimerDoubleRetour Sheets("Feuil1").UsedRange

End Sub

Sub SupprimerDoubleRetour(plage As Range)
Dim x, a
   Application.ScreenUpdating = False
   For Each x In plage.Cells
      If Not x.HasFormula Then
         a = x.Value
         Do While InStr(a, Chr(10) & Chr(10)) > 0: a = Replace(a, Chr(10) & Chr(10), Chr(10)): Loop
         x.Value = a
      End If
   Next x
End Sub
 

Pièces jointes

- 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

Réponses
9
Affichages
335
Réponses
3
Affichages
241
  • Question Question
Microsoft 365 TCD
Réponses
6
Affichages
217
Retour