Explication code IF... OR

Vinvol

XLDnaute Junior
Bonjour,

Le problème n'en sera surement pas un pour ceux qui connaissent ça sur le bout des doigts, mais quelqu'un peut-il m'expliquer pourquoi le code ci-dessous ne marche pas ?

Code:
lig = 2

With Sheets("Sheet1")

For i = 2 To .Range("B65000").End(xlUp).Row

If .Cells(i, 1).Value = "Fraise" Or .Cells(i, 4).Value = "Grosse" Then _
    lig = lig + 1
   .Rows(i).Copy Destination:=Sheets("Sheet2").Cells(lig, 1)

Next i

End With

En théorie, toutes les lignes avec "Fraise" et toutes les lignes avec "Grosse" devraient être copiées, mais ce n'est pas le cas. Il en manque, et des lignes qui n'ont aucun des critères sont copiées par contre...

Où est-ce que ça cloche ?

Autre bug, mais je ne me suis pas encore penché dessus, je souhaitais que les lignes soient copiées en sheet2, à partir de la ligne 2. Avec un IF au critère unique, ça fonctionne. En ajoutant un deuxième critère, ça décale.

Merci de l'éclairage que vous pourrez m'apporter,
Vincent
 

Pièces jointes

  • Test.xlsm
    21.2 KB · Affichages: 23
  • Test.xlsm
    21.2 KB · Affichages: 32
  • Test.xlsm
    21.2 KB · Affichages: 30

MJ13

XLDnaute Barbatruc
Re : Explication code IF... OR

Bonjour Vinvol

Si tu débogges (mettre un stop dans le code puis taper F8) ton code, tu verras que cela devrait fonctionner ainsi:

Code:
If .Cells(i, 1).Value = "Fraise" Or .Cells(i, 4).Value = "Grosse" Then lig = lig + 1: .Rows(i).Copy Destination:=Sheets("Sheet2").Cells(lig, 1)
 

Vinvol

XLDnaute Junior
Re : Explication code IF... OR

Bonjour MJ13,

Effectivement, sans les retours à la ligne, la macro plante. Comme quoi, il suffit d'appuyer sur une touche pour tout changer....

Réécrit de la sorte :
Code:
If .Cells(i, 1).Value = "Fraise" Or .Cells(i, 4).Value = "Grosse" Then .Rows(i).Copy Destination:=Sheets("Sheet2").Cells(lig, 1): lig = lig + 1

Ca fonctionne !

Merci beaucoup,
Vincent
 

Discussions similaires

Statistiques des forums

Discussions
312 799
Messages
2 092 223
Membres
105 296
dernier inscrit
bob44