Suppression de 2 lignes sous conditions

gnoux -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
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. onc Messages postés 26 Statut Membre 66
     
    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. gnoux
       
      bonjour et merci de ta reponse
      j'ai donc mis ca mais ca bug
      Rows(Str(i) + ":" + Str(i - 1)).Delete
      0
    2. onc Messages postés 26 Statut Membre 66
       
      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. gnoux
       
      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
      1. onc Messages postés 26 Statut Membre 66 > gnoux
         
        hum... 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. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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