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 !
Bonjour
Je voudrais une solutions pour supprimer l'ensemble des lignes vides contenues dans une cellule
Le code que j'ai trouvé ne supprime qu'une seule ligne et non toutes d'un coup
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"...
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 AsLong, Lig AsLongDim Ind AsInteger, TabCel, sTmp AsStringWith ActiveSheet
' Dernière ligne remplie de la colonne
dLig =.Range("A"& Rows.Count).End(xlUp).Row
' Pour chaque ligneFor Lig =1To dLig
sTmp =""' Si la cellule n'est pas videIf.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 tableauFor Ind =0To UBound(TabCel)' Vérifier qu'il contient bien une valeurIf TabCel(Ind)<>""Then
sTmp = sTmp & TabCel(Ind)& vbLf
EndIfNext Ind
' Retranscrire le résultat en supprimant le VbLf de fin
sTmp = Left(sTmp, Len(sTmp)-1).Range("B"& Lig).Value = sTmp
EndIfNext Lig
EndWithEndSub
Sub Demo()Dim x, a
Application.ScreenUpdating =FalseWith Sheets("Feuil1")ForEach x In.UsedRange.Cells
IfNot x.HasFormula Then
a = x.Value
DoWhile InStr(a, Chr(10)& Chr(10))>0: a = Replace(a, Chr(10)& Chr(10), Chr(10)):Loop
x.Value = a
EndIfNext x
EndWithEndSub
Merci Mapomme
Le code marche parfaitement bien sur la feuille complète, par contre je souhaiterais le faire uniquement sur la 1° colonne de mon tableau, et une autre alternative si possible bien évidement sur une cellule "A2"
C'est pour avoir plusieurs exemples en bibliothèque !
Un code qui ferait la feuille entière, l'autre qui ferait une colonne d'un tableau et un dernier qui le ferai sur une cellule
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
EndSubSub SupprimerDoubleRetour(plage As Range)Dim x, a
Application.ScreenUpdating =FalseForEach x In plage.Cells
IfNot x.HasFormula Then
a = x.Value
DoWhile InStr(a, Chr(10)& Chr(10))>0: a = Replace(a, Chr(10)& Chr(10), Chr(10)):Loop
x.Value = a
EndIfNext x
EndSub
- 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