Rechercher une expression dans un tableau

Résolu
skar13 Messages postés 14 Date d'inscription lundi 13 octobre 2003 Statut Membre Dernière intervention 16 janvier 2007 - 23 sept. 2004 à 10:12
ShadowMaster Messages postés 184 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 18 août 2005 - 23 sept. 2004 à 12:47
Bonjour,
J'aimerais faire :
Si a est dans b() alors
. ......
else
.....
end if

Est-ce qu'il y a une fonction en VB pour recherche si une expression (a) est présente dans un tableau (b()).
Merci

7 réponses

ShadowMaster Messages postés 184 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 18 août 2005
23 sept. 2004 à 12:47
Redim Tableau(0) n'etait pas préciser dans ton code d'ou ma remarque mais oui effectivement ta methode marche aussi bien.
enfin bref :) skar13 a 2 solutions a lui de choisir, vaut mieu avoir le choix que pas de choix du tout ;)
3
ShadowMaster Messages postés 184 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 18 août 2005
23 sept. 2004 à 10:41
non mais tien:
public function Rechercher (A as SeQueTuVeu) as long

dim Taille as long, Boucle as long
on error goto RechError
taille=ubound(b)

NoRechError:
for boucle=0 to taille
  if b(boucle)=A then Rechercher=boucle
next boucle
exit function

RechError:
taille=0
goto NoRechError

end sub
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
23 sept. 2004 à 10:46
ShadowMaster < A mon avis, ton code va boucler à l'infini si le tableau est un tableau dynamique et s'il n'est pas initialisé !!
Il vaudrait mieux faire un truc dans ce genre :
Function Chercher(A as ...) as long
Dim i as long
On error Goto NoArray
For i = lbound(Tableau) to ubound(tableau)
If Tableau(i)=A then
  Chercher = i
  Exit Function
Next
NoArray :
Chercher = -1
End Function

En plus, ca évite le spaghetti du Goto !

Christophe R.
0
ShadowMaster Messages postés 184 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 18 août 2005
23 sept. 2004 à 11:04
non il ne va pas boucler a l'infini
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ShadowMaster Messages postés 184 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 18 août 2005
23 sept. 2004 à 11:09
aaaa et je voulais ajouter, il est parti ou le end if? lol et si sont tableau a qu'une seul entré: b(0)=pom et qu'il recherche pom avec ta methode il ne le trouvera pas ubound renvoi une erreur quand un tableau a une seul entré et commence a zero. va jeter un oeil a mon moteur 2d j'utilise ce meme genre de fonction pour la gestion des textures (géré dans un tableau dynamique) et tu veras que cela marche tres bien.
0
skar13 Messages postés 14 Date d'inscription lundi 13 octobre 2003 Statut Membre Dernière intervention 16 janvier 2007
23 sept. 2004 à 11:44
En fait je voulais savoir si il y avait une méthode VB de recherche d'expression dans un tableau comme pour python .
Sinon j'utilisais
![id] => l'expression
Port => tableau

For yy = 0 To UBound(Port) - 1
If Port(yy) = ![id] Then
portab = 1
Exit For
End If
Next

et ca marche
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
23 sept. 2004 à 12:03
1-Effectivment le code de Yomm ne boucle pas à l'infini, il génère une erreur, ce n'ets aps mieux.
2- Ouais il manque un EndIf avant le Next dans mon code
3- Ubound(Tableau) ne plante pas quand tu as fait un Redim Tableau(0) !! Il retourne 0 comme il doit le faire !!!
Je vais peut-être vous paraître prétentieux mais mon code focntionne très bien, ormis le End if manquant !!

Christophe R.
0
Rejoignez-nous