Suppression de 2 lignes sous conditions

Fermé
gnoux - 30 juin 2015 à 19:42
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 1 juil. 2015 à 08:47
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 samedi 9 octobre 2010 Statut Membre Dernière intervention 13 février 2016 66
30 juin 2015 à 19:58
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
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 samedi 9 octobre 2010 Statut Membre Dernière intervention 13 février 2016 66
30 juin 2015 à 20:36
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
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 samedi 9 octobre 2010 Statut Membre Dernière intervention 13 février 2016 66 > gnoux
Modifié par onc le 30/06/2015 à 22:50
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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
1 juil. 2015 à 08:47
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