Probleme compter combien de chaines de 16 chiffres y a dans un texte

arnohoho Messages postés 77 Date d'inscription mercredi 17 septembre 2003 Statut Membre Dernière intervention 24 août 2005 - 7 mars 2004 à 16:07
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 - 8 mars 2004 à 09:54
'voila je veux sauver un une chaine de 16 chiffre pas plus ni
'moins donc mon code verifie le comptenu chaque fois qu'il
'rancontre un chiffre il la stock dans puk (variable)
'mais lorsqu'il
'rencontre un caractère autre qu'un chiffre puk revient a
'vbnull losque len(puk) = 16 il l'enregistre dans un fichier
'ini mais il ne faut pas qu'il soit plus long que 16
'PS le text est dans un richtextbox et dans des cadre comme
'dans exel

Function sauvernumero()
Dim puk

Dim plouk
inscris = 0
chiffre = 0
space = 0
For i = 1 To Len(Form1.RTB.Text) Step 1 'no comment
tableau(i) = Mid(Form1.RTB.Text, i, 1)

Select Case tableau(i)
Case "a" To "z", "A" To "Z", "é", "ê", "ë", "à", "â", "ä", "î", "ï", "ç", "ù", "û", " ", "?", "!", ".", "`", "Z", "'", ""","
puk = vbnull
If Len(plouk) = 16 Then
inscris = inscris + 1
Form1.Label1.Caption = inscris
Form1.Label2.Caption = puk
EcrireINI "numero", Form1.Label1.Caption, Form1.Label2.Caption
Form1.Caption = inscris
Form1.Label1.Caption = "total"
Form1.Label2.Caption = inscris
EcrireINI "nombre", Form1.Label1.Caption, Form1.Label2.Caption
Form1.Caption = inscris
puk = vbnull
plouk = vbnull
End If
End Select
If tableau(i) "0" Or tableau(i) "1" Or tableau(i) = "2" Or tableau(i) = "3" Or tableau(i) = "4" Or tableau(i) = "5" Or tableau(i) = "6" Or tableau(i) = "7" Or tableau(i) = "8" Or tableau(i) = "9" Then
puk = puk & tableau(i)
plouk = vbnull
If Len(puk) = 16 Then

plouk = puk

End If
End If

Next i
End Function
'merci de votre aide

1 réponse

econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
8 mars 2004 à 09:54
Les expressions régulières sont faites pour ton problème. Je pense que le code ci dessous (tapé rapidement et pas vérifié)doit corriger ton problème ...

' IMPORTANT
' Référence : Microsoft VB Scripts Regular Expressions 5.5

Sub extraire(chaineATraiter As String)
dim FORMAT_RECHERCHE as RegExp
dim MATCHES, MATCH as Object
dim result as string
set FORMAT_RECHERCHE = New RegExp
FORMAT_RECHERCHE.pattern = "[^0-9][0-9]{16}[^0-9]"
set MATCHES = FORMAT_RECHERCHE.Execute(chaineATraiter)

for Each MATCH In MATCHES
If Len(MATCH.Value) = 18 Then
result = MATCH.Value
msgBox mid(result, 2, len(result) - 2)
end if
next
end sub

private sub Command1_Click()
MsgBox extraire("erzrze1234567890123456£f")
end sub

Explication du pattern : "Un caractère qui n'est pas un chiffre, suivi par 16 chiffres puis un caractère qui n'est pas un chiffre"

Manu
0
Rejoignez-nous