Supprimer les lignes entièrement vides en VBA
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
J'ai un petit soucis pour supprimer les lignes vides d'un fichier, par une macro.
En fait j'arrive bien à supprimer les lignes lorsque la première cellule est vide par exemple, mais ce n'est pas ce que je veux faire, il faut que toute la ligne soit vide.
J'ai pensé à faire quelque-chose du genre :
For i = 1 to 100
Si Cells(i,1)=" & cells(i,2)=" & etc....
Supprime la ligne...
Le problème c'est que je ne sais pas comment écrire cette multiple condition...
j'ai pensé aussi à tester la somme des valeurs de la ligne, si elle est nulle, je supprime
Nouveau problème : ce n'est pas un tableau uniquement numérique, je peux avoir de tout dedans...
Avez-vous une idée ?
Merci !
J'ai un petit soucis pour supprimer les lignes vides d'un fichier, par une macro.
En fait j'arrive bien à supprimer les lignes lorsque la première cellule est vide par exemple, mais ce n'est pas ce que je veux faire, il faut que toute la ligne soit vide.
J'ai pensé à faire quelque-chose du genre :
For i = 1 to 100
Si Cells(i,1)=" & cells(i,2)=" & etc....
Supprime la ligne...
Le problème c'est que je ne sais pas comment écrire cette multiple condition...
j'ai pensé aussi à tester la somme des valeurs de la ligne, si elle est nulle, je supprime
Nouveau problème : ce n'est pas un tableau uniquement numérique, je peux avoir de tout dedans...
Avez-vous une idée ?
Merci !
A voir également:
- Supprimer les lignes vides excel vba
- Supprimer rond bleu whatsapp - Guide
- Liste déroulante excel - Guide
- Comment supprimer les pages vides sur word - Guide
- Word et excel gratuit - Guide
- Supprimer pub youtube - Accueil - Streaming
2 réponses
Bonjour,
Oui une idée serait de calculer, par VBA, le NBVAL de ta ligne. S'il est égal à 0 cela veux donc dire que ta ligne est vide entièrement.
NBVAL en VBA se "traduit" par :Application.WorksheetFunction.CountA
Ta macro deviendrait donc :
!!! Attention ce code contient un .Delete!!! A tester sur une copie de votre fichier
--
Franck P
Oui une idée serait de calculer, par VBA, le NBVAL de ta ligne. S'il est égal à 0 cela veux donc dire que ta ligne est vide entièrement.
NBVAL en VBA se "traduit" par :Application.WorksheetFunction.CountA
Ta macro deviendrait donc :
!!! Attention ce code contient un .Delete!!! A tester sur une copie de votre fichier
Sub test()
Dim NombreVal As Integer, Lig As Integer
For Lig = 1 To 10
NombreVal = Application.WorksheetFunction.CountA(Rows(Lig))
If NombreVal = 0 Then
Rows(Lig).EntireRow.Delete
End If
Next
End Sub
--
Franck P
Merci bien, je l'ai testé et ça semble fonctionner.
Par contre, si je souhaite supprimer les lignes sur une feuille particulière, est-ce que je dois-je écrire quelque-chose comme :
Par contre, si je souhaite supprimer les lignes sur une feuille particulière, est-ce que je dois-je écrire quelque-chose comme :
Sub test()
Dim NombreVal As Integer, Lig As Integer
For Lig = 1 To 10
NombreVal = Sheets("Feuil3").Application.WorksheetFunction.CountA(Rows(Lig))
If NombreVal = 0 Then
Sheets("Feuil3").Rows(Lig).EntireRow.Delete
End If
Next
End Sub
Sans tester, j'aurais plutôt écrit :
Mais attention j'oubliais un détail...
Lorsque l'on Delete, il faut faire une boucle à "l'envers" :
Sub test()
Dim NombreVal As Integer, Lig As Integer
With Sheets("Feuil3")
For Lig = 1 To 10
NombreVal = .Application.WorksheetFunction.CountA(Sheets("Feuil3").Rows(Lig))
If NombreVal = 0 Then
.Rows(Lig).EntireRow.Delete
End If
Next
End With
End Sub
Mais attention j'oubliais un détail...
Lorsque l'on Delete, il faut faire une boucle à "l'envers" :
Sub test()
Dim NombreVal As Integer, Lig As Integer
With Sheets("Feuil3")
For Lig = 10 To 1 Step -1
NombreVal = .Application.WorksheetFunction.CountA(Sheets("Feuil3").Rows(Lig))
If NombreVal = 0 Then
.Rows(Lig).EntireRow.Delete
End If
Next
End With
End Sub