[VBA] Suppression ligne cellule vide plage ! [Résolu/Fermé]

Detsou 4 Messages postés jeudi 28 juillet 2011Date d'inscription 29 juillet 2011 Dernière intervention - 28 juil. 2011 à 14:53 - Dernière réponse : melanie1324 1508 Messages postés vendredi 25 mai 2007Date d'inscription 5 octobre 2016 Dernière intervention
- 29 juil. 2011 à 09:50
Bonjour,

Tout d'abord, désolé pour le titre pas très compréhensif, je n'avais pas la place nécessaire. Le titre devrait plutôt se nommer ainsi : Supprimer les lignes où se trouve des cellules non-vides, sur une plage prédéfinie.

Voici ce que j'ai pour l'instant :

Sub Macro8() 
' 
' Macro8 Macro 
' Macro enregistrée le 28/07/2011 par f207636 
' 
i = ActiveSheet.Cells(65535, 22).End(xlUp).Row 
For k = i To 4 Step -1 
j = ActiveSheet.Cells(20, 100).End(xlToLeft).Column 
For h = j To 20 Step -1 
If InStr(1, ActiveSheet.Cells(k, h), "1", 1) > 0 Then Rows(k).Delete 
Next 
Next 
End Sub


Pour l'instant, il me supprime seulement les lignes où il trouve un "1" et je voudrais qu'il supprime pour tout nombre >0.

Merci pour votre aide.

EDIT : Au final j'ai trouvé par moi-même. J'ai créé une autre macro permettant de créer une autre colonne avec la fonction NB.SI qui permettait de mettre un 1 ou un 0, au cas où il y avait des nombres >0, et ça me permettait d'avoir une macro plus simple :

Sub Macro3()

    For i = Cells(1, 1).CurrentRegion.Rows.Count To 1 Step -1
    If Cells(i, 256).Value > 0 Then Cells(i, 1).EntireRow.Delete
    Next

End Sub


Donc voilà, merci quand même !
Afficher la suite 

1 réponse

melanie1324 1508 Messages postés vendredi 25 mai 2007Date d'inscription 5 octobre 2016 Dernière intervention - 29 juil. 2011 à 09:50
0
Utile
bonjour,

voici ta solution :

Sub SelectionEtConcatenation()

Dim Plage As Range, Cel As Range


Set Plage =range(cells(1,1),cells(4,100)) 'la macro agira de la cellule de la ligne 1 colonne 1 à la cellule de la ligne 4 à la colonne 100

For Each Cel In Plage 'pour chacune des cellules comprises dans cette plage


If Cel.Value >= 1 Then 'si la valeur de la cellule est >= à 1
Rows(Cel).Delete Shift:=xlUp 'la ligne d ela cellule est supprimée.

End If
Next

End Sub