Vérification IBAN

Bonjour,

Petite question toute bête. J'ai trouvé un code permettant de vérifier un IBAN sur une celle donnée (ici A2). J'ai essayé de le déployer à toute la colonne mais j'ai l'impression que cela ne fonctionne pas correctement puisqu'il me prend (à mon sens) les cellules vides (forcément fausses par défaut).

Comment le modifier pour que le contrôle puisse s'effectuer sur les cellules avec valeurs renseignées uniquement mais également (et ça je ne l'ai pas dans mon code) avec la mention de la cellule à corriger dans la MsgBox.

Sub Verif_IBAN()

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

Merci beaucoup pour le temps que vous prendrez à me répondre !

Bonjour Bernard, bonjour le forum,

Si j'ai bien compris, ça donnerait ça :

Sub Verif_IBAN()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim I As Integer 'déclare la variable I (Incrément)

Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
DL = O.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernièrre ligne éditée DL de la colonne A de l'onglet O
For I = 2 To DL 'boucle sur toutes les lignes I de 2 à DL
    If O.Cells(I, "A") <> "" Then 'condition : si la cellule de la boucle n'est pas vide
        IBAN_a_verifier = O.Cells(I, "A").Value
        Resultat_verification = CorrectIBAN(IBAN_a_verifier)
        If Resultat_verification = True Then
            MsgBox "Le numéro IBAN de la ligne " & I & " est correct."
        Else
            MsgBox "Le numéro IBAN de la ligne " & I & " n'est pas correct."
        End If
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle
End Sub

Bonjour ThauThème,

Ca fonctionne à merveille, merci beaucoup. Petite question, comment fais tu pour ne pas avoir de MsgBox pour les IBAN corrects? Histoire de ne pas polluer l'affichage.

Je viens de me répondre en modifiant le code par

If Resultat_verification = False Then
            MsgBox "Le numéro IBAN de la ligne " & I & " n'est pas correct."

Tout simplement.

Merci beaucoup !

Bonjour ThauThème,

Ca fonctionne à merveille, merci beaucoup. Petite question, comment fais tu pour ne pas avoir de MsgBox pour les IBAN corrects? Histoire de ne pas polluer l'affichage.

Bonjour, salut ThauThème !

Je me permet d'intervenir. Il faut remplacer cette partie :

If Resultat_verification = True Then 'Si le résultat est VRAI
       MsgBox "Le numéro IBAN de la ligne " & I & " est correct." 'Message correct
Else
       MsgBox "Le numéro IBAN de la ligne " & I & " n'est pas correct." 'Sinon Message incorrect
End If

Par celle-ci :

If Resultat_verification = False Then  MsgBox "Le numéro IBAN de la ligne " & I & " n'est pas correct."

Je viens de me répondre en modifiant le code par

If Resultat_verification = False Then
            MsgBox "Le numéro IBAN de la ligne " & I & " n'est pas correct."

Tout simplement.

Merci beaucoup !

Tu as été plus rapide que moi !

Petite précision, tu peux te passer de l'instruction "End If" si tu écris tout sur une seule ligne (If ... Then ...)

Merci Pedro22 pour cette précision et pour ta remarque !

Honnêtement je ne le savais pas donc je suis ravi de pouvoir alléger un peu le code de cette manière.

Bonjour,

Ach, c'est dommage qu'on n'ait pas le code de CorrectIBAN

Pour les curieux, je vous en donne un ...

198verif-iban.xlsm (57.12 Ko)

Bonjour,

Ach, c'est dommage qu'on n'ait pas le code de CorrectIBAN

Salut Steelson !

Si tu me donnes l'intégralité de tes coordonnées bancaires (à des fins de test bien sûr !), je peux te proposer quelque chose !

Si tu me donnes l'intégralité de tes coordonnées bancaires (à des fins de test bien sûr !), je peux te proposer quelque chose !

Je veux bien que tu me le(s) remplisse bien sûr.

Je viens de modifier mon poste pour produire un fichier, pour les curieux !

Si tu me donnes l'intégralité de tes coordonnées bancaires (à des fins de test bien sûr !), je peux te proposer quelque chose !

Je veux bien que tu me le(s) remplisse bien sûr.

Je viens de modifier mon poste pour produire un fichier, pour les curieux !

En ce qui me concerne, je n'en ai pas l'utilité, mais tu pourrais ajouter ton fichier dans la section "Applications" !

https://forum.excel-pratique.com/viewforum.php?f=3

Steelson, je n'ai pas téléchargé ton fichier mais voici le code trouvé ailleurs

Public Function CorrectIBAN(NumeroIBAN)

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

Merci,

j'ai fait plus court !

Function VerifIBAN(cel As Range) As Boolean
    chaine = Replace(Mid(cel.Value, 5, Len(cel.Value)) & Left(cel.Value, 4), " ", "")
    resultat = 0
    For i = 1 To Len(chaine)
        caractere = Mid(chaine, i, 1)
        If IsNumeric(caractere) Then
            resultat = (10 * resultat + caractere) Mod 97
        Else
            resultat = (100 * resultat + (Asc(caractere) - 55)) Mod 97
        End If
    Next
    VerifIBAN = (resultat = 1)
End Function

Re,

Le groupuscule "Les Zons", réputé sur le net pour leur code extrêmement long et dur, ont aussi fait ça. Il faut taper l'IBAN des Zons.

Ok je sors...

Rechercher des sujets similaires à "verification iban"