Supprimer une ligne si cellule vide dans n'importe quelle colonne

chris34

XLDnaute Junior
Bonjour à tous

Je cherche depuis un petit moment comment supprimer une ligne complète dans un tableau lorsque qu'une cellule est vide.

Au cours de mes recherches sur le forum, j'ai bien trouvé plusieurs posts parlant du sujet et c'est OK ça marche. Mais tout ce que j'ai pu trouver concerne une suppression de ligne en fonction d'une cellule vide se trouvant toujours dans la même colonne.

Ici ce que j'aimerais savoir, c'est comment faire pour supprimer cette (ou ces) ligne(s) mais quel que soit l'emplacement de la cellule vide dans le tableau.

Pour plus de sûreté, je vous joins un petit fichier plus explicite.

Merci.
 

Pièces jointes

  • suppLigneCellVide.xlsx
    11.1 KB · Affichages: 38

Pierrot93

XLDnaute Barbatruc
Re : Supprimer une ligne si cellule vide dans n'importe quelle colonne

Bonjour,

peut être avec ceci :
Code:
Option Explicit
Sub test()
On Error Resume Next
Range("A1:H21").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
On Error GoTo 0
End Sub

bonne journée
@+
 

Pierrot93

XLDnaute Barbatruc
Re : Supprimer une ligne si cellule vide dans n'importe quelle colonne

Re,

pour la 2ème question...
Code:
Range("A2:A" & Range("A65536").End(xlUp).Row).FormulaR1C1 = "=ROW(RC)-1"

mais bon... comme dans ton fichier la ligne 1 est suprimée, pas sur que ce soit le résultat attendu
 

chris34

XLDnaute Junior
Re : Supprimer une ligne si cellule vide dans n'importe quelle colonne

Bonjour Pierrot93

Et bien voilà le temps de manger une mandarine et la réponse est là.

Et bien oui ça marche !

Question subsidiaire : Dans le code je vois bien que la recherche est ciblée sur la plage A1:H21, j'en déduis donc que si j'agrandis ce tableau il faudra que j'adapte cette plage en fonction du nombre de colonne/ligne ajoutées.

Mais sur des tableaux pouvant être de différentes tailles aussi bien en nombre de lignes que de colonnes, existe-t-il un code pouvant s'adapter automatiquement à ces différentes grandeurs.

Pour la question 2, oublions la, elle est inutile car je n'y pensais plus mais celle-ci est réalisable en un rien de temps.
 

Pierrot93

XLDnaute Barbatruc
Re : Supprimer une ligne si cellule vide dans n'importe quelle colonne

Re,

modifie comme suit :
Code:
Option Explicit
Sub test()
On Error Resume Next
Range("A1").Resize(Cells(Rows.Count, 1).End(xlUp).Row, Cells(1, Columns.Count).End(xlToLeft).Column).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
On Error GoTo 0
Range("A2", Range("A65536").End(xlUp)).FormulaR1C1 = "=ROW(RC)-1"
End Sub

la 2ème question est comprise dedans.... voir post #3
 

chris34

XLDnaute Junior
Re : Supprimer une ligne si cellule vide dans n'importe quelle colonne

Et bien Pierrot93, TOUT est nickel-chrome.

Je rencontrais juste un petit souci avec renumérotation. En fait je n'avais pas fait attention avec la cellule A1 qui était vide.

Merci pour le coup de main et ce dernier code qui devrait bien me servir pour faire du nettoyage.

Bonne journée.

Réponse un peu longue à venir car lors de chaque post j'essaie un truc nouveau pour m'habituer au forum. Today insertion d'une image.

pouce.jpg
 

Isab

XLDnaute Occasionnel
Re : Supprimer une ligne si cellule vide dans n'importe quelle colonne

Bonjour Chris , Peierrot, le forum

Une autre solution :

Dans un module:
Code:
Function EstVide(Rng As Range) As Boolean
EstVide = Application.WorksheetFunction.CountA(Rng) < Rng.Count
End Function
Sub RazLg()
For i = [A65000].End(xlUp).Row To 2 Step -1
  If EstVide(Range("A" & i & ":H" & i)) Then Rows(i).Delete
