un if dans un for qui deconne... MACRO excel

pierre@

XLDnaute Nouveau
bonjour à tous,
j'ai une macro qui supprime des lignes mais elle ne compile pas, je ne comprend pas... voici le code :

Code:
   1. Sub supprimerLigne()
   2.       With ActiveSheet
   3.             For i=0 To 20
   4.                  If .Cells(i,2)="DIVERS" Or .Cells(i,2) = "DIV PME" Then
   5.                        .Rows(i & ":" & i).Delete Shift:=xlUp
   6.                        i=i-1
   7.                   End If
   8.              Next i
   9.        End With
  10. End Sub

je ne comprend pas, ça me met une erreur sur le if...
Avez vous une idée? Merci !
 

Papou-net

XLDnaute Barbatruc
Re : un if dans un for qui deconne... MACRO excel

Code:
je ne comprend pas, ça me met une erreur sur le if...
Avez vous une idée? Merci !

Bonjour pierre@,

Ne cherche pas plus loin, ta boucle doit démarrer à 1 et non à 0 (la ligne zéro n'existe pas).

Cordialement.
 

Pierrot93

XLDnaute Barbatruc
Re : un if dans un for qui deconne... MACRO excel

Bonjour,

essaye peut être ainsi :

Code:
Sub supprimerLigne()
Dim i As Long
For i = 20 To 1 Step -1
If Cells(i, 2) = "DIVERS" Or Cells(i, 2) = "DIV PME" Then _
    Rows(i).Delete Shift:=xlUp
Next i
End Sub

lorsque tu supprimes des lignes il est préférable de partir de la fin et de remonter, et ce maxi jusqu'à 1, pas de ligne 0 dans excel...

bon après midi
@+

Edition : bonjour Papou
 

skoobi

XLDnaute Barbatruc
Re : un if dans un for qui deconne... MACRO excel

Bonjour pierre,

bizarre...., la compilation marche chez-moi.
Ferme peut-être le fichier, ouvre le de nouveau puis ré-essaye.

Edit: bonjour Papounet, Pierrot, arfff on a pas compris la même chose par "compilation".
 

pierre@

XLDnaute Nouveau
Re : un if dans un for qui deconne... MACRO excel

Merci à Papou-net et à vous tous, pour votre promptitude !
c'était le i=0 qui n'allait pas...en plus c'est plus malin de remonter en effet, je n'ais pas le i-- qui est un peu sale...
Merci encore...
@skoobi, je me suis mal exprimé, ca ne s'executait pas mais ca compile.
 
Dernière édition:
G

Guest

Guest
Re : un if dans un for qui deconne... MACRO excel

Bonjour,

Papou a raison. De plus quand tu supprime des lignes, part de l'index maximal de ligne vers le vers
Code:
Sub supprimerLigne()
        With ActiveSheet
             [B][COLOR=red]For i=20 to 1 step -1[/COLOR][/B]
                   If .Cells(i,2)="DIVERS" Or .Cells(i,2) = "DIV PME" Then
                          [B][COLOR=red].Rows(i).Delete Shift:=xlUp[/COLOR][/B]
                       End If
                Next i
          End With
   End Sub

A+

[Edit] Mazette! on peut dire que je suis à la bourre:D
 

Discussions similaires

Statistiques des forums

Discussions
312 677
Messages
2 090 825
Membres
104 677
dernier inscrit
soufiane12