Supprimer plusieurs lignes avec condition depuis un bouton

Résolu
niksi56 Messages postés 2 Statut Membre -  
michel_m Messages postés 18903 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

4 réponses

  1. chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   1 313
     
    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
  2. exel2003 Messages postés 62 Statut Membre 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
  3. niksi56 Messages postés 2 Statut Membre
     
    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
    1. chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   1 313
       
      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
  4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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