Vérifier IBAN en Excel / en VBA 7


Le nettoyage et la maintenance des bases de données (BD) nécessite parfois des fonctions spécifiques. Si vous possédez une BD avec des informations sur vos clients ou vos fournisseurs, vous aurez probablement un jour besoin de vérifier IBAN de ces derniers. Cela peut vous éviter de mauvaises surprises. Il en va de même pour la vérification des entrées dans des formulaires.

IBAN: La structure du numéro de compte et la vérification de son validité

IBAN – le numéro de compte international (International Bank Account Number), qui devient le standard dans le monde bancaire, a un format spécifique qui permet de vérifier s'il s'agit d'un numéro valide ou pas. La fonction que je vous propose  dans cet article peut faire cette vérification pour vous de manière rapide et fiable. En l'utilisant, vous éviterez "l'erreur humaine".

Voici le schéma de la structure d'un numéro IBAN. Sachez que la longueur de la dernière partie (le BBAN)peut varier selon le pays où le compte est domicilié… La longueur de l'IBAN entier est donc également variable!

Vérifier IBAN en Excel / en VBAFormat du numéro de compte IBAN (source: Wikipedia)

Plus d'informations sur le format des comptes IBAN ainsi que sur le calcul de vérification: IBAN sur Wikipédia

Fonction VBA pour vérifier le numéro de compte IBAN

La fonction suivante peut être utilisé dans les Feuilles Excel en tant que UDF (User Defined Function) ou dans vos projets VBA. Elle utilise un argument – le numéro IBAN, et retourne VRAI ou FAUX en tant que Boolean selon que le numéro de compte est valide ou pas.

Public Function CorrectIBAN(NumeroIBAN)
' --> Function pour vérifier si le numéro de compte IBAN est correct
'par: http://excel-malin.com

On Error GoTo IBANErreur

IBAN_chaine = CStr(NumeroIBAN)
IBAN_nettoye = ""

'supprimer les caractères indésirables (garde: 0-9 et A-Z, transforme minuscules en majuscules)
For IBAN_char = 1 To Len(IBAN_chaine)
    IBAN_char_test = Mid(IBAN_chaine, IBAN_char, 1)
    Select Case IBAN_char_test
        Case 0 To 9, "a" To "z", "A" To "Z"
            IBAN_nettoye = IBAN_nettoye & UCase(IBAN_char_test)
        Case Else
    End Select
Next IBAN_char
 
'replacer les 4 premiers caractères à la fin
IBAN_position = Right(IBAN_nettoye, Len(IBAN_nettoye) - 4) & Left(IBAN_nettoye, 4)

'remplacer les lettres par chiffres
IBAN_numeric = ""
 For IBAN_char2 = 1 To Len(IBAN_position)
    IBAN_char_test2 = Mid(IBAN_position, IBAN_char2, 1)
    Select Case IBAN_char_test2
        Case "A" To "Z"
            IBAN_numeric = IBAN_numeric & CStr(Asc(IBAN_char_test2) - 55)
        Case Else
            IBAN_numeric = IBAN_numeric & IBAN_char_test2
    End Select
Next IBAN_char2
 
'vérifie le modulo 97 (doit être égal à 1)
IBAN_final = CDec(IBAN_numeric)
IBAN_modulo = IBAN_final - Fix(IBAN_final / 97) * 97
 
' résultat de la vérification
 If IBAN_modulo = 1 Then
    CorrectIBAN = True
 Else
    CorrectIBAN = False
 End If

Exit Function
IBANErreur:
'CorrectIBAN = CVErr(xlErrValue)
CorrectIBAN = False
End Function

 

Exemple de vérification de validité de l'IBAN en VBA

Dans cet exemple, imaginons que le numéro de compte IBAN se trouve dans la cellule A2. La procédure suivante le vérifie à l'aide de la fonction CorrectIBAN() et affiche un message pour indiquer si le numéro IBAN est valide ou pas.

Vous pouvez évidemment modifier ce code VBA selon vos besoins.

Sub Exemple_verification_IBAN()
'par: http://excel-malin.com
IBAN_a_verifier = Range("A2").Value

Resultat_verification = CorrectIBAN(IBAN_a_verifier)

If Resultat_verification = True Then
    MsgBox "Le numéro IBAN est correct"
Else
    MsgBox "Le numéro IBAN n'est pas correct"
End If

End Sub

 

Pour aller plus loin

14 0




Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée.

7 commentaires sur “Vérifier IBAN en Excel / en VBA

        • excel-malin.com Auteur du billet

          Ceci explique pourquoi cet IBAN ne marche pas.
          En fait, ce IBAN est trop long pour être vérifié en tant que numéro (ligne 36 du code).
          Le type Decimal en VBA peut travailler avec les nombres allant jusqu'à 28 chiffres. Or, la forme numérique de cet IBAN a 30 chiffres…

          Je vais voir si je peux trouver une solution.

    • excel-malin.com Auteur du billet

      Et au total, cet IBAN (de Crédit Lyonnais) a combien de caractères?
      >>> Attention, un chiffre compte pour 1 caractère tandis que les lettres comptent pour 2 caractères!

      Si c'est plus de 28, alors la réponse est dans mon commentaire plus haut – l'IBAN est trop long pour être géré en VBA.

      Martin

      • Grélard

        Merci de votre réponse rapide.
        J'avais pas compris la manière de compter. En effet, il y a 27 caractères dont 3 lettres ce qui fait donc 30 caractères (les 2 lettres du début et une troisième en 25 éme position.
        Y a-t-il une autre macro pour pouvoir surveillez les éventuelles fautes de frappes lorsque l'on rentre un rib dans la base de donnée clients?