Bonjour à tous,
Je sollicite votre aide, grâce à vous j'ai pu compléter la programmation VBA pour vérifier si le nr de compte iban que l'on introduit dans la colonne E est correct ou pas et cela fonctionne !!!!
Mais mon collègue a remarqué qu'il a un souci :
lorsque je prends par exemple le compte Iban d'une société en belgique : BE77000325681742 et que je clique sur la macro Vérifier les comptes Iban c'est correct --> ok
Par compte si j'enlève un des 0 par exemple il reste donc BE7700325681742 et lorsque je clique sur la macro Vérifier les comptes Iban il indique correct alors que ce n'est pas le cas ?
Qui pourrait m'aider svp ?
Suffirait-il d'indiquer dans la macro que pour dire que c'est ok il calcule également le nombre de position (16) ???
Un tout grand merci !!!
Voici ci dessous VBA
Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 Public Function CorrectIBAN(NumeroIBAN) ' --> Function pour vérifier si le numéro de compte IBAN est correct 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
Windows
Excel 2016
Partager