Recuperer des numéro ds une chaine

mqsi Messages postés 111 Date d'inscription mardi 31 octobre 2006 Statut Membre Dernière intervention 28 avril 2010 - 7 déc. 2006 à 17:24
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 - 8 déc. 2006 à 09:16
salut a tous,
Pourriez-vous me dire comment je peux recuperer tous les numéros ds une chaine de caractéres et merci d'avances

7 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
7 déc. 2006 à 17:27
Utilise une boucle avec Mid et Isnumeric
0
lilo44 Messages postés 174 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 15 février 2007 2
7 déc. 2006 à 17:47
Dim test
Dim indice
Dim resultat


test = "6aa123aaa8"
indice = 1
resultat = ""


Do While indice <= Len(test)


    If IsNumeric(Mid(test, indice, 1)) Then resultat = resultat & Mid(test, indice, 1)


    indice = indice + 1


Loop


MsgBox resultat
0
lilo44 Messages postés 174 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 15 février 2007 2
7 déc. 2006 à 17:52
Planté de boucle ;)

-------------------------

Dim test As String
Dim indice As Integer
Dim resultat As Double


test = "6aa123aaa8"
indice = 1
resultat = ""


For indice = 1 To Len(test)


    If IsNumeric(Mid(test, indice, 1)) Then resultat = resultat & Mid(test, indice, 1)


Next


MsgBox resultat
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
7 déc. 2006 à 19:03
Et si maintenant tu veux (bien que tu ne l'aies pas exprimé) estraire les numéros entiers (et pas les choffres uniquement, un par un) :

On va prendre l'exemple suivant :

Sur la chaîne :
"Dossier de consultation à retirer à : la DDTEFP, Carré Curial, 73018 Chambéry Cedex.
 
B.P. 1126, 73011 Chambéry cedex, France, Tél. : 0479603011, Fax : 0479603180, mail dse@chs-savoie.fr"
 
Ne me demande surtout pas d'où elle vient, hein ?


Private Sub Command1_Click()
  test = "1Dossier de consultation à retirer à : la DDTEFP, Carré Curial, 73018 Chambéry Cedex. B.P. 1126, 73011 Chambéry cedex, France, Tél. : 04 79 60 30 11, Fax : 04 79 60 31 80, mail [mailto:dse@chs-savoie.fr dse@chs-savoie.fr]"
  For i = 1 To Len(test)
    While Not IsNumeric(Mid(test, i, 1))
      i = i + 1
      If i > Len(test) Then Exit For
    Wend
    While IsNumeric(Mid(test, i, 1))
      suite = suite & Mid(test, i, 1)
      i = i + 1
      If i > Len(test) Then Exit For
      Wend
    suite = suite & " "
  Next
  MsgBox Trim(suite)
End Sub

Voilà msieur !






 


<!-- END TEMPLATE: bbcode_code -->
0

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

Posez votre question
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
7 déc. 2006 à 20:04
Tiens :

Je t'ai même fait une petite modif pour garder "présentables" tes numéros de téléphone :

Private Sub Command1_Click()
  test = "Dossier de consultation à retirer à : la DDTEFP, Carré Curial, 73018 Chambéry Cedex. B.P. 1126, 73011 Chambéry cedex, France, Tél. : 04 79 60 30 11, Fax : 04 79 60 31 80, mail [mailto:dse@chs-savoie.fr dse@chs-savoie.fr]"
  For i = 1 To Len(test)
    While Not IsNumeric(Mid(test, i, 1)) 'And Mid(test, i, 1) <> " "
      i = i + 1
      If i > Len(test) Then Exit For
    Wend
    While IsNumeric(Mid(test, i, 1)) Or Mid(test, i, 1) = " "
      suite = suite & Mid(test, i, 1)
      i = i + 1
      If i > Len(test) Then Exit For
      Wend
    suite = suite & vbCrLf
  Next
  MsgBox suite
End Sub

Ceci étant dit (et fait), ami mqsi :

Tu voudras bien remarquer que je n'ai utilisé que ce dont je t'avais parlé dès mon 1er message.
Il ne s'agit plus là d'une question de savoir.... mais d'utilisation des connaissances... et celà ne s'apprend pas !

Il est peut-être temps que tu apprennes à utiliser ton savoir, toi aussi. Il n'existe aucun manuel concernant la manière d'organiser sa pensée... et la pensée est et restera toujours l'élément le plus important et irremplaçable en matière de développemen (informatique ou autre)..

Ton effort ne doit en aucun cas se limiter à poster, pas à pas, sur les forums francophones que tu as pu répertorier !
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
8 déc. 2006 à 08:31
Tiens, voilà encore une autre façon :

For i = 1 To Len(test)
        If IsNumeric(Mid(test, i, 1)) Or Mid(test, i, 1) = " " Then
            sortie = sortie & Mid(test, i, 1)
        Else
            If Right(Trim(sortie), 1) <> "/" Then sortie = Trim(sortie) & "/"
        End If
    Next i
 MsgBox sortie


reste plus qu'à utiliser split avec / pour extraire tous tes numeros dans un tableau
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
8 déc. 2006 à 09:16
Tiens :
encore une autre, sans split et directement dans une listbox

Private Sub Command1_Click()
    test = "B.P. 1126, 73011 Chambéry cedex, France, Tél. : 04 79 60 30 11, Fax : 04 79 60 31 80, mail [mailto:dse@chs-savoie.fr dse@chs-savoie.fr] 22"
    test = test & "n'importe quoi"  ' ------------IMPORTANT  (une suele lettre suffi, a par exemple
    Dim toto As Boolean
    For i = 1 To Len(test)
        If IsNumeric(Mid(test, i, 1)) Or (Mid(test, i, 1) = " " And Not toto) Then
            toto = False
            sortie = sortie & Mid(test, i, 1)
        Else
            If Not toto And sortie <> "" Then
               List1.AddItem Trim(sortie): sortie = ""
            End If
            toto = True
        End If
    Next i
End Sub
0
Rejoignez-nous