11-proef in VBA

  • Onderwerp starter Onderwerp starter tigo
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

tigo

Gebruiker
Lid geworden
18 nov 2006
Berichten
69
Hoi allemaal,

ik heb een vraagje. Heeft iemand voor mij de source van een 11-proef (om banknummers te controleren) test in VBA? Alvast bedankt.

Tigo
 
Die code is een paar maanden geleden wel aan bod gekomen; weet zo gauw niet meer in welke post.
 
Heb even gegoogled, en zelf een functie gemaakt:

Code:
Function ElfProef(Rekening As String) As Boolean
Dim i As Integer, iR As Boolean, iTest As Integer, iRest As Integer

    If Len(Nz(Rekening, "")) < 9 Or Len(Nz(Rekening, "")) > 10 Then
        ElfProef = False
        Exit Function
    End If
    
    If Len(Nz(Rekening, "")) = 9 Then iR = True
    
    If iR = True Then
        For i = 9 To 1 Step -1
            iTest = iTest + (i * Val(Mid(Rekening, (10-i), 1)))
        Next i
    Else
        For i = 1 To 10
           iTest = iTest + (i * Val(Mid(Rekening, i, 1)))
        Next i
    End If
    
    iRest = iTest Mod 11
    If iRest = 0 Then
        ElfProef = True
    Else
        ElfProef = False
    End If

End Function
 
Laatst bewerkt:
Bedankt

Michel,

reuze bedankt. En zo eenvoudig. Daar was ik zelf niet op gekomen :thumb: ik moet nog veel leren

Gr. Tigo
 
De elfproef is volgens mij als volgt:

Voorbeeld 9-cijferig bankrekeningnummer: 123456789
1*9 + 2*8 + 3*7 + 4*6 + 5*5 + 6*4 + 7*3 + 8*2 + 9*1 = 165
En 165 is deelbaar door 11, dus bankreknr is correct.
De bijbehorende code is:
Code:
For i = 1 To 9
        iTest = iTest + ((10 - i) * Val(Mid(Rekening, i, 1)))
Next i

Met de code:
Code:
For i = 9 To 1 Step -1
iTest = iTest + (i * Val(Mid(Rekening, i, 1)))

wordt de volgende berekening gedaan:
9*9 + 8*8 + 7*7 + 6*6 + 5*5 + 4*4 + 3*3 + 2*2 + 1*1 = 285

En 285 delen door 11 betekend een restgetal van 10 en niet 0.
Kortom het bankrek is incorrect volgens deze berekening...
En dit betekend volgens mij dat de berekening incorrect is!

Of is mn kater zodanig dat mn rekenkundig inzicht is aangetast...? :confused:
Wodka + wodka = koppijn....
 
Greenery heeft gelijk, als hij vermoedt dat mijn formule niet helemaal klopte; ik heb hem aangepast, dus nu klopt hij weer! Waar een fles wodka al niet goed voor kan zijn ;)
Mijn variant is net iets beter, omdat hij ook 10- cijferige codes tackelt.
Ik heb mijn berekening overigens gebaseerd op Wikipedia...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan