XL 2016 Supprimer les lignes relatives aux cellules vides d'une plage de donnée spécifique

adnaneramzi2020

XLDnaute Nouveau
Hello le forum,

Je suis novice en VBA. Je cherche une macro pour automatiser un truc assez simple.

J'ai une plage de données contenant 3 colonnes (A, B, C).

Je veux exécuter un code qui va me permettre de supprimer les lignes relatives au cellules vides de la plage ("A2:A") & lastrow (De A2 Jusqu'à la dernière ligne de la colonne A) vu que ma plage peut contenir un nombre de ligne variable.

Je vous remercie d'avance pour votre aide et votre contribution ^^
 

Mwadepaname

XLDnaute Junior
Hello,

je suis novice aussi donc il y a peut être mieux mais chez moi ça a fonctionné ;)


Sub masquer_ligne_Vide()
Dim cel As Range
Range("A2:A" & [A65000].End(xlUp).Row).Select
For Each cel In Selection
If cel = Empty Then
cel.EntireRow.Hidden = True
End If
Next
End Sub
 

adnaneramzi2020

XLDnaute Nouveau
Bonjour Mwad,

Merci pour ta contribution.

J'ai essayé ta proposition mais elle marche que si toute la ligne est vide et non pas que les cellules de la colonne A.

Bonne journée.




Hello,

je suis novice aussi donc il y a peut être mieux mais chez moi ça a fonctionné ;)


Sub masquer_ligne_Vide()
Dim cel As Range
Range("A2:A" & [A65000].End(xlUp).Row).Select
For Each cel In Selection
If cel = Empty Then
cel.EntireRow.Hidden = True
End If
Next
End Sub
 

adnaneramzi2020

XLDnaute Nouveau
Bonsoir,

Je te remercie job75 pour cette proposition.

La proposition marche que si toute la ligne est vide et non pas que si les cellules appartenant à la colonne A sont vides :

Exemple plus concret :
A3(Vide) B3 (Vide) C3 (Vide) = ça marche
A3 (Vide) B3 (Valeur) C3 (Valeur) = ne marche pas


Bonne journée.

Bonsoir adnan, Mwad,

Puisque vous avez dit supprimer :
VB:
Sub sup()
On Error Resume Next 'si aucune SpecialCell
[A:A].SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
A+
 

adnaneramzi2020

XLDnaute Nouveau
Bien sûr la solution ne fait que masquer la ligne vide ça ne la supprime pas.

Merci Mwade (y)

Hello,

je suis novice aussi donc il y a peut être mieux mais chez moi ça a fonctionné ;)


Sub masquer_ligne_Vide()
Dim cel As Range
Range("A2:A" & [A65000].End(xlUp).Row).Select
For Each cel In Selection
If cel = Empty Then
cel.EntireRow.Hidden = True
End If
Next
End Sub
 

adnaneramzi2020

XLDnaute Nouveau
Je tiens à vous remercier JOB75 pour votre contribution. Je l'ai testé dans d'autres cas similaires ça marche parfaitement. Donc effectivement c'est une solution au problème mentionné.
Mais dans mon tableau j'ai surement un souci ça me supprime pas la ligne relative à une cellule A2 vide en particulier. Je n'arrive toujours pas à cerner le problème.

Bonne journée !
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous :),

Une version qui tient compte du fameux texte vide "" (moins de 0.6 sec. pour 35.000 lignes à supprimer sur 100.000 lignes sur ma bécane). Le code est dans Module1.
VB:
Sub HOP()
Dim n&, fin As Range, deb
   deb = Timer
   Application.ScreenUpdating = False
   Application.ScreenUpdating = False: Application.DisplayAlerts = False
   If Range("a1") = "àSuppr" Then Rows(1).Delete: Columns(1).Delete
   n = Cells(Rows.Count, "a").End(xlUp).Row
   Columns(1).Insert: Rows(1).Insert: Range("a1") = "àSuppr"
   With Range("a2").Resize(n)
      .FormulaR1C1 = "=IF(LEN(RC[1]),1,0)"
      .Value = .Value
      .Resize(, 4).Sort Columns(1), xlAscending, Header:=xlNo
      On Error Resume Next
      Set fin = Columns(1).Find(1)
      If fin.Row > 2 Then Range(Range("a2"), fin.Offset(-1)).EntireRow.Delete
      Rows(1).Delete: Columns(1).Delete
      Application.DisplayAlerts = True
   End With
   If Range("a1") = "àSuppr" Then Rows(1).Delete: Columns(1).Delete
   Application.DisplayAlerts = True
   MsgBox Format(Timer - deb, "0.00\ sec.")
End Sub
 

Pièces jointes

  • adnaneramzi2020- suppr lignes- v1.xlsm
    20.6 KB · Affichages: 7

Discussions similaires