Vérifier IBAN en Excel / en VBA

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 As String) As Boolean
' --> Function pour vérifier si le numéro de compte IBAN est correct
'par: Excel-Malin.com ( https://excel-malin.com )

On Error GoTo IBANErreur

Dim IBAN_chaine As String
Dim IBAN_nettoye As String
Dim IBAN_char, IBAN_char2 As Integer
Dim IBAN_char_test, IBAN_char_test2 As Variant
Dim IBAN_position As String
Dim IBAN_numeric As String
Dim IBAN_reduit
Dim IBAN_reduit_modulo
Dim IBAN_modulo
Dim IBAN_final

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)
If Len(IBAN_numeric) >= 28 Then
    IBAN_reduit = CDec(Left(IBAN_numeric, 10))
    IBAN_reduit_modulo = IBAN_reduit - Fix(IBAN_reduit / 97) * 97
    IBAN_final = CDec(IBAN_reduit_modulo & (Right(IBAN_numeric, Len(IBAN_numeric) - 10)))
Else
    IBAN_final = CDec(IBAN_numeric)
End If

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.

Ceci n'est qu'un exemple. Vous pouvez évidemment modifier ce code VBA selon vos besoins. (n'oubliez pas que pour faire fonctionner ce code, vous devez copier dans votre Module le code de cet exemple mais aussi le code de la fonction CorrectIBAN() )

Sub Exemple_verification_IBAN()
'par: https://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 en VBA

Voici quelques autres articles qui pourraient vous intéresser…

 

Laissez un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

13 commentaires sur “Vérifier IBAN en Excel / en VBA”