Supprimer plusieurs lignes avec condition depuis un bouton

Résolu
niksi56 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   -
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

A voir également:

4 réponses

chossette9 Messages postés 4239 Date d'inscription   Statut Contributeur Dernière intervention   1 311
 
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.
0
exel2003 Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   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
0
niksi56 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
chossette9 Messages postés 4239 Date d'inscription   Statut Contributeur Dernière intervention   1 311
 
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.
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 313
 
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
0