Programmation d'un macro sous excel

Bonjour, j'ai un problème avec la programmation d'un macro, le voici :

Sub Macro2()

End Sub
Dim I As Long
Dim Plage As Range
Set Plage = Range("M5:M" & Range("M5").End(xlDown).Row)
For I = Plage.Cells.Count To 1 Step -1
If Plage.Cells(I).Value = 0 Then
Plage.Cells(I).EntireRow.Delete
End If
Next

End Sub

L'objectif est d'effacer toutes les lignes dans lesquelles la rangée "M" affiche une valeur de 0, pour l'instant cela fonctionne jusqu'à ce qu'une ligne affiche une valeur différente de 0, alors le macro s'arrête.

Merci
Configuration: Windows XP
Internet Explorer 6.0

5 réponses

  1. svp je vous realiser un programme pour tracer un histogramme et pour le test de henrysous excel
    1. Bonsoir JP,

      J'ai testé ton code, il marche parfaitement.
      Toutefois, essaies le code modifié ci-dessous :

      Sub Macro2()
      Dim I As Long
      Dim Plage As Range
      Set Plage = Range(Cells(5, 13), Cells(ActiveSheet.UsedRange.Rows.Count, 13))
      For I = Plage.Cells.Count To 1 Step -1
      If Plage.Cells(I).Value = 0 Then
      Plage.Cells(I).EntireRow.Delete
      End If
      Next
      End sub


      Cordialement.

      Papou
      1. oups :

        Sub Nettoyage()
        
            Dim I As Long, Limite As Long
            
            Range("M5").Select
            Limite = Range("M5:M65535").End(xlDown).Row
        
            For I = 0 To Limite
                If (ActiveCell.Offset(I, 0).Value = 0) Then
                    ActiveCell.Offset(I, 0).EntireRow.Delete
                    Limite = (Limite - 1)
                End If
            Next
        
        End Sub
        '
        
        1. Bonjour,

          suggestion :

          Sub Nettoyage()
          
              Dim I As Long, Limite As Long
              
              Range("M5").Select
              Limite = Range("M5:M65535").End(xlDown).Row
          
              For I = 0 To Limite
                  If (ActiveCell.Offset(I, 0).Value = 0) Then
                      ActiveCell.Offset(I, 0).EntireRow.Delete
                  End If
              Next
          
          End Sub
          '
          

          Lupin