Suppression de 2 lignes sous conditions

Bonjour,
je souhaite supprimer 2 lignes si les 2 cellules en colonne G sont egales.

j'ai bidouiller ca mais ca plante sur ma condition.

With Sheets("EXTRACTION")
DerLign = .Range("A1000").End(xlUp).Row
For i = DerLign To 2 Step -1
If Cells(i, 7) = Cells(i - 1, 7) Then Rows("i:i - 1").Delete
Next
End With

ca bug sur rows("i:i-1").delete

j'ai fait une erreur de syntaxe ou il faut faire autrement ?

Merci de votre aide.

2 réponses

  1. Logique, tu demande à excel les rows "i:i-1" mais excel ne connait pas "i" ... seul VBA le connait.

    Il faudrait écrire :

    rows(Str(i)+":"+Str(i-1))

    à la place de rows("i:i-1")
    0
    1. bonjour et merci de ta reponse
      j'ai donc mis ca mais ca bug
      Rows(Str(i) + ":" + Str(i - 1)).Delete
      0
    2. Et ça répond quoi ?
      Parceque autant je maitrise VB, autant Excel pas franchement ;-)
      Et il est très possible que Excel n'accepte pas qu'on lui indique des lignes du genre"16-15"
      Dans ce cas, il faudra alors écrire :
      Rows(i).Delete : Rows(i-1).Delete
      0
    3. pas mieux :(
      ca plante a la 2° iteration la je vois pas pourquoi !!
      j'ai un pote qui maitrise je lui montrerai demain je pense que l'on est pas loin mais bon je te mets la reponse demain soir pour ton info si tu veux
      encore merci
      0
    4. @gnouxhum... je pense que, en plus du pb de Delete, l'algo est pas bon à la base...

      Voici comment j'aurais fait :


      With Sheets("EXTRACTION")
      i = .Range("A1000").End(xlUp).Row - 1
      While i>0
      If Cells(i, 7) = Cells(i + 1, 7) Then
      Rows(i+1).Delete
      Rows(i).Delete
      i=i-2
      Else
      i=i-1
      End If
      Wend
      End With
      0
  2. Contributeur
    Bonjour
    écris plutôt
    Rows(i & ":" & i- 1).Delete 

    et en début de macrro
    application.screenupdating=false

    pour le confort de yeux et pour la rapidité
    0