Reconnaissance caractère

Résolu
cs_observatoire Messages postés 75 Date d'inscription vendredi 10 mars 2006 Statut Membre Dernière intervention 23 août 2006 - 20 avril 2006 à 12:00
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 - 24 avril 2006 à 17:03
Bonjour,
Je réalise une interface utilisateur sur VBA Access, je souhaite reconnaître dans une textebox après avoir lu le texte, un caractère de type ';' qui peut apparaître plusieurs fois entre différents chiffres, et le transformer dans le code par 'AND' (ou encore '14*' = '1400 AND 1401 AND 1402...'). Je veux surtout savoir comment lire une chaîne de caractère et rechercher des caractères prédéfinis.
Merci

15 réponses

Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
21 avril 2006 à 10:25
pour l'autre question le plus simple a mon avie c'est de tester si * est présant "instr(1,vaiable,"*")" retourne la position du carac puis avec left(1,variable) tu recup la 1ér lettre de ton string puis "val(left(1,varable))" tu recup la valeur.
Voila

D'oh! Nuts!
Mmmmm...
DONUTS
3
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
21 avril 2006 à 21:55
Bonsoir,

Effectivement, merci Polack77, mon exemple était incomplet.

MyString = "1;21-5;6;7*;8-95;200;4+1"

MyArray = Split(MyString, ";", -1, 1)
For i = 0 to UBound(MyArray)
Resultat = Resultat &vbCrLf& MyArray(i)
Next
MsgBox Resultat

jean-marc
3
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
20 avril 2006 à 12:25
Salut,
Cette fonction te retourne une chaine de carac en replacent un carac ou chaine de carac par un(e) autre.
Chaine = Replace(Chaine,FindString,ReplaceString)
donc ici ta variable à la place de chaine, ";" a la place de findstring, "AND" a la place de replacestring
Tu devrais pouvoir t'en sortir avec ça.
Bonne journée

D'oh! Nuts!
Mmmmm...
DONUTS
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
20 avril 2006 à 12:28
Salut

Essaie la fonction Replace :
Replace(TextBox1.Text, ";", "AND") 'c'est pour remplacer un caractere

Sinon, voit dans l'aide de VB les fonctions Trim, Mid et Len (traitement des caracteres)


@ ++

Mortalino
0

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

Posez votre question
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
20 avril 2006 à 12:30
salut mortalino ça roule? Hé pour une fois j'ai répondu avent toi

D'oh! Nuts!
Mmmmm...
DONUTS
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
20 avril 2006 à 12:36
Salut Polack ,

Ca va bien et toi ?
A peine j'ai valider mon Post, j'ai vu le tient. J'ai pensé la même chose !!

Mortalino
0
cs_observatoire Messages postés 75 Date d'inscription vendredi 10 mars 2006 Statut Membre Dernière intervention 23 août 2006
20 avril 2006 à 13:30
Merci je vais voir ça!
0
cs_observatoire Messages postés 75 Date d'inscription vendredi 10 mars 2006 Statut Membre Dernière intervention 23 août 2006
21 avril 2006 à 10:19
Apparement votre solution marche plutôt bien, mais comment puis-je faire dans le cas où:
j'ai soit "20" dans la zone de texte et que je veux "VARIABLE=20" dans mon code
ou "20-25" dans la zone de texte et que je veux "VARIABLE>=20 AND VARIABLE <=25" dans mon code.
J'imagine qu'il faut que j'identifie les entiers 20 et 25...


Autre question, peut-être du même ordre: je veux que 2* soit reconnu dans mon code comme VARIABLE=(20 ou 21 ou 22 ou 23 ou 24 ou 25...)
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
21 avril 2006 à 10:22
Si j'ai bien compris tu veut la valeur contenu dans ton string.
La fonction pour ceup cette valeur c'est "val(variable)" ex: var("12") retourneras la valeur 12.
Tu peut recup le code ascii d'une lettre avec asc(variable) (cette fonction est utile pour comvertire B en 2 : asc("B") - asc("A") + 1
Voila avec ça ca dois aller
salut.

D'oh! Nuts!
Mmmmm...
DONUTS
0
cs_observatoire Messages postés 75 Date d'inscription vendredi 10 mars 2006 Statut Membre Dernière intervention 23 août 2006
21 avril 2006 à 12:17
C'est pas mal, mais le problème c'est que je peux avoir plusieurs caractères à la suite: "1;21-5;6;7*;8-95" donc c'est pas toujours possible d'utiliser dans mes conditions uniquement le premier caractère ou le dernier. Puis-je lire un nombre à gauche de "-" ou de "*" par exemple?
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
21 avril 2006 à 12:41
Bonjour,

Exemple en passant par un tableau... à adapter

MyString = "1;21-5;6;7*;8-95"
MyArray = Split(MyString, ";", -1, 1)

MsgBox MyArray(0) &vbCrLf& MyArray(1) &vbCrLf& MyArray(2) &vbCrLf& MyArray(3) &vbCrLf& MyArray(4)

jean-marc
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
21 avril 2006 à 13:31
Avec la fonction split tu peut utiliser egalement ubound(split(truc)) qui te renvoie le nombre d'élément de ton string (Attention le tableau commance à 0 et pas à 1)
LBound te permet de recup la 1ér "case" (num du 1ér élément soit 0 avec split) de ton tableau

D'oh! Nuts!
Mmmmm...
DONUTS
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
24 avril 2006 à 08:55
Pense à valider la(les) réponce(s) qui t'on permis de résoudre ton probléme (pourcois pas même le dérnier message que tu à poster avec le code qui vas bien ).

D'oh! Nuts!
Mmmmm...
DONUTS
0
cs_observatoire Messages postés 75 Date d'inscription vendredi 10 mars 2006 Statut Membre Dernière intervention 23 août 2006
24 avril 2006 à 17:01
Merci. ça marche jusque là : je n'ai pas encore testé toutes les possibilités pour 6* ou *5. J'ai juste une petite modif à faire: ce n'est pas "val(left(1,variable))" mais "val(left(variable,1))".
0
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
24 avril 2006 à 17:03
Oups désol

D'oh! Nuts!
Mmmmm...
DONUTS
0
Rejoignez-nous