[Excel/VBA] comparaison avec un groupe de nombre

Résolu
cs_nico39 Messages postés 56 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 4 octobre 2006 - 18 sept. 2006 à 11:20
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 19 sept. 2006 à 01:09
Bonjour,

Je souhaite comparer une valeur avec un groupe de valeurs. Par exemple:
                      si (i =2) ET (i=5) ET (i=18),... alors faire....
deviendrait     si i est dans [2, 5, 18,...], alors faire....

J'ai essayé les opérateurs Like et Is, mais sans succès (Erreur de type!). Je suppose que ces 2 opérateurs ne fonctionnent qu'avec des chaînes de caractères.

Quelqu'un aurait-il une idée?
Merci d'avance.
Nicolas.
Amateurement vôtre... 

4 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
18 sept. 2006 à 11:53
"si (i = 2) ET (i=5) ET (i=18),..." déjà je pense qu'il faut comprendre si (i =2) OU (i=5) OU (i=18),... sinon c'est impossible à faire.

2 solutions par exemple :

' Au choix
If i  = 2 Or i = 5 Or i = 18 Then 
    'Truc à faire si bon
End If 

' Ou version bricole
Select Case i 
    Case 2, 5, 18 
        'Truc à faire si bon
    Case Else 
        'Truc à faire si pas bon
End Select 

<small>Coloration syntaxique
automatique</small>

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
3
domsig Messages postés 125 Date d'inscription lundi 6 septembre 2004 Statut Membre Dernière intervention 11 mai 2010
18 sept. 2006 à 11:45
salut
essaie ceci :
if instr(1,str(i) &",","2,5,18")>0 then
   faire ceci
end if
je pense que ça devrait marcher...
bon courage
Allez voir mon site !
http://www.amis-marolles.org
le site d'une association s'occupant de patrimoine et de traditions
0
cs_nico39 Messages postés 56 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 4 octobre 2006
18 sept. 2006 à 12:37
Re-Bonjour

merci à vous, domsig et casy, pour vos coups de main.
> casy: j'ai effectivment pensè à utiliser Select Case. Cela marche sans problème, et permet même de rajouter aisément et sans erreur des éléments dans la liste conditionnelle (2, 5, 18, 21, 45,...). Mais je trouve la syntaxe asez lourde à manipuler en comparaison avec le If ...Then traditionnel. Celui-ci se trouve cependant limité dans la syntaxe trop "définie" (on est obligé de rajouter une condition complète, lorsqu'on veut simplement ajouter un élément de comparaison).
 
> domsig: ta solution semble très complète (traite aussi bien nombres que texte), mais ne marche pas pour mon cas (je viens juste d'essayer)!

Donc j'essayais de trouver une syntaxe alliant la flexibilité du Select Case et la simplicité du If... Then. Mais bon, je crois que je vise un peu haut !!!  
Je vais donc me contenter de la solution de casy.

Merci encore pour votre aide.

Amateurement vôtre... 
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
19 sept. 2006 à 01:09
Salut,

pour ce genre de demande, question de lisibilité, le Select Case est préférable aux If Then Else

@++

<hr width="100%" size="2" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
0
Rejoignez-nous