Audit de données et VBA : automatisation du formatage des données numériques

Publié le par Benoît-René RIVIERE

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
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article