VBA excel effacer des lignes

Juliette -  
gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à tous le monde !!!

Je voudrais éliminer à la pression d'un commandbutton les lignes dont la cellule de la colonne c n'est pas égale à la valeur d'une combo. Ce code ne marche pas, il echoue à la ligne Rows(i).delete...

Quelqu'un a-t-il une idée ?

Dim derligne As Integer
Dim i As Integer

derligne = Sheets("Situation débiteur cédé").Range("C65000").End(xlUp).Row
For i = 2 To derligne
If Cells(i, 3) <> ComboBox1.Value Then
Rows(i).Delete
ComboBox2.Locked = False
End If
Next i

Merci beaucoup à tous ceux qui tenteront de m'aider !!!

2 réponses

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour

    Essaies en mettant :
    For i = derligne To 2 step -1

    Ainsi tu supprimes en remontant et la suppression des lignes ne perturbe pas ton index.
    0
    1. Juliette
       
      Merci de l'astuce mais j'ai encore une erreur sur la ligne Rows(i).delete

      erreur 1004 : la methode delete de la classe range a échoué !
      0
    2. m@rina Messages postés 27465 Date d'inscription   Statut Modérateur Dernière intervention   11 562
       
      Bonjour,

      Tu n'aurais pas, par hasard, des cellules fusionnées ?

      m@rina
      0
    3. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      Bonjour,

      Dim i As Integer est aussi incorrect car tu ne peux pas aller jusqu'à 65000.
      Dim i As Long le permet.

      Essaies de bien adresser toutes tes références à ta feuille ainsi :
      Dim derligne As Long 
      Dim i As Long 
      With Sheets("Situation débiteur cédé")
      derligne = .Range("C65000").End(xlUp).Row
      For  i = derligne To 2 step -1
      If .Cells(i, 3) <> ComboBox1.Value Then
           .Rows(i).Delete
      ComboBox2.Locked = False
      End If
      Next i 
      End With 
      0
    4. Juliette
       
      Merci pour tous ces conseils, mais le

      .rows(i).delete pause le même problème.

      .rows(i).delete = delete fonctionne mais vide les lignes mais ne les supprime pas complètement..
      0
    5. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      vide les lignes mais ne les supprime pas complètement

      Tu me surprend car clearcontents supprime les valeurs mais delete efface bien la ligne.
      Je ne vois pas le phénomène ?
      Qu'elle version utilises-tu ? excel 2000 ?
      0
  2. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour

    Je viens de tester le code sur une version 2000.

    Effectivement la remarque de m@rina, que je salue, était judicieuse comme toujours, mais même avec des cellules fusionnées, j'ai bien supprimé les lignes.
    0