Boucle for If

Résolu/Fermé
Tristan - 29 mai 2017 à 10:56
 Tristan - 29 mai 2017 à 11:12
Bonjour,

Je cherche à tester des valeurs dans un tableur tel que sur une ligne s mes valeurs vérifient deux condition : supérieurs à une valeur donnée et inférieure à une autre valeur. Mon problème est que selon mon code même si la condition n'est pas respectée mon compteur s'incrémente.

Voici le code :

les valeurs d'encadrement ont été crées par un code
Par exemple dès la première ligne W = 30 WD = 3 et la valeur de la cellule "E"s est 44, la condition n'étant pas respecté le then ne devrais pas s'appliquer et la variable r ne devrait donc pas être incrémentée (ce qui n'est pas le cas ...)

r = 0
For s = 4 To 34 'cherche les correspondances au produit potentiel parmis ceux existants
If (W - WD) < Sheets("Suivi EF").Range("E" & s).Value < (W + WD) And _
(X - XD) < Sheets("Suivi EF").Range("K" & s).Value < (X + XD) And _
(Y - YD) < Sheets("Suivi EF").Range("M" & s).Value < (Y + YD) And _
(Z - ZD) < Sheets("Suivi EF").Range("N" & s).Value < (Z + ZD) Then
r = r + 1
End If
Next s
Sheets("Feuil1").Range("A" & q) = W
Sheets("Feuil1").Range("B" & q) = X
Sheets("Feuil1").Range("C" & q) = Y
Sheets("Feuil1").Range("D" & q) = Z
Sheets("Feuil1").Range("E" & q) = r
q = q + 1


A voir également:

3 réponses

ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 428
29 mai 2017 à 11:08
Bonjour

VBA ne connait pas les doubles inégalités (du moins au sens où on l'entend)
Essaies ceci (pour le premier encadrement
For s = 4 To 34 'cherche les correspondances au produit potentiel parmis ceux existants
  If (W - WD) < Sheets("Suivi EF").Range("E" & s).Value And Sheets("Suivi EF").Range("E" & s).Value < (W + WD) And _

Cdlmnt
0
je viens d'essayer en séparant ma condition compris entre x et y en 2 j'ai donc <y ET >x cela fonctionne
0
Merci beaucoup pour cette réponse rapide
0