Macros-commandes VBA/Annexe/Codes connus
Fonction Excel-VBA de génération du n° de TVA intracommunautaire (TVA CEE)
[modifier | modifier le wikicode]Public Function TVA_CEE(ByVal tC_SIRENT As String) As String
Dim SIRET As Long
SIRET = CLng(Left(tC_SIRENT, 9))
TVA_CEE = "FR" & (12 + 3 * (SIRET Mod 97)) Mod 97 & SIRET
End Function
Formule Excel de contrôle d'un n° de SIRET (14 chiffres) ou de SIREN (9 chiffres)
[modifier | modifier le wikicode]Pour cette formule le n° à contrôler est situé dans la cellule A2. Pour une liste les n° seront entrés dans la colonne A depuis la ligne 2 et la formule tirée du 1er au dernier n°.
=SI(NBCAR($A2)=14;MOD(((CNUM(STXT($A2;1;1))*2)-ENT((CNUM(STXT($A2;1;1))*2)/10)*9)+CNUM(STXT($A2;2;1))+((CNUM(STXT($A2;3;1))*2)-ENT((CNUM(STXT($A2;3;1))*2)/10)*9)+CNUM(STXT($A2;4;1))+((CNUM(STXT($A2;5;1))*2)-ENT((CNUM(STXT($A2;5;1))*2)/10)*9)+CNUM(STXT($A2;6;1))+((CNUM(STXT($A2;7;1))*2)-ENT((CNUM(STXT($A2;7;1))*2)/10)*9)+CNUM(STXT($A2;8;1))+((CNUM(STXT($A2;9;1))*2)-ENT((CNUM(STXT($A2;9;1))*2)/10)*9)+CNUM(STXT($A2;10;1))+((CNUM(STXT($A2;11;1))*2)-ENT((CNUM(STXT($A2;11;1))*2)/10)*9)+CNUM(STXT($A2;12;1))+((CNUM(STXT($A2;13;1))*2)-ENT((CNUM(STXT($A2;13;1))*2)/10)*9)+CNUM(STXT($A2;14;1));10);SI(NBCAR($A2)=9;MOD(CNUM(STXT($A2;1;1))+((CNUM(STXT($A2;2;1))*2)-ENT((CNUM(STXT($A2;2;1))*2)/10)*9)+CNUM(STXT($A2;3;1))+((CNUM(STXT($A2;4;1))*2)-ENT((CNUM(STXT($A2;4;1))*2)/10)*9)+CNUM(STXT($A2;5;1))+((CNUM(STXT($A2;6;1))*2)-ENT((CNUM(STXT($A2;6;1))*2)/10)*9)+CNUM(STXT($A2;7;1))+((CNUM(STXT($A2;8;1))*2)-ENT((CNUM(STXT($A2;8;1))*2)/10)*9)+CNUM(STXT($A2;9;1));10);-1))=0
Fonction VBA-Excel de contrôle d'un n° de SIRET
[modifier | modifier le wikicode]Public Function sirentCONTROLE(ByVal sC_SIRENT As String) As Boolean
' Cette fonction retourne VRAI si le SIREN ou le SIRET est Ok, sinon FAUX
' le traitement particulier SIREN (9 chiffres) vs SIRET (14 chiffres) et géré par la fonction
'
Dim sumSIR As Integer
Dim numSIR As Integer
Dim ptr As Integer, SLC As Integer
'
'--- Lecture chiffre par chiffre des caractères du n° SIREN ou SIRET ---
' à partir du 1er caractère
ptr = 1
' du premier au dernier caractère du n° SIREN ou SIRET
Do While ptr <= Len(sC_SIRENT)
' extraction et conversion en numérique du caractère situé en position (ptr)
numSIR = CInt(Mid(sC_SIRENT, ptr, 1))
' selon : _
1- la longueur du n° (SIREN=9, SIRET=14) _
2- le nombre de caractères du n° SIREN ou SIRET _
------------------------- _
| LEN | PTR |= SLC | _
------------------------- _
| 0 | 0 |= 0 | _
| 0 | 1 |= 1 | _
| 1 | 0 |= 1 | _
| 1 | 1 |= 0 | _
-------------------------
SLC = ((Len(sC_SIRENT) Mod 2) + (ptr Mod 2)) Mod 2
' somme : _
1- SLC = 1 : on ajoute numSIR*2 (si (numSIR*2) > 9 alors ((numSIR*2) - 9)) _
2- SLC = 0 : on ajoute numSIR
sumSIR = sumSIR _
+ (((numSIR * 2) - Int((numSIR * 2) / 10) * 9) * SLC) _
+ (numSIR * (1 - SLC))
' pointage du caractère suivant
ptr = ptr + 1
Loop
sirentCONTROLE = (sumSIR Mod 10) = 0
End Function