Supprimer les lignes entièrement vides en VBA
Résolu/Fermé
jahawai
Messages postés
223
Date d'inscription
dimanche 23 décembre 2007
Statut
Membre
Dernière intervention
12 mai 2020
-
14 avril 2011 à 10:15
jahawai Messages postés 223 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 12 mai 2020 - 14 avril 2011 à 11:22
jahawai Messages postés 223 Date d'inscription dimanche 23 décembre 2007 Statut Membre Dernière intervention 12 mai 2020 - 14 avril 2011 à 11:22
A voir également:
- Vba supprimer ligne vide
- Supprimer une page word - Guide
- Supprimer compte instagram - Guide
- Aller à la ligne excel - Guide
- Hors ligne instagram - Guide
- Vente en ligne particulier - Guide
2 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
Modifié par pijaku le 14/04/2011 à 10:38
Modifié par pijaku le 14/04/2011 à 10:38
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
jahawai
Messages postés
223
Date d'inscription
dimanche 23 décembre 2007
Statut
Membre
Dernière intervention
12 mai 2020
11
14 avril 2011 à 11:04
14 avril 2011 à 11:04
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
Modifié par pijaku le 14/04/2011 à 11:11
Modifié par pijaku le 14/04/2011 à 11:11
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
jahawai
Messages postés
223
Date d'inscription
dimanche 23 décembre 2007
Statut
Membre
Dernière intervention
12 mai 2020
11
14 avril 2011 à 11:22
14 avril 2011 à 11:22
C'est ce qu'il me fallait, exactement !
Merci Pijaku !
Merci Pijaku !