Function ExtraireNombres(s As String) As String()
Dim tmp As String
Dim res As String
Dim car As String
Dim dercar As String
tmp = s
dercar = " "
While Len(tmp) <> 0
car = Left$(tmp, 1)
If (car >= "0" And car <= "9") Or car = "." Then
res = res & car
dercar = car
Else
If dercar <> " " Then
res = res & " "
dercar = " "
End If
End If
tmp = Mid$(tmp, 2)
Wend
ExtraireNombres = Split(RTrim$(res), " ")
End Function
Sub test()
Dim s As String
Dim a() As String
Dim i As Integer
s = " 124.5kg 45 toto 65titi"
a = ExtraireNombres(s)
''''''''''''''''''''''''''''''''''ceci a eté modifié par Clive Lumb
pour envoyer chaque chaine numerique dans un seul champ avec un espace
entre chaque chaine
'Vider le textbox
Forms!TERMINAL.toutNUMERIQUE = ""
For i = LBound(a) To UBound(a)
'Ajouter chaine de chaque numéro, suivie par une espace.
Forms!TERMINAL.toutNUMERIQUE = Forms!TERMINAL.toutNUMERIQUE &
Str$(a(i)) & " "
Next
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''
en fait j aimerais avoir une deuxieme solution a mon probleme qui serais
d'envoyer la premiere chaine dans champ1
la deuxieme dans champ2 et la troisieme dans champ3
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Patrice Henrio
Voici ce que tu peux faire en utilisant la fonction que j'ai passé à Driss On suppose que tes nombres ne sont jamais négatifs, que le séparateur des décimal est le point et qu'il n'y a pas d'autre point dans ta chaîne à décoder.
Function ExtraitNum(MaChaine As String) As String Dim Car As String Dim NouvChaine As String Dim Ecriturenombre as boolean
NouvChaine = vbNullString For I = 1 To Len(MaChaine) ' extraction de chaque caractère Car = Mid$(MaChaine, I, 1)
Select Case Asc(Car) Case 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, asc(".") ' codes ascii des chiffres de 0 à 9 If Not EcritureNombre then NouvChaine=NouveChaine & " " NouvChaine = NouvChaine & Car EcritureNombre=true Case Else EcritureNombreúlse End Select Next ' on enlève ensuite les espaces extérieur NouvChaine = trim$(NouvChaine)
ExtraitNum = NouvChaine End Function
Ensuite dans ta forme tu auras le code suivant (on suppose que ChaineLue est la chaine que tu as lue sur la COM)
"lou" a écrit dans le message de news: 433326de$0$16923$
ce code a eté réalisé par FRED
Function ExtraireNombres(s As String) As String() Dim tmp As String Dim res As String Dim car As String Dim dercar As String tmp = s dercar = " " While Len(tmp) <> 0 car = Left$(tmp, 1) If (car >= "0" And car <= "9") Or car = "." Then res = res & car dercar = car Else If dercar <> " " Then res = res & " " dercar = " " End If End If tmp = Mid$(tmp, 2) Wend ExtraireNombres = Split(RTrim$(res), " ") End Function
Sub test() Dim s As String Dim a() As String Dim i As Integer s = " 124.5kg 45 toto 65titi" a = ExtraireNombres(s)
''''''''''''''''''''''''''''''''''ceci a eté modifié par Clive Lumb pour envoyer chaque chaine numerique dans un seul champ avec un espace entre chaque chaine
'Vider le textbox Forms!TERMINAL.toutNUMERIQUE = "" For i = LBound(a) To UBound(a) 'Ajouter chaine de chaque numéro, suivie par une espace.
Forms!TERMINAL.toutNUMERIQUE = Forms!TERMINAL.toutNUMERIQUE & Str$(a(i)) & " " Next
End Sub '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''
en fait j aimerais avoir une deuxieme solution a mon probleme qui serais d'envoyer la premiere chaine dans champ1 la deuxieme dans champ2 et la troisieme dans champ3
merci de votre aide lou
Voici ce que tu peux faire en utilisant la fonction que j'ai passé à Driss
On suppose que tes nombres ne sont jamais négatifs, que le séparateur des
décimal est le point et qu'il n'y a pas d'autre point dans ta chaîne à
décoder.
Function ExtraitNum(MaChaine As String) As String
Dim Car As String
Dim NouvChaine As String
Dim Ecriturenombre as boolean
NouvChaine = vbNullString
For I = 1 To Len(MaChaine)
' extraction de chaque caractère
Car = Mid$(MaChaine, I, 1)
Select Case Asc(Car)
Case 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, asc(".") ' codes
ascii des chiffres de 0 à 9
If Not EcritureNombre then NouvChaine=NouveChaine & " "
NouvChaine = NouvChaine & Car
EcritureNombre=true
Case Else
EcritureNombreúlse
End Select
Next
' on enlève ensuite les espaces extérieur
NouvChaine = trim$(NouvChaine)
ExtraitNum = NouvChaine
End Function
Ensuite dans ta forme tu auras le code suivant (on suppose que ChaineLue est
la chaine que tu as lue sur la COM)
"lou" <colluluigi@skynet.be> a écrit dans le message de news:
433326de$0$16923$ba620e4c@news.skynet.be...
ce code a eté réalisé par FRED
Function ExtraireNombres(s As String) As String()
Dim tmp As String
Dim res As String
Dim car As String
Dim dercar As String
tmp = s
dercar = " "
While Len(tmp) <> 0
car = Left$(tmp, 1)
If (car >= "0" And car <= "9") Or car = "." Then
res = res & car
dercar = car
Else
If dercar <> " " Then
res = res & " "
dercar = " "
End If
End If
tmp = Mid$(tmp, 2)
Wend
ExtraireNombres = Split(RTrim$(res), " ")
End Function
Sub test()
Dim s As String
Dim a() As String
Dim i As Integer
s = " 124.5kg 45 toto 65titi"
a = ExtraireNombres(s)
''''''''''''''''''''''''''''''''''ceci a eté modifié par Clive Lumb
pour envoyer chaque chaine numerique dans un seul champ avec un espace
entre chaque chaine
'Vider le textbox
Forms!TERMINAL.toutNUMERIQUE = ""
For i = LBound(a) To UBound(a)
'Ajouter chaine de chaque numéro, suivie par une espace.
Forms!TERMINAL.toutNUMERIQUE = Forms!TERMINAL.toutNUMERIQUE &
Str$(a(i)) & " "
Next
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''
en fait j aimerais avoir une deuxieme solution a mon probleme qui serais
d'envoyer la premiere chaine dans champ1
la deuxieme dans champ2 et la troisieme dans champ3
Voici ce que tu peux faire en utilisant la fonction que j'ai passé à Driss On suppose que tes nombres ne sont jamais négatifs, que le séparateur des décimal est le point et qu'il n'y a pas d'autre point dans ta chaîne à décoder.
Function ExtraitNum(MaChaine As String) As String Dim Car As String Dim NouvChaine As String Dim Ecriturenombre as boolean
NouvChaine = vbNullString For I = 1 To Len(MaChaine) ' extraction de chaque caractère Car = Mid$(MaChaine, I, 1)
Select Case Asc(Car) Case 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, asc(".") ' codes ascii des chiffres de 0 à 9 If Not EcritureNombre then NouvChaine=NouveChaine & " " NouvChaine = NouvChaine & Car EcritureNombre=true Case Else EcritureNombreúlse End Select Next ' on enlève ensuite les espaces extérieur NouvChaine = trim$(NouvChaine)
ExtraitNum = NouvChaine End Function
Ensuite dans ta forme tu auras le code suivant (on suppose que ChaineLue est la chaine que tu as lue sur la COM)
"lou" a écrit dans le message de news: 433326de$0$16923$
ce code a eté réalisé par FRED
Function ExtraireNombres(s As String) As String() Dim tmp As String Dim res As String Dim car As String Dim dercar As String tmp = s dercar = " " While Len(tmp) <> 0 car = Left$(tmp, 1) If (car >= "0" And car <= "9") Or car = "." Then res = res & car dercar = car Else If dercar <> " " Then res = res & " " dercar = " " End If End If tmp = Mid$(tmp, 2) Wend ExtraireNombres = Split(RTrim$(res), " ") End Function
Sub test() Dim s As String Dim a() As String Dim i As Integer s = " 124.5kg 45 toto 65titi" a = ExtraireNombres(s)
''''''''''''''''''''''''''''''''''ceci a eté modifié par Clive Lumb pour envoyer chaque chaine numerique dans un seul champ avec un espace entre chaque chaine
'Vider le textbox Forms!TERMINAL.toutNUMERIQUE = "" For i = LBound(a) To UBound(a) 'Ajouter chaine de chaque numéro, suivie par une espace.
Forms!TERMINAL.toutNUMERIQUE = Forms!TERMINAL.toutNUMERIQUE & Str$(a(i)) & " " Next
End Sub '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '''''''''
en fait j aimerais avoir une deuxieme solution a mon probleme qui serais d'envoyer la premiere chaine dans champ1 la deuxieme dans champ2 et la troisieme dans champ3
probleme sur cette ligne j'ai bien quelque chose dans "ValeursSousFormeDeChaine" mais rien dans "ValeursSousFormeTableau" la fonction split ne marche pas merci de corriger
lou
"Patrice Henrio" a écrit dans le message de news:
Voici ce que tu peux faire en utilisant la fonction que j'ai passé à Driss On suppose que tes nombres ne sont jamais négatifs, que le séparateur des décimal est le point et qu'il n'y a pas d'autre point dans ta chaîne à décoder.
Function ExtraitNum(MaChaine As String) As String Dim Car As String Dim NouvChaine As String Dim Ecriturenombre as boolean
NouvChaine = vbNullString For I = 1 To Len(MaChaine) ' extraction de chaque caractère Car = Mid$(MaChaine, I, 1)
Select Case Asc(Car) Case 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, asc(".") ' codes ascii des chiffres de 0 à 9 If Not EcritureNombre then NouvChaine=NouveChaine & " " NouvChaine = NouvChaine & Car EcritureNombre=true Case Else EcritureNombreúlse End Select Next ' on enlève ensuite les espaces extérieur NouvChaine = trim$(NouvChaine)
ExtraitNum = NouvChaine End Function
Ensuite dans ta forme tu auras le code suivant (on suppose que ChaineLue
"lou" a écrit dans le message de news: 433326de$0$16923$ > ce code a eté réalisé par FRED > > Function ExtraireNombres(s As String) As String() > Dim tmp As String > Dim res As String > Dim car As String > Dim dercar As String > tmp = s > dercar = " " > While Len(tmp) <> 0 > car = Left$(tmp, 1) > If (car >= "0" And car <= "9") Or car = "." Then > res = res & car > dercar = car > Else > If dercar <> " " Then > res = res & " " > dercar = " " > End If > End If > tmp = Mid$(tmp, 2) > Wend > ExtraireNombres = Split(RTrim$(res), " ") > End Function > > Sub test() > Dim s As String > Dim a() As String > Dim i As Integer > s = " 124.5kg 45 toto 65titi" > a = ExtraireNombres(s) > > ''''''''''''''''''''''''''''''''''ceci a eté modifié par Clive Lumb > pour envoyer chaque chaine numerique dans un seul champ avec un espace > entre chaque chaine > > 'Vider le textbox > Forms!TERMINAL.toutNUMERIQUE = "" > For i = LBound(a) To UBound(a) > 'Ajouter chaine de chaque numéro, suivie par une espace. > > Forms!TERMINAL.toutNUMERIQUE = Forms!TERMINAL.toutNUMERIQUE & > Str$(a(i)) & " " > Next > > End Sub >
> ''''''''' > > en fait j aimerais avoir une deuxieme solution a mon probleme qui serais > d'envoyer la premiere chaine dans champ1 > la deuxieme dans champ2 et la troisieme dans champ3 > > merci de votre aide > lou > > > >
probleme sur cette ligne j'ai bien quelque chose dans
"ValeursSousFormeDeChaine" mais rien dans "ValeursSousFormeTableau"
la fonction split ne marche pas
merci de corriger
lou
"Patrice Henrio" <patrice.henrio@laposte.net> a écrit dans le message de
news: eSK1BR8vFHA.3556@TK2MSFTNGP12.phx.gbl...
Voici ce que tu peux faire en utilisant la fonction que j'ai passé à Driss
On suppose que tes nombres ne sont jamais négatifs, que le séparateur des
décimal est le point et qu'il n'y a pas d'autre point dans ta chaîne à
décoder.
Function ExtraitNum(MaChaine As String) As String
Dim Car As String
Dim NouvChaine As String
Dim Ecriturenombre as boolean
NouvChaine = vbNullString
For I = 1 To Len(MaChaine)
' extraction de chaque caractère
Car = Mid$(MaChaine, I, 1)
Select Case Asc(Car)
Case 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, asc(".") ' codes
ascii des chiffres de 0 à 9
If Not EcritureNombre then NouvChaine=NouveChaine & " "
NouvChaine = NouvChaine & Car
EcritureNombre=true
Case Else
EcritureNombreúlse
End Select
Next
' on enlève ensuite les espaces extérieur
NouvChaine = trim$(NouvChaine)
ExtraitNum = NouvChaine
End Function
Ensuite dans ta forme tu auras le code suivant (on suppose que ChaineLue
"lou" <colluluigi@skynet.be> a écrit dans le message de news:
433326de$0$16923$ba620e4c@news.skynet.be...
> ce code a eté réalisé par FRED
>
> Function ExtraireNombres(s As String) As String()
> Dim tmp As String
> Dim res As String
> Dim car As String
> Dim dercar As String
> tmp = s
> dercar = " "
> While Len(tmp) <> 0
> car = Left$(tmp, 1)
> If (car >= "0" And car <= "9") Or car = "." Then
> res = res & car
> dercar = car
> Else
> If dercar <> " " Then
> res = res & " "
> dercar = " "
> End If
> End If
> tmp = Mid$(tmp, 2)
> Wend
> ExtraireNombres = Split(RTrim$(res), " ")
> End Function
>
> Sub test()
> Dim s As String
> Dim a() As String
> Dim i As Integer
> s = " 124.5kg 45 toto 65titi"
> a = ExtraireNombres(s)
>
> ''''''''''''''''''''''''''''''''''ceci a eté modifié par Clive Lumb
> pour envoyer chaque chaine numerique dans un seul champ avec un espace
> entre chaque chaine
>
> 'Vider le textbox
> Forms!TERMINAL.toutNUMERIQUE = ""
> For i = LBound(a) To UBound(a)
> 'Ajouter chaine de chaque numéro, suivie par une espace.
>
> Forms!TERMINAL.toutNUMERIQUE = Forms!TERMINAL.toutNUMERIQUE &
> Str$(a(i)) & " "
> Next
>
> End Sub
>
> '''''''''
>
> en fait j aimerais avoir une deuxieme solution a mon probleme qui serais
> d'envoyer la premiere chaine dans champ1
> la deuxieme dans champ2 et la troisieme dans champ3
>
> merci de votre aide
> lou
>
>
>
>
probleme sur cette ligne j'ai bien quelque chose dans "ValeursSousFormeDeChaine" mais rien dans "ValeursSousFormeTableau" la fonction split ne marche pas merci de corriger
lou
"Patrice Henrio" a écrit dans le message de news:
Voici ce que tu peux faire en utilisant la fonction que j'ai passé à Driss On suppose que tes nombres ne sont jamais négatifs, que le séparateur des décimal est le point et qu'il n'y a pas d'autre point dans ta chaîne à décoder.
Function ExtraitNum(MaChaine As String) As String Dim Car As String Dim NouvChaine As String Dim Ecriturenombre as boolean
NouvChaine = vbNullString For I = 1 To Len(MaChaine) ' extraction de chaque caractère Car = Mid$(MaChaine, I, 1)
Select Case Asc(Car) Case 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, asc(".") ' codes ascii des chiffres de 0 à 9 If Not EcritureNombre then NouvChaine=NouveChaine & " " NouvChaine = NouvChaine & Car EcritureNombre=true Case Else EcritureNombreúlse End Select Next ' on enlève ensuite les espaces extérieur NouvChaine = trim$(NouvChaine)
ExtraitNum = NouvChaine End Function
Ensuite dans ta forme tu auras le code suivant (on suppose que ChaineLue
"lou" a écrit dans le message de news: 433326de$0$16923$ > ce code a eté réalisé par FRED > > Function ExtraireNombres(s As String) As String() > Dim tmp As String > Dim res As String > Dim car As String > Dim dercar As String > tmp = s > dercar = " " > While Len(tmp) <> 0 > car = Left$(tmp, 1) > If (car >= "0" And car <= "9") Or car = "." Then > res = res & car > dercar = car > Else > If dercar <> " " Then > res = res & " " > dercar = " " > End If > End If > tmp = Mid$(tmp, 2) > Wend > ExtraireNombres = Split(RTrim$(res), " ") > End Function > > Sub test() > Dim s As String > Dim a() As String > Dim i As Integer > s = " 124.5kg 45 toto 65titi" > a = ExtraireNombres(s) > > ''''''''''''''''''''''''''''''''''ceci a eté modifié par Clive Lumb > pour envoyer chaque chaine numerique dans un seul champ avec un espace > entre chaque chaine > > 'Vider le textbox > Forms!TERMINAL.toutNUMERIQUE = "" > For i = LBound(a) To UBound(a) > 'Ajouter chaine de chaque numéro, suivie par une espace. > > Forms!TERMINAL.toutNUMERIQUE = Forms!TERMINAL.toutNUMERIQUE & > Str$(a(i)) & " " > Next > > End Sub >
> ''''''''' > > en fait j aimerais avoir une deuxieme solution a mon probleme qui serais > d'envoyer la premiere chaine dans champ1 > la deuxieme dans champ2 et la troisieme dans champ3 > > merci de votre aide > lou > > > >
lou
trouvé erreur de frappe mes excuses
c'est ok encore merci
"lou" a écrit dans le message de news: 43334114$0$20914$
probleme sur cette ligne j'ai bien quelque chose dans "ValeursSousFormeDeChaine" mais rien dans "ValeursSousFormeTableau" la fonction split ne marche pas merci de corriger
lou
"Patrice Henrio" a écrit dans le message de news: > Voici ce que tu peux faire en utilisant la fonction que j'ai passé à
Driss
> On suppose que tes nombres ne sont jamais négatifs, que le séparateur
des
> décimal est le point et qu'il n'y a pas d'autre point dans ta chaîne à > décoder. > > Function ExtraitNum(MaChaine As String) As String > Dim Car As String > Dim NouvChaine As String > Dim Ecriturenombre as boolean > > NouvChaine = vbNullString > For I = 1 To Len(MaChaine) > ' extraction de chaque caractère > Car = Mid$(MaChaine, I, 1) > > Select Case Asc(Car) > Case 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, asc(".") ' codes > ascii des chiffres de 0 à 9 > If Not EcritureNombre then NouvChaine=NouveChaine & " " > NouvChaine = NouvChaine & Car > EcritureNombre=true > Case Else > EcritureNombreúlse > End Select > Next > ' on enlève ensuite les espaces extérieur > NouvChaine = trim$(NouvChaine) > > ExtraitNum = NouvChaine > End Function > > Ensuite dans ta forme tu auras le code suivant (on suppose que ChaineLue est > la chaine que tu as lue sur la COM) > > ValeursSousFormeDeChaine=ExtraitNum(ChaineLue) > ValeursSousFormeTableau=Split(ValeursSousFormeDeChaine," ") > Champ1=ValeursSousFormeTableau(0) > Champ2=ValeursSousFormeTableau(1) > Champ3=ValeursSousFormeTableau(2) > > ... etc si tu as plus de trois champs. > > > "lou" a écrit dans le message de news: > 433326de$0$16923$ > > ce code a eté réalisé par FRED > > > > Function ExtraireNombres(s As String) As String() > > Dim tmp As String > > Dim res As String > > Dim car As String > > Dim dercar As String > > tmp = s > > dercar = " " > > While Len(tmp) <> 0 > > car = Left$(tmp, 1) > > If (car >= "0" And car <= "9") Or car = "." Then > > res = res & car > > dercar = car > > Else > > If dercar <> " " Then > > res = res & " " > > dercar = " " > > End If > > End If > > tmp = Mid$(tmp, 2) > > Wend > > ExtraireNombres = Split(RTrim$(res), " ") > > End Function > > > > Sub test() > > Dim s As String > > Dim a() As String > > Dim i As Integer > > s = " 124.5kg 45 toto 65titi" > > a = ExtraireNombres(s) > > > > ''''''''''''''''''''''''''''''''''ceci a eté modifié par Clive Lumb > > pour envoyer chaque chaine numerique dans un seul champ avec un espace > > entre chaque chaine > > > > 'Vider le textbox > > Forms!TERMINAL.toutNUMERIQUE = "" > > For i = LBound(a) To UBound(a) > > 'Ajouter chaine de chaque numéro, suivie par une espace. > > > > Forms!TERMINAL.toutNUMERIQUE = Forms!TERMINAL.toutNUMERIQUE & > > Str$(a(i)) & " " > > Next > > > > End Sub > >
> > ''''''''' > > > > en fait j aimerais avoir une deuxieme solution a mon probleme qui
serais
> > d'envoyer la premiere chaine dans champ1 > > la deuxieme dans champ2 et la troisieme dans champ3 > > > > merci de votre aide > > lou > > > > > > > > > >
trouvé erreur de frappe mes excuses
c'est ok
encore merci
"lou" <colluluigi@skynet.be> a écrit dans le message de news:
43334114$0$20914$ba620e4c@news.skynet.be...
probleme sur cette ligne j'ai bien quelque chose dans
"ValeursSousFormeDeChaine" mais rien dans "ValeursSousFormeTableau"
la fonction split ne marche pas
merci de corriger
lou
"Patrice Henrio" <patrice.henrio@laposte.net> a écrit dans le message de
news: eSK1BR8vFHA.3556@TK2MSFTNGP12.phx.gbl...
> Voici ce que tu peux faire en utilisant la fonction que j'ai passé à
Driss
> On suppose que tes nombres ne sont jamais négatifs, que le séparateur
des
> décimal est le point et qu'il n'y a pas d'autre point dans ta chaîne à
> décoder.
>
> Function ExtraitNum(MaChaine As String) As String
> Dim Car As String
> Dim NouvChaine As String
> Dim Ecriturenombre as boolean
>
> NouvChaine = vbNullString
> For I = 1 To Len(MaChaine)
> ' extraction de chaque caractère
> Car = Mid$(MaChaine, I, 1)
>
> Select Case Asc(Car)
> Case 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, asc(".") ' codes
> ascii des chiffres de 0 à 9
> If Not EcritureNombre then NouvChaine=NouveChaine & " "
> NouvChaine = NouvChaine & Car
> EcritureNombre=true
> Case Else
> EcritureNombreúlse
> End Select
> Next
> ' on enlève ensuite les espaces extérieur
> NouvChaine = trim$(NouvChaine)
>
> ExtraitNum = NouvChaine
> End Function
>
> Ensuite dans ta forme tu auras le code suivant (on suppose que ChaineLue
est
> la chaine que tu as lue sur la COM)
>
> ValeursSousFormeDeChaine=ExtraitNum(ChaineLue)
> ValeursSousFormeTableau=Split(ValeursSousFormeDeChaine," ")
> Champ1=ValeursSousFormeTableau(0)
> Champ2=ValeursSousFormeTableau(1)
> Champ3=ValeursSousFormeTableau(2)
>
> ... etc si tu as plus de trois champs.
>
>
> "lou" <colluluigi@skynet.be> a écrit dans le message de news:
> 433326de$0$16923$ba620e4c@news.skynet.be...
> > ce code a eté réalisé par FRED
> >
> > Function ExtraireNombres(s As String) As String()
> > Dim tmp As String
> > Dim res As String
> > Dim car As String
> > Dim dercar As String
> > tmp = s
> > dercar = " "
> > While Len(tmp) <> 0
> > car = Left$(tmp, 1)
> > If (car >= "0" And car <= "9") Or car = "." Then
> > res = res & car
> > dercar = car
> > Else
> > If dercar <> " " Then
> > res = res & " "
> > dercar = " "
> > End If
> > End If
> > tmp = Mid$(tmp, 2)
> > Wend
> > ExtraireNombres = Split(RTrim$(res), " ")
> > End Function
> >
> > Sub test()
> > Dim s As String
> > Dim a() As String
> > Dim i As Integer
> > s = " 124.5kg 45 toto 65titi"
> > a = ExtraireNombres(s)
> >
> > ''''''''''''''''''''''''''''''''''ceci a eté modifié par Clive Lumb
> > pour envoyer chaque chaine numerique dans un seul champ avec un espace
> > entre chaque chaine
> >
> > 'Vider le textbox
> > Forms!TERMINAL.toutNUMERIQUE = ""
> > For i = LBound(a) To UBound(a)
> > 'Ajouter chaine de chaque numéro, suivie par une espace.
> >
> > Forms!TERMINAL.toutNUMERIQUE = Forms!TERMINAL.toutNUMERIQUE &
> > Str$(a(i)) & " "
> > Next
> >
> > End Sub
> >
> > '''''''''
> >
> > en fait j aimerais avoir une deuxieme solution a mon probleme qui
serais
> > d'envoyer la premiere chaine dans champ1
> > la deuxieme dans champ2 et la troisieme dans champ3
> >
> > merci de votre aide
> > lou
> >
> >
> >
> >
>
>
probleme sur cette ligne j'ai bien quelque chose dans "ValeursSousFormeDeChaine" mais rien dans "ValeursSousFormeTableau" la fonction split ne marche pas merci de corriger
lou
"Patrice Henrio" a écrit dans le message de news: > Voici ce que tu peux faire en utilisant la fonction que j'ai passé à
Driss
> On suppose que tes nombres ne sont jamais négatifs, que le séparateur
des
> décimal est le point et qu'il n'y a pas d'autre point dans ta chaîne à > décoder. > > Function ExtraitNum(MaChaine As String) As String > Dim Car As String > Dim NouvChaine As String > Dim Ecriturenombre as boolean > > NouvChaine = vbNullString > For I = 1 To Len(MaChaine) > ' extraction de chaque caractère > Car = Mid$(MaChaine, I, 1) > > Select Case Asc(Car) > Case 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, asc(".") ' codes > ascii des chiffres de 0 à 9 > If Not EcritureNombre then NouvChaine=NouveChaine & " " > NouvChaine = NouvChaine & Car > EcritureNombre=true > Case Else > EcritureNombreúlse > End Select > Next > ' on enlève ensuite les espaces extérieur > NouvChaine = trim$(NouvChaine) > > ExtraitNum = NouvChaine > End Function > > Ensuite dans ta forme tu auras le code suivant (on suppose que ChaineLue est > la chaine que tu as lue sur la COM) > > ValeursSousFormeDeChaine=ExtraitNum(ChaineLue) > ValeursSousFormeTableau=Split(ValeursSousFormeDeChaine," ") > Champ1=ValeursSousFormeTableau(0) > Champ2=ValeursSousFormeTableau(1) > Champ3=ValeursSousFormeTableau(2) > > ... etc si tu as plus de trois champs. > > > "lou" a écrit dans le message de news: > 433326de$0$16923$ > > ce code a eté réalisé par FRED > > > > Function ExtraireNombres(s As String) As String() > > Dim tmp As String > > Dim res As String > > Dim car As String > > Dim dercar As String > > tmp = s > > dercar = " " > > While Len(tmp) <> 0 > > car = Left$(tmp, 1) > > If (car >= "0" And car <= "9") Or car = "." Then > > res = res & car > > dercar = car > > Else > > If dercar <> " " Then > > res = res & " " > > dercar = " " > > End If > > End If > > tmp = Mid$(tmp, 2) > > Wend > > ExtraireNombres = Split(RTrim$(res), " ") > > End Function > > > > Sub test() > > Dim s As String > > Dim a() As String > > Dim i As Integer > > s = " 124.5kg 45 toto 65titi" > > a = ExtraireNombres(s) > > > > ''''''''''''''''''''''''''''''''''ceci a eté modifié par Clive Lumb > > pour envoyer chaque chaine numerique dans un seul champ avec un espace > > entre chaque chaine > > > > 'Vider le textbox > > Forms!TERMINAL.toutNUMERIQUE = "" > > For i = LBound(a) To UBound(a) > > 'Ajouter chaine de chaque numéro, suivie par une espace. > > > > Forms!TERMINAL.toutNUMERIQUE = Forms!TERMINAL.toutNUMERIQUE & > > Str$(a(i)) & " " > > Next > > > > End Sub > >
> > ''''''''' > > > > en fait j aimerais avoir une deuxieme solution a mon probleme qui
serais
> > d'envoyer la premiere chaine dans champ1 > > la deuxieme dans champ2 et la troisieme dans champ3 > > > > merci de votre aide > > lou > > > > > > > > > >