Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Améliorer vitesse suppression lignes vides ?

3 réponses
Avatar
Hubert
Bonjour à tous,

Voilà j'ai 15000 lignes dans un onglet excel.
Après tri, il ne me reste un nombre indéterminé à l'avance (disons 4200
lignes pour l'exemple).
Je souhaiterai qu'excel me supprime les lignes vides de 4201 à 15000.

J'ai déjà essayé cette macro mais cela prends vraiment trop de temps étant
donné que j'ai de nombreux onglets (nb:je n'ai pas besoin de tester si les
lignes après 4201 sont vides puisque je suis sûr qu'elles le sont dejà)!

---
Sub supp_lignes()
'
' supp_lignes Macro
'

'détermine le numéro de la dernière ligne utilisée
dernLigne = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Count - 1

'désactive la mise à jour de l'écran afin d'accélérer les traitements
Application.ScreenUpdating = False

'Pour toutes les lignes en partant de la dernière
For I = dernLigne To 1 Step -1

'La fonction Excel CountA correspond à =NBVAL
If Application.WorksheetFunction.CountA(Rows(I)) = 0 Then
Rows(I).Delete Shift:=xlUp
End If
Next I
End Sub
---

Merci d'avance,
Hubert

3 réponses

Avatar
Hervé
Salut Hubert,
Et avec ceci ?

Sub SuppressionLignes()
[4201:15000].Delete
End Sub

Hervé

"Hubert" <hubertnospam> a écrit dans le message de news:
44ba24c1$0$17432$
Bonjour à tous,

Voilà j'ai 15000 lignes dans un onglet excel.
Après tri, il ne me reste un nombre indéterminé à l'avance (disons 4200
lignes pour l'exemple).
Je souhaiterai qu'excel me supprime les lignes vides de 4201 à 15000.

J'ai déjà essayé cette macro mais cela prends vraiment trop de temps étant
donné que j'ai de nombreux onglets (nb:je n'ai pas besoin de tester si les
lignes après 4201 sont vides puisque je suis sûr qu'elles le sont dejà)!

---
Sub supp_lignes()
'
' supp_lignes Macro
'

'détermine le numéro de la dernière ligne utilisée
dernLigne = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Count - 1

'désactive la mise à jour de l'écran afin d'accélérer les traitements
Application.ScreenUpdating = False

'Pour toutes les lignes en partant de la dernière
For I = dernLigne To 1 Step -1

'La fonction Excel CountA correspond à =NBVAL
If Application.WorksheetFunction.CountA(Rows(I)) = 0 Then
Rows(I).Delete Shift:=xlUp
End If
Next I
End Sub
---

Merci d'avance,
Hubert



Avatar
JB
Si le test se fait sur les cellules vides de la colonne A:

Range("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete

JB


Bonjour à tous,

Voilà j'ai 15000 lignes dans un onglet excel.
Après tri, il ne me reste un nombre indéterminé à l'avance (dison s 4200
lignes pour l'exemple).
Je souhaiterai qu'excel me supprime les lignes vides de 4201 à 15000.

J'ai déjà essayé cette macro mais cela prends vraiment trop de temp s étant
donné que j'ai de nombreux onglets (nb:je n'ai pas besoin de tester si les
lignes après 4201 sont vides puisque je suis sûr qu'elles le sont dej à)!

---
Sub supp_lignes()
'
' supp_lignes Macro
'

'détermine le numéro de la dernière ligne utilisée
dernLigne = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Count - 1

'désactive la mise à jour de l'écran afin d'accélérer les trait ements
Application.ScreenUpdating = False

'Pour toutes les lignes en partant de la dernière
For I = dernLigne To 1 Step -1

'La fonction Excel CountA correspond à =NBVAL
If Application.WorksheetFunction.CountA(Rows(I)) = 0 Then
Rows(I).Delete Shift:=xlUp
End If
Next I
End Sub
---

Merci d'avance,
Hubert


Avatar
Hubert
Merci beaucoup JB. Cela marche à merveille. ;-))

Hubert

Si le test se fait sur les cellules vides de la colonne A:
Range("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
JB



Bonjour à tous,

Voilà j'ai 15000 lignes dans un onglet excel.
Après tri, il ne me reste un nombre indéterminé à l'avance (disons 4200
lignes pour l'exemple).
Je souhaiterai qu'excel me supprime les lignes vides de 4201 à 15000.

J'ai déjà essayé cette macro mais cela prends vraiment trop de temps étant
donné que j'ai de nombreux onglets (nb:je n'ai pas besoin de tester si les
lignes après 4201 sont vides puisque je suis sûr qu'elles le sont dejà)!

---
Sub supp_lignes()
'
' supp_lignes Macro
'

'détermine le numéro de la dernière ligne utilisée
dernLigne = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Count - 1

'désactive la mise à jour de l'écran afin d'accélérer les traitements
Application.ScreenUpdating = False

'Pour toutes les lignes en partant de la dernière
For I = dernLigne To 1 Step -1

'La fonction Excel CountA correspond à =NBVAL
If Application.WorksheetFunction.CountA(Rows(I)) = 0 Then
Rows(I).Delete Shift:=xlUp
End If
Next I
End Sub
---

Merci d'avance,
Hubert