RECHERCHE D'UNE CHAINE DANS UNE AUTRE + GESTION D'ERREUR + COMMENTAIRE

cs_ABF Messages postés 227 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 26 avril 2012 - 17 févr. 2006 à 16:50
 Utilisateur anonyme - 7 juil. 2006 à 15:29
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/36114-recherche-d-une-chaine-dans-une-autre-gestion-d-erreur-commentaire

Utilisateur anonyme
7 juil. 2006 à 15:29
Mais comment faire une recherche d'une chaine de caractères dans un fichier ?
Rahemm Messages postés 3 Date d'inscription mardi 28 mars 2006 Statut Membre Dernière intervention 3 avril 2006
1 avril 2006 à 01:26
slt merci pour le code mais slp vous pouver m'aide a faire un code de recherch sur un bas de donne (titre de livre par ex)
et en resultat s'afich tt les info consernon cee livre
merci
cs_ABF Messages postés 227 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 26 avril 2012
18 févr. 2006 à 18:54
Voilà : "améliorations"
cs_ABF Messages postés 227 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 26 avril 2012
18 févr. 2006 à 09:49
Bonjour,

J'ai testé la rapidité des 2 codes soit : Instr() et ma fonction et y'a pas photo , la fonction est plus lente.
Pour katsankat: j'ai dit plus haut qu'il était possible d'allonger les possibilités de paramètres commes celles que tu as cité. De plus, pour les variants, y'a juste à mettre les variables les unes au dessous des autres donc je vais refaire cela dès que possible (pas complet car ce n'est pas mon objectif principale et que la ci belle fct Instr() existe).
Voila

Merci de vos commentaires.

ABF
katsankat Messages postés 571 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 12 juillet 2012 3
18 févr. 2006 à 01:46
Bonjour,

Si c'est fait pour expliquer comment fonctionne InStr, il reste des choses à faire car InStr():

- accepte un argument supplémentaire: la position de départ
- prend également un 4e paramètre, facultatif (comparaison binaire et respect de la casse).
- retourne 0 si la chaine 1 est nulle
- retourne 0 si la chaine 2 est introuvable
- retourne 0 si posdépart > len(chaine2)
- retourne NULL si string 1 est NULL
- retourne NULL si string 2 est NULL
- retourne posdepart si string2 est de longueur nulle
- sinon retourne la position à laquelle la chaine 1 est trouvée.
Or la fonction ne retourne rien.

Déclarer 7 variants ça fait beaucoup juste pour obtenir une position.
J' explique: en faisant
Dim a, b, FinTxt, LongTxtTot, LongTxtRech As Long

Dim L1TxtTot, L1txtRech, MotTxt, MotRech As String
Tu déclares 7 variants, 1 long et 1 string. Un variant est stocké sur 22 octets+la longueur de la chaîne...

Dans:
MotRech = vbNullString

LongTxtRech = Len(MotRech)
...La fonction len() pourrait être évitée.

C'est un bon début.
cs_MasterHack Messages postés 586 Date d'inscription jeudi 18 septembre 2003 Statut Membre Dernière intervention 13 février 2008 2
17 févr. 2006 à 22:49
bravo, vraiment!!
1-meme si,je peux me tromper,tu ne cainnaisser pas la fonction instr ou meme instrrev, tu as penser a creer une solution au cas present.bien pensé
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
17 févr. 2006 à 19:54
Oui tout à fait, surtout que la fonction InStr doit être plus rapide que la tienne, donc évitez d'utiliser cette fonction si votre seul but est de trouver l'occurence d'une chaîne dans une autre : la fonction InStr donnera le même résultat en plus rapide.

DarK Sidious
cs_schtroumf Messages postés 59 Date d'inscription mercredi 8 octobre 2003 Statut Membre Dernière intervention 22 juillet 2008
17 févr. 2006 à 19:34
Ha ok, mais il faudrait que tu précises que ta source a un caractère plus pédagogique qu'utile tel quelle :)
cs_ABF Messages postés 227 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 26 avril 2012
17 févr. 2006 à 18:51
Bonsoir,

Justement, j'ai fait cela pour les débutants qui voudraient s'initier aux boucles mais aussi pour expliquer comment fonctionne cette fonction VB. Et je pense qu'avec ma source il est possible de faire des chose plus chiadés en la modifiant qu'avec Instr.

ABF
cs_schtroumf Messages postés 59 Date d'inscription mercredi 8 octobre 2003 Statut Membre Dernière intervention 22 juillet 2008
17 févr. 2006 à 18:17
Ton code est bien commenté et bien indenté mais je n'en vois pas vraiment le but. En effet il existe une fonction qui s'appelle InStr qui fait ça toute seule très bien, qui effectue la vérification de longueur des chaine et renvoit la position de la première occurrence...
cs_babboss Messages postés 121 Date d'inscription vendredi 27 octobre 2000 Statut Membre Dernière intervention 29 novembre 2006
17 févr. 2006 à 18:16
Salut,
Il ya deja une fonction en VB pour faire ca ;)
InStr(La_Ou_On_Commence_A_Chercher, String_Dans_Laquelle_Chercher, String_A_Trouvé)

exemple:
Chaine = "totoabcdMuhahahaLOL32687"
Position = Instr(0, Chaine, "LOL")

On a position qui vaut : 17

Voila @++
cs_ABF Messages postés 227 Date d'inscription samedi 21 mai 2005 Statut Membre Dernière intervention 26 avril 2012
17 févr. 2006 à 16:50
Gestion d'erreur = vérification de la longueur de chaine...
Oups Désolé pour l'.exe je l'ai vu trop tard

Merci de laisser vos commentaire et notes.

ABF
Rejoignez-nous