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