Audit de données et VBA : automatisation du formatage des données numériques
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 ici : http://www.documents.auditsi.eu/47247951
Extrait de l’article :
Exemple de formats de données rencontrés et traitements effectués par la fonction et la procédure :
Code source de la fonction NettoyageNombre et de la procédure NettoyageNombreSélection :
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 | |
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 |