Comment vérifier si une chaîne contient un caractère alphabétique (non numérique) via Access VBA

Partage maintenant:

Le « nettoyage » des informations avant leur importation dans votre base de données est une pratique courante. Après tout, l'une des raisons pour lesquelles vous utilisez une base de données est de pouvoir l'interroger de manière prévisible selon des critères définis, n'est-ce pas ? Mais comment gérer les situations externes où, par exemple, vous devez importer des informations depuis un fichier où une personne saisit « $ » tandis qu'une autre suppose qu'il s'agit d'une valeur monétaire ? Ou pire, où quelqu'un saisit « am » ou « pm » tandis qu'une autre utilise le format 24 heures ? Comme toujours, il existe de nombreuses solutions, mais l'une d'elles consiste à vérifier si une chaîne de caractères est uniquement composée de chiffres ou si elle contient des caractères non numériques. Avec un peu de VBA, ce type de vérification est simple, et cet article vous montrera à quel point.

Pourquoi devons-nous faire cela?

Caractères de donnéesSi vous importez des informations dont vous ne contrôlez pas la saisie ni l'extraction, vous avez certainement déjà rencontré ce problème à maintes reprises : les utilisateurs saisissent leurs données de la manière qui leur convient le mieux, et non de façon uniforme. Il est donc inévitable que vous soyez amené à… à prendre une uniforme avant de pouvoir l'importer.

Un exemple typique de ceci est celui où vous devez importer des données dans un champ numérique, mais lorsque vous regardez les données, vous voyez que certains ont séparé des milliers par des virgules, d'autres ont ajouté un signe monétaire - et qui sait quoi d'autre.

Une mise en garde rapide !

L'importation de données qui n'ont pas été nettoyées dans votre base de données peut être assez désastreuse - au mieux, cela peut fausser vos rapports, au pire, vous pourriez vous retrouver avec toutes sortes de choses cassées - ne laissez pas les importations de données "sales" être la raison pour laquelle vous 'essaie de résoudre le problème d'accès tout le week-end!

Comment "se débarrasser" des caractères alphabétiques

Vous pouvez bien sûr effectuer une recherche et remplacer manuellement, mais cela peut prendre du temps et vous risquez de manquer quelque chose (si vous ne recherchez, par exemple, que des signes dollar, vous risquez de manquer le signe euro ou des virgules, des espaces, etc.) . Ainsi, la façon la plus simple et la plus fiable de le faire est de laisser Access faire le travail difficile en utilisant le code ci-dessous.

Sur le code…

Public Function removeNonNumeric(inString As String) As Long
    Dim outputString, chrString As String
    Dim strPos As Integer
    
    For strPos = 1 To Len(inString)
        chrString = Mid(inString, strPos, 1)
        If IsNumeric(chrString) Then outputString = outputString & chrString
    Next
    
    removeNonNumeric = CLng(outputString)
End Function

Ce que fait le code

Code VBALa fonction est ici très simple. Elle consiste à parcourir la chaîne de caractères passée en paramètre, caractère par caractère. Si le caractère est un chiffre, on l'ajoute à une chaîne temporaire, puis on la convertit en un entier long.

Adapter le code à votre convenance

Comme vous pouvez le voir - la fonction renvoie un type de données "long" - si vous travaillez avec des entiers, des virgules flottantes, etc., vous voudrez modifier la fonction en conséquence afin qu'elle renvoie le bon type de valeur pour votre base de données.

Introduction de l'auteur:

Mitchell Pond est un expert en récupération de données dans DataNumen, Inc., qui est le leader mondial des technologies de récupération de données, y compris réparation SQL Server base de données et des produits logiciels de récupération Excel. Pour plus d'informations, visitez www.datanumen.com

Partage maintenant:

Les commentaires sont fermés.