[Excel/VBA] comparaison avec un groupe de nombre

Résolu
Signaler
Messages postés
56
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
4 octobre 2006
-
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
-
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

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
"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 #
Messages postés
125
Date d'inscription
lundi 6 septembre 2004
Statut
Membre
Dernière intervention
11 mai 2010

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
Messages postés
56
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
4 octobre 2006

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... 
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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>