Parcourir chaine de caractere

jocker132 Messages postés 14 Date d'inscription mercredi 14 septembre 2005 Statut Membre Dernière intervention 7 janvier 2009 - 4 janv. 2009 à 02:07
Mikaels35 Messages postés 146 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 17 novembre 2009 - 4 janv. 2009 à 07:44
Bonsoir,
J'ai ine chaine de charactere (string)  qui prend le format suivant
Dim chaine as String
chaine= numero &  "-" nom  & " " & prenom
 de telle façon que:
numero est un entier (integer)
nom est un chaine de caractères (string)
prenom est un chaine de caractères (string)

exemple: chaine="1- jean pierre"  ( dans cet exemple  numero="1" , nom ="jean"  prenom="piere" )

j'aimerai créer une fonction qui me permet de retourner le champ numero de ma chaine de caractere sachant que numero peut être constitué de plusieur chiffres.

Merci d'avance pour votre aide.

7 réponses

The Meteorologist Messages postés 232 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 3 novembre 2011 1
4 janv. 2009 à 02:20
Je n'ai pas le courage de coder une fonction toute faite et puis c'est pas trop l'esprit de vbfrance. A ta place je me renseignerais sur la fonction Mid() qui permet de découper une chaîne à un endroit précis, le tout dans une boucle et ça doit pas être bien compliqué.

Exemple :
Mid("1- jean pierre", 1, 1") 'retourne "1"
Mid("1- jean pierre", 4, 4") 'retourne "jean"
Mid("1- jean pierre", 9, 6") 'retourne "pierre"

++
0
jocker132 Messages postés 14 Date d'inscription mercredi 14 septembre 2005 Statut Membre Dernière intervention 7 janvier 2009
4 janv. 2009 à 02:26
Oui mais c'est juste un exemple car je pourrai avoir
chaine="123-Michel Vaillant"
ou encore
chaine="59831-Alanis Morisette"

Donc le numero peut comporte un nombre indétérminé de chiffres.
Et je voudrais savoir comment je vais faire pour le récuperer d'une manière générale.
Merci d'avance pour votre aide précieuse;
0
The Meteorologist Messages postés 232 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 3 novembre 2011 1
4 janv. 2009 à 02:33
Oui bien par exemple :

Je n'ai pas VB6 sous la main, mais tu peux faire ça assez facilement dans un boucle :

Dim i as integer = 1
Dim c as String = ""
Dim num as String
Dim maChaine = "59831-Alanis Morisette"

Do
num = num & c
c = mid(maChaine, i, 1)
i = i + 1
Loop until c = "-"

De cette manière tu devrais récupérer le numéro dans la variable num. En l'adaptant tu peux récupérer les autres éléments de la chaîne.
0
The Meteorologist Messages postés 232 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 3 novembre 2011 1
4 janv. 2009 à 02:42
Allez soyons fous :

Dim i As Integer = 1
Dim c As String = ""
Dim num As String = ""
Dim nom As String = ""
Dim prenom As String = ""
Dim maChaine = "59831-Alanis Morisette"

Do
num = num & c
c = Mid(maChaine, i, 1)
i = i + 1
Loop Until c = "-"

c = ""

Do
nom = nom & c
c = Mid(maChaine, i, 1)
i = i + 1
Loop Until c = " "

Do
prenom = prenom & c
c = Mid(maChaine, i, 1)
i = i + 1
Loop Until i = Len(maChaine) + 2


Fait à la va-vite sans VB6 mais cela devrait fonctionner ;)

++
0

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

Posez votre question
jocker132 Messages postés 14 Date d'inscription mercredi 14 septembre 2005 Statut Membre Dernière intervention 7 janvier 2009
4 janv. 2009 à 02:46
Merci beaucoup celà répond exactement à ma question.
Merci infiniment
0
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
4 janv. 2009 à 07:35
bonjour

pour extraire juste le numero il y a quand meme plus simple  !

numero = val(chaine)

maintenant pour tout extraire comme le fait  The Metorologist on peut utiliser  Split ce qui fera un code un poil plus léger et rapide !

a = split (chaine,"-")
numero = a(0)
b = split(a(1)," ")
nom = b(0)
prenom = b(1)

[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
0
Mikaels35 Messages postés 146 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 17 novembre 2009 1
4 janv. 2009 à 07:44
Salut

Et pourquoi pas faire simple quand on le peut:

Dim c As String, num As String

c =  "123-jean pierre"
num = Left$(c, InStr(1, c, "-") - 1)

@+
0