Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
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 à tous;
j'ai une page excel, qui contient des données, mais il y a beaucoup de lignes vides entre les lignes où il y a des infos, y a pas un moyen, une fonction ou une macro qui m'effazcerai ces lignes vides???
Sub supprimelignesvides()
Dim i As Long
For i = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
If Application.CountA(Rows(i)) = 0 Then Rows(i).Delete
Next i
End Sub
Merci c'est exactement ce que je voulais,
cependant une petite remarque, la fonction de Sergion est super rapide par rapport à celle de Hervé, mais elle marchent toutes les deux.
Sub Supprimer_les_lignes_vides()
Dim Ws As Worksheet, dl As Long
'Boucle sur toutes les feuille de calcul du classeur. Les onglets graphiques ne sont pas pris en compte.
'ThisWorkbook correspond à l'objet classeur contenant la macro
For Each Ws In ThisWorkbook.Worksheets
With Ws
On Error Resume Next 'ignore erreur au cas où il n'y a pas de cellule vide
dl = .UsedRange.Rows.Count 'derniere ligne non vide
.Range("A1:A" & dl).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End With
Next Ws
End Sub
bonjour
beaucoup savent les bizarreries du résultat de la fonction specialcell quelque fois
1° j’adhère donc a celle de Hervé même si elle est plus lourde
2° mais c'est une erreur d'utiliser ActiveSheet.UsedRange.Rows.Count de cette maniere
CAR!!! le usedrange.rows.count va te donner le nombre de ligne UTILISE!!!
et donc si par exemple le usedrange commence en ligne 20 et termine en ligne 30 le calcul usedrange.rows.count va te donner 10
donc for i= 1 to userange.rows.count a l'envers ou a l'endroit va boucler sur les 10 premières lignes c'est ballo!!! on passe a coté 😉
DE MÊME QUE : si le usedrange COMMENCE!!!!! par exemple en ligne 10 et se termine en ligne 30 là encore c'est ballo!! on va scruter la moitié de la plage puisque l'on va arrêter la boucle a 20
il est donc très important de savoir des le départ si l'on veut travailler 1° avec le membre range du sheet (x) ou activesheet
2° avec le usedrange du sheets(x)ou activesheet
j'ai dis plus haut "même si elle est plus lourde"
c'est pas un problème on peut accélérer en collectionnant les ROWS et en supprimant la collection d'un coup !!!
voyons voir 😉
1° comment travailler sur le usedrange à fin de ne pas supprimer les éventuelles lignes précédentes qui n'en font pas partie
VB:
Sub deleteEmptyRowOnUsedrange()
Dim i As Long, p As Range
With ActiveSheet.UsedRange
For i = 1 To .Rows.Count
If Application.CountA(.Rows(i)) = 0 Then
If p Is Nothing Then Set p = .Rows(i) Else Set p = Union(p, .Rows(i))
End If
Next i
End With
p.Delete
End Sub
2°comment travailler sur le range de la même manière
VB:
Sub deleteEmptyRowOnsheet()
Dim i As Long, p As Range
With ActiveSheet
For i = 1 To .UsedRange.Cells(.UsedRange.Cells.Count).Row
If Application.CountA(.Rows(i)) = 0 Then
If p Is Nothing Then Set p = .Rows(i) Else Set p = Union(p, .Rows(i))
End If
Next i
End With
p.Delete
End Sub
j'attire votre attention sur le bloc with des deux 😉
Il y a quelques temps, j'avais fait une macro de suppression de lignes conditionnées à une plage de cellules. Si une ligne de cette plage est entièrement vide (la chaine vide est considérée comme vide) alors on supprime la ligne entière de la feuille. La macro était assez rapide.
Les cellules en beige sont les cellules qui contiennent la chaine vide.
Il y a quelques temps, j'avais fait une macro de suppression de lignes conditionnées à une plage de cellules. Si une ligne de cette plage est entièrement vide (la chaine vide est considérée comme vide) alors on supprime la ligne entière de la feuille. La macro était assez rapide.
Les cellules en beige sont les cellules qui contiennent la chaine vide.
J'aimerais réutiliser votre macro sur mon document Excel mais dès que je la copie/colle, cela ne marche pas et ça me met un message d'erreur.
Pouvez-vous m'expliquer comment on peut réutiliser votre macro s'il vous plaît ?
- 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