Next i
End Sub

** pour la seconde question tu peux ajouter à la ligne proposée par Pierrot une ligne ou deux pour ne garder que la valeur..

bonne journée
 

Pierrot93

XLDnaute Barbatruc
Re : Supprimer une ligne si cellule vide dans n'importe quelle colonne

Re, bonjour isav,

Je rencontrais juste un petit souci avec renumérotation. En fait je n'avais pas fait attention avec la cellule A1 qui était vide.

peut être se servir de la ligne 1 comme en tête de colonne... sinon vois pas trop comment tu veux gérer la chose...
 

chris34

XLDnaute Junior
Re : Supprimer une ligne si cellule vide dans n'importe quelle colonne

Bonjour Isab

Merci pour ton intervention mais voilà mon niveau en code VBA étant ce qu'il est, je me permets de te poser cette question car du coup tu me mets le doute.

Ton code est-il plus (alors là comment dire ?????) disons sécurisé, plus rapide, plus léger ou autre.

En effet je viens de faire plusieurs essais sur de vieux tableaux que j'ai un peu "massacré" pour voir ce que ça donnait avec le code de Pierrot93 et c'est vraiment impeccable.

Mais bon comme dit le proverbe "Abondance de biens ne nuit pas."

@Pierrot93 J'ai tout simplement rempli la cellule A1 et ça roule.

Merci.
 

Isab

XLDnaute Occasionnel
Re : Supprimer une ligne si cellule vide dans n'importe quelle colonne

Bonjour Isab

....

Mais bon comme dit le proverbe "Abondance de biens ne nuit pas."

.....
Merci.


Voilà tu as tous compris..
----
prends le code de pierrot et range l'autre dans tes archives
sinon pour ta ligne d'entête les deux codes fonctionnent sans avoir à écrire dans la cellule A1..

dans le code de pierrot Range("A1").Resize ......tu mets A2 à la place de A1 ( simplement)

bonne suite
 

eddylle

XLDnaute Nouveau
Re : Supprimer une ligne si cellule vide dans n'importe quelle colonne

Bonjour Chris , Peierrot, le forum

Une autre solution :

Dans un module:
Code:
Function EstVide(Rng As Range) As Boolean
EstVide = Application.WorksheetFunction.CountA(Rng) < Rng.Count
End Function
Sub RazLg()
For i = [A65000].End(xlUp).Row To 2 Step -1
  If EstVide(Range("A" & i & ":H" & i)) Then Rows(i).Delete
Next i
End Sub

** pour la seconde question tu peux ajouter à la ligne proposée par Pierrot une ligne ou deux pour ne garder que la valeur..

bonne journée

Bonjour!

Concernant ce code, que faut-il rajouter pour que la fonction fasse la recherche dans toutes les excel sheets?

Un grand merci d'avance!
 

Pierrot93

XLDnaute Barbatruc
Re : Supprimer une ligne si cellule vide dans n'importe quelle colonne

Bonjour,

essaye en modifiant comme suit :
Code:
Function EstVide(Rng As Range) As Boolean
 EstVide = Application.WorksheetFunction.CountA(Rng) < Rng.Count
End Function
Sub RazLg()
Dim ws As Worksheet
For Each ws In Worksheets
 For i = .[A65000].End(xlUp).Row To 2 Step -1
   If EstVide(.Range("A" & i & ":H" & i)) Then .Rows(i).Delete
 Next i
Next ws
End Sub
bon après midi
@+
 

Pierrot93

XLDnaute Barbatruc
Re : Supprimer une ligne si cellule vide dans n'importe quelle colonne

Re,

AArf, autant pour moi.... il manque un "with" :
Code:
Function EstVide(Rng As Range) As Boolean
 EstVide = Application.WorksheetFunction.CountA(Rng) < Rng.Count
End Function
Sub RazLg()
Dim ws As Worksheet
For Each ws In Worksheets
    With ws
        For i = .Range("A65000").End(xlUp).Row To 2 Step -1
          If EstVide(.Range("A" & i & ":H" & i)) Then .Rows(i).Delete
        Next i
    End With
Next ws
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz