Supprimer plusieurs lignes avec condition depuis un bouton [Résolu/Fermé]

Signaler
Messages postés
2
Date d'inscription
jeudi 7 février 2013
Statut
Membre
Dernière intervention
7 février 2013
-
Messages postés
16450
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
12 mai 2021
-
Bonjour,

J'ai un tableau d'environ 400 lignes et je voudrais supprimer toutes les lignes dont la case en colonne N est vide.

Je voudrais faire cela depuis un bouton situé sur ma page Excel.

Pour l'instant j'ai tester ça mais sa ne marche pas :

i = 1
Sheets("test300").Select
While Not Range("N" & i & "").Value = 0
Rows(ligne).Delete
i = i + 1
Wend

J'ai également testé ça :

If Cells(ligne, N).Text() = "" Then
Rows(ligne).Delete
ligne = ligne - 1
End If

Je débute sur les macros.

Merci de votre aide

4 réponses

Messages postés
4239
Date d'inscription
lundi 20 avril 2009
Statut
Contributeur
Dernière intervention
12 septembre 2014
1 316
bonjour,

le principe de base dans la suppression de ligne par macro est de commencer par la dernière ligne, et remonter à la première, afin de ne pas laisser de lignes en route.

Voici une macro qui devrait fonctionner :

Sub SupprLignes()
dim derligne As Integer
dim numligne As Integer

derligne = Sheets("test300").Cells(Rows.Count, 14).End(xlUp).Row

For numligne = derligne To 2 Step - 1
      If IsEmpty(Cells(numligne, 14)) Then
            Rows(numligne).Select
            Selection.entireRow.Delete
      End If

Next 
End sub

Cordialement.
Messages postés
57
Date d'inscription
vendredi 1 février 2013
Statut
Membre
Dernière intervention
8 avril 2013
1
salut
je t'ai fait une macro basique à adapter ligne par ligne
attention si tu a fusionné des lignes il masquera les deux

Sub masque()

'Masque les lignes 1 si la case N1 est égal à zéro
If Range("N1") = "0" Then
Rows("1").Select
Selection.EntireRow.Hidden = True
End If

'Affiche les lignes 1 si la case N1 n'est pas égal à zéro
If Range("N1") > "0" Then
Rows("1").Select
Selection.EntireRow.Hidden = False
End If

voila en espérant que cela t'ira bonne journée a toi
Messages postés
2
Date d'inscription
jeudi 7 février 2013
Statut
Membre
Dernière intervention
7 février 2013

Bonjour

Je viens de modifier un petit peux ma demande, j'ai trouver une solution pour remplacer les cellules vide pas un 0, et j'ai donc trouver une macro qui marche presque bien.

Dim rcel As Range
Range("N2").Select
Selection.CurrentRegion.Select
For Each rcel In Selection
If rcel.Text = 0 Then
rcel.EntireRow.Delete
End If
Next rcel

Le seul soucis c'est que si la ligne 3 est vide, elle est bien supprimée, et donc la ligne 4 devient 3, donc celle-ci ne passe pas dans ma macro et ne peux donc pas être supprimé.

Merci
Messages postés
4239
Date d'inscription
lundi 20 avril 2009
Statut
Contributeur
Dernière intervention
12 septembre 2014
1 316
D'où ce que je disais plus haut : une suppression de ligne dans Excel se fait de bas en haut (et non de haut en bas) pour ne pas oublier de lignes lors de la suppression.
Messages postés
16450
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
12 mai 2021
3 172
Bonjour,

Peut-^tre + simple

Sub Supprimer_si_vide() 
    Dim Ligne As Long 
    On Error Resume Next 
   With ActiveSheet 
     Ligne = .UsedRange.Rows.Count 
     .Range("N1:N" & Ligne).SpecialCells(xlCellTypeBlanks).EntireRow.Delete 
    End With 
End Sub


https://excel.developpez.com/faq/?page=Feuille#SupprimeCellLigneVide

Michel