J'ai une petite question.
J'ai un programme en cours en VB6 qui extrait d'une base de donnée sous AS400 diverses informations.
L'une d'elle étant des numéros de téléphone ainsi que des numéros de fax. Comment peut-on faire pour qu'une chaîne comme 03.86.00.00.00 ou 03/86/00/00/00 soit transformer en 0386000000?
En gros depuis quelques temps je cherche comment ne prendre (ou garder) uniquement que les valeurs numériques d'une chaîne de caractères en VB6...
Bonjour,
Tu as le choix entre :
1) simple : utiliser la fonction Replace (à lire dans ton aide VB6). Valable uniquement si les caractères à supprimer sont toujours les mêmes
ou
2) moins simple, mais également facile : parcourir en boucle les caractères de la chaîne (boucle à l'aide de la fonction Mid) et ne garder que ceux qui sont numériques (Isnumeric)
A bûcher donc (ton aide VB6 sur ta machine) :
Replace
For ... to ... next
Mid
Len
Mets-toi à ce petit travail. Reviens avec ton code d'essai si encore en difficulté.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Bien en ce qui concerne la boucle, mais plus orthodoxe (avec cette méthode) en écrivant :
If isnumeric(CarLecture) Then
au lieu de
If CarLecture >= "0" And CarLecture <= "9" Then
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Bonjour, cmarcotte,
La plus efficace/rapide ? ===>> je l'ai tue car il n'en est qu'à ses débuts ===>> utilisation de strconv , isnumeric et join. Celle-là permettrait même l'extraction des chiffres dans une chaine contenant des chiffres et d'autres choses (même si différentes entre elles).
Regarde ==>>
toto = "03/86.0\2-20#33"
titi = Split(StrConv(toto, vbUnicode), Chr(0))
For i = 0 To UBound(titi)
If Not IsNumeric(titi(i)) Then titi(i) = ""
Next
MsgBox Join(titi, "")
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Vous n’avez pas trouvé la réponse que vous recherchez ?
Je viens de l'essayer en boucle === >>> 100 000 chaînes traitées en moins de 1 seconde.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Merci à vous pour vos réponse, je m'en suis sorti en faisant comme ceci
For i = 1 To Len(CharTemp)
CarLecture = Mid(CharTemp, i, 1)
If CarLecture >= "0" And CarLecture <= "9" Then
Data(iLigne, 11) = Data(iLigne, 11) & CarLecture
End If
Next
Je ne sais pas si c'est le plus fonctionnel, mais j'ai voulu faire le plus simple possible.