Lorsque l'on pense aux cartes de crédit, des noms tels que VISA, MasterCard et American Express nous viennent immédiatement à l'esprit. Ces cartes, largement reconnues et utilisées à travers le monde, nécessitent une vérification minutieuse pour éviter les fraudes et les erreurs. Tout comme la vérification des numéros IBAN, il est possible de s'assurer de la validité des numéros de carte de crédit en VBA, surtout si vous traitez des transactions ou stockez des informations sensibles en Excel ou en Access. Si vous avez trouvé mon article sur la vérification des numéros IBAN utile, la fonction de vérification de numéro de carte de crédit vous sera probablement tout aussi utile.
Structure d'un numéro de carte de crédit et sa vérification – un peu de théorie
Un numéro de carte de crédit est généralement composé de 16 chiffres, bien que cela puisse varier. La validité d'un numéro de carte de crédit peut être vérifiée à l'aide de l'algorithme de Luhn. Cet algorithme permet de détecter la plupart des erreurs courantes, comme un chiffre mal saisi ou une inversion de deux chiffres consécutifs.
Voici quelques exemples des possibles entrées de la fonction que je vous propose et les résultats qu'elle renvoie:
Numéro à vérifier | Résultat de la fonction | Commentaire |
---|---|---|
4111111111111111 | VRAI | Numéro de carte valide |
4111 1111 1111 1111 | VRAI | Numéro de carte valide avec espaces |
4111111111111112 | FAUX | Numéro incorrect selon l'algorithme de Luhn |
411111111111 | FAUX | Numéro trop court |
41111111111111111111 | FAUX | Numéro trop long |
4111-1111-1111-1111 | VRAI | Numéro de carte valide avec tirets |
abcd111111111111 | FAUX | Contient des caractères non numériques |
5555555555554444 | VRAI | Numéro de carte MasterCard valide |
378282246310005 | VRAI | Numéro de carte American Express valide |
3782 822463 10005 | VRAI | Numéro de carte American Express valide avec espaces |
378282246310006 | FAUX | Numéro incorrect selon l'algorithme de Luhn |
411111 | FAUX | Numéro trop court |
Comme vous pouvez le voir, la fonction que je vous propose tient compte de différents problèmes que vous pourriez rencontrer:
- numéro de carte de crédit vide, trop court ou trop long
- numéro contenant des caractères non numériques (comme espaces ou tirets)
- numéros de carte erronés
Fonction VBA pour vérifier le numéro de carte de crédit
La fonction suivante peut être utilisée dans les Feuilles Excel en tant que UDF (User Defined Function) ou dans vos projets VBA. Elle prend en argument le numéro de carte de crédit sous forme de variable de type String
et retourne VRAI
ou FAUX
selon sa validité (variable de type Booléen).
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 |
Function VerifierCarteCredit(numCarte As String) As Boolean 'par Excel-Malin.com ( https://excel-malin.com/ ) Dim somme As Integer Dim i As Integer Dim chiffre As Integer Dim cleanedNum As String ' Vérifie si la chaîne d'entrée est vide If Trim(numCarte) = "" Then VerifierCarteCredit = False Exit Function End If ' Nettoyage: Supprime tous les caractères non numériques de la chaîne d'entrée For i = 1 To Len(numCarte) If IsNumeric(Mid(numCarte, i, 1)) Then cleanedNum = cleanedNum & Mid(numCarte, i, 1) End If Next i ' Vérifie si la chaîne nettoyée est vide ou a une longueur incorrecte If Len(cleanedNum) < 13 Or Len(cleanedNum) > 19 Then VerifierCarteCredit = False Exit Function End If ' Applique l'algorithme de Luhn pour vérifier la validité du numéro de carte For i = 1 To Len(cleanedNum) chiffre = CInt(Mid(cleanedNum, i, 1)) If i Mod 2 = 0 Then somme = somme + chiffre Else somme = somme + (chiffre * 2 Mod 10) + Int(chiffre * 2 / 10) End If Next i ' Vérifie si le numéro est valide selon l'<span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start"></span>algorithme de Luhn<span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_end"></span> VerifierCarteCredit = (somme Mod 10 = 0) End Function |
Exemple d'utilisation de la fonction de vérification
Maintenant, nous allons voir un exemple de comment utiliser cette fonction. Supposons que le numéro de carte de crédit soit dans la cellule A2
. La procédure suivante vérifie sa validité à l'aide de la fonction VerifierCarteCredit()
et affiche un message indiquant si le numéro est valide ou non.
1 2 3 4 5 6 7 8 9 10 |
Sub VerifierValiditeCarte() Dim num As String num = Range("A2").Value If VerifierCarteCredit(num) Then MsgBox "Le numéro de carte de crédit est valide." Else MsgBox "Le numéro de carte de crédit n'est pas valide." End If End Sub |
Une fois que vous avez vérifié vos numéros de carte de crédit, vous pourriez vouloir les enregistrer ou les traiter. Découvrez comment manipuler des fichiers avec mon guide sur la manipulation des fichiers en VBA.
Pour aller plus loin en VBA
Pour finir, voici une sélection d'articles et tutoriels qui pourraient rendre votre travail avec VBA plus efficace…
- Liste de toutes les fonctions disponibles en VBA
- VBA: Vérification de l'adresse email
- Envoyer un email avec VBA dans Excel
- Outils Excel/VBA à télécharger gratuitement
- Comment utiliser RECHERCHEV en VBA [tutoriel]
2 commentaires sur “Vérifier la Carte de Crédit en VBA: VISA, MasterCard, Amex”
Super article, vraiment utile. J'avais besoin de comprendre comment vérifier des cartes de crédit en VBA pour un petit projet. Votre code est simple et ça marche bien. Merci !
Je suis impressionné par la qualité de cet article. Les explications sont claires et les exemples de code sont très pratiques. J'ai déjà intégré votre solution dans mon projet et ça fonctionne à merveille. Continuez comme ça, votre site est une ressource inestimable pour les passionnés d'Excel et de VBA !