Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Explication code IF... OR

  • Initiateur de la discussion Initiateur de la discussion Vinvol
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

V

Vinvol

Guest
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

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)
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

L
Réponses
9
Affichages
1 K
D
  • Résolu(e)
Réponses
7
Affichages
1 K
douguy
D
P
  • Question Question
Réponses
3
Affichages
1 K
Réponses
68
Affichages
9 K
Etoto0026
E
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…