Lorsque l’auditeur exploite des données extraites d’un système informatique, il est fréquemment confronté à des formats numériques incompatibles avec les formats proposés par Excel. L’auditeur doit alors retraiter manuellement les éléments chiffrés, ce qui s’avère fastidieux sur des listes de données conséquentes.
Le VBA peut, dans ce cadre, s’avérer beaucoup plus productif.
La fonction et la procédure VBA proposées (intitulées respectivement NettoyageNombre et NettoyageNombreSélection) retraitent les données qui leur sont soumises afin qu’elles soient reconnues par Excel comme des données numériques.
Retrouvez l’article complet en téléchargement en bas de page.
Extrait de l’article :
Exemple de formats de données rencontrés et traitements effectués par la fonction et la procédure :
Conventions | Formats | Problématique Excel | Réponse apportée par la fonction |
Séparateur de milliers | 1 000 : espace | Si un espace est inséré pour représenter les milliers, Excel ne reconnaît plus la donnée comme un nombre mais comme une chaîne de caractères | La fonction supprime tous les espaces |
Décimale | 1000,23 : virgule | En France, la décimale est représentée par une virgule (paramètres régionaux de Windows) | |
1000.23 : point | Un nombre dont la décimale est représentée par un point est reconnu comme une chaîne de caractère | La fonction remplace le point par une virgule | |
Signe | -10 | En France, le signe négatif est positionné à gauche du nombre | |
10- | Si le signe est positionné à droite, le nombre est reconnu comme une chaîne | La fonction déplace le signe à gauche | |
(10) | Les parenthèses sont généralement reconnues comme un signe négatif | La fonction remplace les parenthèses par un signe moins | |
Sens | C10 ou 10C : crédit | Cette notation n’est pas reconnue par Excel | La fonction remplace le caractère C par un signe moins |
D10 ou 10D : débit | Cette notation n’est pas reconnue par Excel | La fonction supprime le caractère D |
Code source de la fonction NettoyageNombre et de la procédure NettoyageNombreSélection :
Function NettoyageNombre(nombre As Variant) 'Renvoie un nombre formaté pour être reconnu comme un nombre par Excel'Fonction rédigée par Benoît-René RIVIERE Dim s2 As String s2 = nombre 'Supprime les espaces s2 = Replace(s2, " ", "") 'Remplace les . par des , s2 = Replace(s2, ".", ",") 'Replace le caractère C (crédit) par un signe - If InStr(s2, "C") > 0 Then s2 = Replace(s2, "C", "") If InStr(s2, "-") > 0 Then s2 = Replace(s2, "-", "") Else s2 = "-" & s2 End If 'Supprime le caractère D (débit) If InStr(s2, "D") > 0 Then s2 = Replace(s2, "D", "") End If 'Déplace le caractère - de la droite vers la gauche If InStr(s2, "-") > 1 Then s2 = "-" & Replace(s2, "-", "") End If 'Remplace les parenthèses par un signe - If InStr(s2, "(") > 0 Then s2 = "-" & Replace(s2, "(", "") s2 = Replace(s2, ")", "") End If 'Renvoie le résultat If Len(s2) > 0 Then NettoyageNombre = CDbl(s2) End Function Sub NettoyageNombreSélection() Dim Cellule As Variant For Each Cellule In Selection Cellule.Value = NettoyageNombre(Cellule.Value) Next Cellule End Sub
Approfondir le sujet : conversion de fichiers et de données / programmer en VBA
Derniers articles parBenoît RIVIERE (voir tous)
- Nouveautés de l’interpréteur de formules de calcul (v1.1) - dimanche 3 novembre 2024
- Dématérialisation de la facturation : nouvelles mentions obligatoires - lundi 28 octobre 2024
- Interpréteur de formules de calcul en Python - dimanche 13 octobre 2024
- Les données de la facturation électronique - mercredi 9 octobre 2024
- VBA/SQL vs Power Query : deux solutions complémentaires - mercredi 2 octobre 2024