[Excel] formule maken voor BTWnr controle

Pagina: 1
Acties:
  • 9.067 views sinds 30-01-2008

Acties:
  • 0 Henk 'm!

  • Falcon10
  • Registratie: Mei 2002
  • Laatst online: 10-06 20:50

Falcon10

Hit it i would !

Topicstarter
Er bestaat een "simpele" manier om een Belgische BTW nummer te controleren of het geldig is :

VAT number format is BE-XXXXXXXXXX - the BE letters are not part of the
check.
Example : BE-0448070615 : composed of two numbers, 04.480.706 and 15

Divide 04.480.706 (the first 8 digits) by 97 => 04.480.707/97 =
46.192,8454
Multiply that value without decimals by 97 => int(46.192,8454)*97 =
4.480.624
Take away that amount out of the first 8 digits => 04.480.706 -
4.480.624 =
82
Take away this result from 97 => 97 - 82 = 15 => the last two digits of
the
vat number

Exception : if the result of the check is 00, the last two digits of the
vat number should be 97.

In principe als je het allemaal op een A4'tje uitrekend klopt dat inderdaad allemaal, echter had ik dit graag als een formule ofzo in een Excell Sheet gezien.
Ik heb reeds bijna alle functies denk ik die in Excell zitten uitgeprobeerd om dit te kunnen doen, maar ik raak er maar niet uit.
Ik denk zelfs dat het niet kan in Excell, en dat je er een macro voor moet maken.

Iemand enig id of het wel gewoon met de formule bar gaat ? Of iemand een id waar je zo iets kan halen op internet ? Ik heb al zitten googelen op BTW check, excell BTW formula etc, maar niets geeft het gewenste resultaat.

-| Hit it i would ! |-


Acties:
  • 0 Henk 'm!

  • Reptile209
  • Registratie: Juni 2001
  • Laatst online: 01:08

Reptile209

- gers -

Met de BTW-code in A1 zou het met de volgende draak van een formule kunnen:
code:
1
=IF( 97-MOD(VALUE(MID(A1;SEARCH("-";A1;1)+1;LEN(A1)-5));97)=VALUE(RIGHT(A1;2));"Klopt";"Klopt niet")

Maar ik denk dat je sheet een stuk leesbaarder wordt, als je die formule in een VB-formule gooit zodat je nog wat extra checks kunt doen. De Exception wordt in mijn formule bijvoorbeeld niet meegenomen, en met een spatie voor of achter het nummer gaat hij de mist in.
Merk overigens op dat de eerste 3 stappen in een keer kunnen met de functie MOD() (modulo, restdeling dus). Succes :).

offtopic:
Als je een Nederlandse Excel hebt, moet je naar eigen inzicht de gebruikte functies even naar de NL varianten vertalen...

Zo scherp als een voetbal!


Acties:
  • 0 Henk 'm!

  • TrailBlazer
  • Registratie: Oktober 2000
  • Laatst online: 04-06 09:31

TrailBlazer

Karnemelk FTW

wat ik altijd wel handig vind is om gewoon per cel een stap te doen. Later kan je dan alles in elkaar invullen. IMHO is het geen verschrikkelijk lastige formule als je het zo doet

Acties:
  • 0 Henk 'm!

  • Falcon10
  • Registratie: Mei 2002
  • Laatst online: 10-06 20:50

Falcon10

Hit it i would !

Topicstarter
bedankt reptile, ik krijg echter momenteel in het vak van de formule : #NAAM? als ik het voorbeeld BTW nr in vak A1 ingeef.

Enig id wat ik verkeerd doe ?

-| Hit it i would ! |-


Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Falcon10 schreef op dinsdag 09 augustus 2005 @ 09:48:
bedankt reptile, ik krijg echter momenteel in het vak van de formule : #NAAM? als ik het voorbeeld BTW nr in vak A1 ingeef.

Enig id wat ik verkeerd doe ?
Probeer desnoods die functie in stapjes te doen, zo moeilijk is deze functie toch niet :?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • Sick Nick
  • Registratie: Februari 2001
  • Laatst online: 10-06 01:01

Sick Nick

Drop the top!

