Macros-commandes VBA/Annexe/Codes connus

Codes connus
Image logo représentative de la faculté
Annexe 7
Leçon : Macros-commandes VBA

Annexe de niveau 14.

Précédent :Mots réservés
Suivant :Sommaire
En raison de limitations techniques, la typographie souhaitable du titre, « Annexe : Codes connus
Macros-commandes VBA/Annexe/Codes connus
 », n'a pu être restituée correctement ci-dessus.




Fonction Excel-VBA de génération du n° de TVA intracommunautaire (TVA CEE)

modifier
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

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
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