EXEMPLE DE MACRO FONCTION


On veut écrire une fonction CtrlNoCompte qui contrôle un numéro de compte bancaire. Ce numéro a été encodé sous la forme XXXYYYYYYYZZ (sans les tirets) et la cellule a été formatée à l'aide du format 000-0000000-00 .

Un numéro de compte bancaire est correct si le nombre de contrôle formé par les deux derniers chiffres (ZZ) est égal au reste de la division du nombre formé par les dix premiers chiffres (XXXYYYYYYY) par 97. Si ce reste est 0, le nombre de contrôle sera 97. Cette fonction renvoie : la valeur OK si le compte est correct sinon elle renvoie COMPTE INCORRECT.

Voici le texte de la macro :
'
' Contrôle du numéro de compte bancaire
'
Function CtrlNoCompte(Compte)
    i = Int(Compte / 100)                   ' 10 premiers chiffres
    digit = Compte - i * 100                ' 2 derniers chiffres
    reste = i - Int(i / 97) * 97            ' reste de la division par 97
    If reste = 0 Then reste = 97
    If reste <> digit Then
        CtrlNoCompte = "Compte incorrect"
    Else
        CtrlNoCompte = "Ok"
    End If
End Function

A titre d'exemple, voici une macro commande (SaisieNoCompte) qui permet de saisir un numéro de compte bancaire, avec contrôle de validité.
' SaisieNoCompte Macro
' Macro enregistrée le 24/10/96 par Jean-Marie Lambert
' Touche de raccourci du clavier: Ctrl+b
' Cette macro a été ajoutée au menu Outils
Sub SaisieNoCompte()
    ActiveCell.Formula = InputBox( _
        prompt:="Numéro de compte", Title:="Compte bancaire")
    If ActiveCell <> "" Then
        Selection.NumberFormat = "000-0000000-00;;;[red]"
        Memo = ActiveCell
        Test = CtrlNoCompte(ActiveCell)
        If Test = "Ok" Then
            ActiveCell.Formula = Memo
        Else
            ActiveCell.Formula = Test
        End If
    End If
End Sub