double condition

J

JJ

Guest
Bonjour je m'adresse à vous pour une double condition qui marche pas?
En col D(=4) j'ai par ex des prénoms et en col E (=5) des objets.

J'ai fait une boucle dans laquelle je veux appliquer une action à Pierre (uniquement) s'il n'a pas le velo, la moto, la voiture et le buggy .
j'ai écrit:

For.........
If Feuil1.Cells(x,4)='Pierre' And Feuil1.Cells(x,5)<> 'velo' or Feuil1.Cells(x,5)<> 'moto' Then
Action
Else
If Feuil1.Cells(x,4)='Pierre' And Feuil1.Cells(x,5)<> 'voiture' or Feuil1.Cells(x,5)<> 'buggy' Then
même action que précédente
End If
End If
Next
(j'ai mis 2 lignes car la condition est tres longue mais c'est ce principe)
j'ai même essayé avec des parenthéses apres And ?
Bonne journée et merci
JJ
 

soft

XLDnaute Occasionnel
Pourquoi pas tout sur la même ligne (on peut passer sur plusieurs lignes écran avec ' _'

Une idée comme ça
si tu arretais le If après = 'Pierre' then et que tu ajoute ensuite un select case :

select case Feuil1.Cells(x,5)
case is= ... or case is = ...
case else
end select
 
J

JJ

Guest
donc en suivant ton raisonnement ca donnerait:
For.....
If Feuil1.Cells(x,4)='Pierre' Then
Case isNOT(c'est bon?) Feuil1.Cells(x,5)'velo' or Case is NOT Feuil1.Cells(x,5)'moto'
action
Else Case
Case isNOT Feuil1.Cells(x,5)'voiture' or Case is NOT Feuil1.Cells(x,5)'buggy'
action identique
End If
Next

C'est bien la syntaxe ? et je peux mettre Case Is Not?
a+
JJ
 
G

GIBI

Guest
bonjour,


ecrit le comme tu le dis, piere qui n'a ni velo ni voiture.....


If Feuil1.Cells(x,4)='Pierre' And (Feuil1.Cells(x,5)<> 'velo' et Feuil1.Cells(x,5)<> 'moto' and Cells(x,5)<> 'voiture' and
Feuil1.Cells(x,5)<> \\'buggy\\' Then
action
End If


la dondition n'est pas trop longue, mais du peux continuer sur la ligne suivante en terminant par un blanc suivi d'un _ (underscore)




de la logique pure
 

Charly2

Nous a quittés en 2006
Repose en paix
Bonsoir JJ (ou JoJo), Soft, GIBI, le forum,

JJ, le code que tu indiques ne respecte pas la syntaxe de l'instruction 'Select Case'.

Pour faire ce que tu souhaites dans ton exemple, il faudrait l'écrire ainsi :
Code:
'For.........
  If Cells(1, 4) = 'Pierre' Then
    Select Case Cells(1, 5)
      Case Is <> 'velo', Is <> 'moto'
        'Action
      Case Is <> 'voiture', Is <> 'buggy'
        'Action identique
    End Select
  End If
'Next

Amicalement
Charly
 

soft

XLDnaute Occasionnel
Bonjour le fil,
D'accord avec Charly2 pour l'utilisation du Select Case.
Mais une petite explication sur ce qui ne marchait pas :

Quand on mélange les OR avec les AND il faut remettre toutes les conditions dans chaque OR.

Tu écrivais si ='Pierre' ou si objet <> ... donc la condition Or est aussi remplie si c'est pas 'Pierre' et pas un des objets.

Avec des If 2 solutions :

If Cells(1, 4) = 'Pierre' and Cells(1, 5) <> 'velo' _
Or Cells(1, 4) = 'Pierre' and Cells(1, 5) <> 'moto' _
Or Cells(1, 4) = 'Pierre' and Cells(1, 5) <> 'voiture' _
Or Cells(1, 4) = 'Pierre' and Cells(1, 5) <> 'buggy' Then
'Action
End If

ou avec 2 conditions successives

If Cells(1, 4) = 'Pierre' Then
If Cells(1, 5) <> 'velo' And Cells(1, 5) <> 'moto' _
Cells(1, 5) <> 'voiture' And Cells(1, 5) <> 'buggy' Then
'Action
End If
End If
 

Statistiques des forums

Discussions
312 330
Messages
2 087 335
Membres
103 524
dernier inscrit
Smile1813