Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

IBAN nummer automatisch uitrekenen (Mod 10,97 ISO 7064)

669 views
Skip to first unread message

RonaldF

unread,
Jul 14, 2009, 2:46:23 AM7/14/09
to
Hallo,

Ik ben op zoek naar een functie in Excel (UDF waarschijnlijk) om
automatisch het IBAN-nummer (of SEPA-nummer) te berekenen voor een
Duitse bankrekeningnummer.

Zie hieronder de berekening, zoals die uitgevoerd zou moeten worden:
Bankleitzahl (8n): 37040044
Konto (10n): 532013000
Landcode (2a): DE

DE wordt omgezet naar het getal 1314 (positie in het alfabet + 10,
A=0)

Het getal wat als basis dient wordt dan: 37040044532013000131400
(BLZ + Konto + Landcode + "00")

Ik moet dan het controle getal bepalen door middel van onderstaande
formule:
mod(98 - mod(basisgetal * 100,97),97)

Als ik het zelf doe in Excel dan lukt het niet, omdat de getallen na
de 15de positie wegvallen.

Ik heb al op internet gezocht en wel wat gevonden, maar ik krijg het
niet aan de praat.
Misschien dat er iemand binnen de groep is die dit al standaard heeft.

Alvast bedankt.

Ronald Ferdinandus.

jan

unread,
Jul 14, 2009, 9:05:56 AM7/14/09
to
Ronald,

Kun je hier wat mee:

Option Explicit

Plaats deze functies in een algemene module

Function IBAN(BLZ As String, Konto As String, LC As String)
Dim strLC As String
Dim varResult As Variant
Dim intC As Long
Dim i As Integer
strLC = Asc(UCase(Left(LC, 1))) - 55 & Asc(UCase(Right(LC, 1))) - 55
varResult = BLZ & Konto & strLC & "00" '
IBAN = varResult
End Function

Function Modulo(strGetal As String, intRest As Integer)
Dim intC As Long
Dim i As Integer
For i = Len(strGetal) To 1 Step -1
intC = intC + (Mid(strGetal, i, 1) * _
TienTallen(Len(strGetal) - i, intRest)) Mod intRest
Next
intC = intC Mod intRest
Modulo = intC
End Function

Function TienTallen(intMacht As Integer, intRest As Integer)
Select Case intMacht
Case Is <= 8
TienTallen = 10 ^ intMacht Mod intRest
Case Is <= 16
TienTallen = TienTallen(8, intRest) * _
(10 ^ (intMacht - 8) Mod intRest) Mod intRest
Case Is <= 24
TienTallen = TienTallen(16, intRest) * _
(10 ^ (intMacht - 16) Mod intRest) Mod intRest
Case Else
MsgBox "Getal is te lang"
End Select
End Function

De eerste functie (IBAN) levert het IBAN nummer op volgens jouw beschrijving
De tweede functie is (Modulo) is een vervanging voor de functie Rest (of onder VBA
mod).
Deze functie maakt gebrik van de functie TienTallen.

Jan


RonaldF

unread,
Jul 14, 2009, 9:50:27 AM7/14/09
to

Hallo Jan,

Hartstikke bedankt.

Ik heb het bij 2 nummers gecontroleerd via internet en de uitkomst
klopt.

Ik heb alleen de format van de BLZ en Konto nummer aangepast (moeten 8
en 10 posities lang zijn, via Format)

Nogmaals bedankt.

Ronald Ferdinandus.

0 new messages