Ce code à pour but de diviser un entier sous forme de chaine de caractères de longeur quelconque pour en obtenir le résultat (entier) et le reste.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 Option Compare Database Option Explicit Function lDiv(numerateur As String, diviseur As Long, ByRef reste As Long) As String Dim part As Integer Dim c As String Dim res As String res = "" Do While Len(numerateur) > 0 c = c & Left$(numerateur, 1) numerateur = Right$(numerateur, Len(numerateur) - 1) If CLng(c) < diviseur Then If res <> "" Then res = res & "0" End If Else part = CStr((CLng(c) \ diviseur)) c = CStr(CLng(c) - (part * diviseur)) res = res & CStr(part) End If Loop lDiv = res reste = CLng(c) End Function Function LongToBinaire(unevaleur As String) As String Dim reste As Long Dim res As String Do While Len(unevaleur) > 0 unevaleur = lDiv(unevaleur, 2, reste) res = CStr(reste) & res Loop LongToBinaire = res End Function Sub test() Dim reste As Long Dim numsecu As String ' Vérification d'un numero de sécu ' la clé d'un n° de sécu correpond à 97 - (le reste de la division du n° de secu / 97) numsecu = "1640183137262" lDiv numsecu, 97, reste Debug.Print "Clé = " & 97 - reste ' Conversion d'un entier trèèèèèssss long en binaire Debug.Print LongToBinaire("65536564564564654658978978978978798798") End Sub
2 exemples sont inclus, la vérification d'un n° de sécu français et la conversion d'un entier très long sous forme binaire.
Partager