Iban

JU555

XLDnaute Occasionnel
Bonsoir !

J'aimerais créer un fichier qui extrait automatiquement la clé de contrôle numérique d'un compte IBAN.

Je joins une tentative qui fonctionne pour le premier exemple, mais pas pour les deux seconds. Je ne comprends pas pourquoi.

Merci de votre aide !
 

Pièces jointes

  • CONTRÔLE.xls
    23 KB · Affichages: 176

ROGER2327

XLDnaute Barbatruc
Re : Iban

Bonsoir
Compte tenu des explications données dans le fichier, je ne comprends pas pourquoi on ne trouve pas 61118544174111400 en C5. Que n'ai-je pas compris ou mal interprété ?
A part ça, ça sent le dépassement de capacité à plein nez...​
ROGER2327
#1892
 

Staple1600

XLDnaute Barbatruc
Re : Iban

Bonsoir


Pour le fun

En une seule formule (sans MOD car il est pas content)
En E1 , saisir la formule ci-dessous
Code:
=98-(CNUM(STXT(D1;5;12)&CODE(GAUCHE(C1;1))-55&CODE(STXT(C1;2;1))-55&STXT(C1;3;2))-(97*ENT(CNUM(STXT(D1;5;12)&CODE(GAUCHE(C1;1))-55&CODE(STXT(C1;2;1))-55&STXT(C1;3;2))/97)))
Elle renvoie : 34
 

ROGER2327

XLDnaute Barbatruc
Re : Iban

Re-bonsoir JU555, Staple1600
Amusant, ce truc.
_
=98-(((3*STXT(A2;5;6)-97*ENT(3*STXT(A2;5;6)/97))*1000000+3*DROITE(A2;6)-97*ENT(((3*STXT(A2;5;6)-97*ENT(3*STXT(A2;5;6)/97))*1000000+3*DROITE(A2;6))/97))*10000+3*(CODE(A2)-55&CODE(STXT(A2;2;1))-55)-97*ENT((((3*STXT(A2;5;6)-97*ENT(3*STXT(A2;5;6)/97))*1000000+3*DROITE(A2;6)-97*ENT(((3*STXT(A2;5;6)-97*ENT(3*STXT(A2;5;6)/97))*1000000+3*DROITE(A2;6))/97))*10000+3*(CODE(A2)-55&CODE(STXT(A2;2;1))-55))/97))
_
fonctionne aussi pour
BE00611118544174
BE00611118544073

Bonne nuit.
ROGER2327
#1893
 

Pièces jointes

  • JU555_ctrl_IBAN.xls
    21 KB · Affichages: 177

ROGER2327

XLDnaute Barbatruc
Re : Iban

Re...
(...)
Pour les ceux qui voudraient utiliser VBA, voici un code tout mâché

Automated Chaos: QTP: IBAN validation in VBScript

(Il trouve les même résultats que Roger2327, dont je serai curieux de voir sa version VBA ;) )
(...)
Pourquoi pas ?
Code:
[COLOR="DarkSlateGray"]Function clef_IBAN(s As String) As Integer
Dim i As Long
   Application.Volatile
   If Len(s) <> 16 Then clef_IBAN = "": Exit Function
   For i = 1 To 2
      s = Right$(s & Asc(s) - 48 + 7 * (Asc(s) > 64), Len(s) - (Asc(s) > 64))
   Next i
   s = Right$("0000" & Right$(s, Len(s) - 2) & "00", 20)
   For i = 4 To 0 Step -1
      clef_IBAN = (clef_IBAN + (CInt(Mid$(s, 17 - 4 * i, 4)) Mod 97) * (9 ^ i Mod 97)) Mod 97
   Next i
   clef_IBAN = 98 - clef_IBAN
End Function[/COLOR]
ROGER2327
#1895
 

Discussions similaires

Statistiques des forums

Discussions
312 602
Messages
2 090 156
Membres
104 413
dernier inscrit
HMF1984