Suppression de 2 lignes sous conditions

gnoux -  
michel_m Messages postés 16602 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.


A voir également:

2 réponses

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