Zijn formule is in het engels en dat snapt de nederlandse versie van excel niet. Heel onhandig van microsoft, maar je zult overal de nederlandse namen van de functies moeten gebruiken.

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Sick Nick schreef op dinsdag 09 augustus 2005 @ 09:52:
Zijn formule is in het engels en dat snapt de nederlandse versie van excel niet. Heel onhandig van microsoft, maar je zult overal de nederlandse namen van de functies moeten gebruiken.
Waarbij dit dan ook weer handig kan zijn :)
BtM909 in "Excel: internationale functienamen"

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • CoRrRan
  • Registratie: Juli 2000
  • Laatst online: 13:07

CoRrRan

Don't Panic!!!

Of als user-defined function in VBA:
Visual Basic:
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
Function BEBTW(strBTW_Nr As String)

  Dim dblCalc As Double, dblTemp As Double
  Dim intChk As Integer
  
  If UCase(Left(strBTW_Nr, 3)) = "BE-" Then
    strBTW_Nr = Right(strBTW_Nr, Len(strBTW_Nr) - 3)
  End If
  
  If Len(strBTW_Nr) <> 10 Then
    BEBTW = CVErr(xlErrValue)
    Exit Function
  End If

  dblCalc = CDbl(Left(strBTW_Nr, 8))
  intChk = CInt(Right(strBTW_Nr, 2))

  dblTemp = 97 - (dblCalc - Int(dblCalc / 97) * 97)
  
  If CInt(dblTemp) = intChk Then
    BEBTW = True
  ElseIf CInt(dblTemp) = 0 And intChk = 97 Then
    BEBTW = True
  Else
    BEBTW = False
  End If

End Function
Uitleg voor hoe je een user-defined function (UDF) kunt aanmaken:
http://blogs.msdn.com/frice/archive/2004/06/11/153891.aspx

[ Voor 2% gewijzigd door CoRrRan op 09-08-2005 10:49 . Reden: kleine aanpassing in code ]

-- == Alta Alatis Patent == --


Acties:
  • 0 Henk 'm!

  • Falcon10
  • Registratie: Mei 2002
  • Laatst online: 10-06 20:50

Falcon10

Hit it i would !

Topicstarter
hey jongens,

beide oplossingen werken !

Ook de eerste na het inderdaad naar nederlands te vertalen :)

Dank aan allen !

-| Hit it i would ! |-


Acties:
  • 0 Henk 'm!

  • daviddesloovere
  • Registratie: Juli 2009
  • Laatst online: 30-04-2021
Btw-nummers zijn ondertussen ondernemingsnummers geworden.

Hier de code in C# - gecontroleerd op +100.000 ondernemingsnummers.

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private static bool IsValidOndernemingsNummer(string ondernemingsNummer)
        {
            Int32 numeric;
            ondernemingsNummer = System.Text.RegularExpressions.Regex.Replace(ondernemingsNummer,@"\D", ""); //Matches any nondigit character. 

            if (ondernemingsNummer.Length != 10)
                throw new ArgumentException("Ondernemingsnummer " + ondernemingsNummer + " moet 10 karakters lang zijn.");
            if (!Int32.TryParse(ondernemingsNummer, out numeric))
                throw new ArgumentException("Ondernemingsnummer " + ondernemingsNummer + " moet numeriek zijn.");

            Int32 Last2 = Convert.ToInt32(ondernemingsNummer.Substring(8, 2));
            Int32 First8 = Convert.ToInt32(ondernemingsNummer.Substring(0, 8));
            Int32 Result = 97 - (First8 - (First8 / 97) * 97);

            if (Result == 0)
                return Last2 == 97;
            else
                return Last2 == Result;

        }

Acties:
  • 0 Henk 'm!

Anoniem: 113297

wat dacht je, ik ga het vierjarig lustrum van dit topic vieren met een megakick? 8)7

ook bankrekeningnummers, rsz-nummers & insz'en zijn op gelijkaardige wijze te controleren.
maar op zich heeft dit onvoldoende met het OFF-forum te maken, en zeker als je hier pure C#-code neerplempt zonder het te relateren aan een van de officetoepassingen.
Pagina: 1

Dit topic is gesloten.