Lorsque quelqu’un accède frauduleusement à un système d’informatique (avec des identifiants dérobés à un collègue, concurrent…), il veillera généralement à se connecter lors de la fermeture de l’entreprise (je fais volontairement abstraction des connexions depuis internet), la nuit ou le midi pendant la pause déjeuner. Il en est de même pour le fraudeur qui cherchera la tranquillité pour comptabiliser ses écritures frauduleuses.
Généralement les connexions à un système informatique sont enregistrées dans un journal (log). Ce journal note la date, l’heure, l’identifiant de l’utilisateur, le temps de connexion, les actions effectuées…
Cette journalisation des opérations est souvent également effectuée lors de la comptabilisation d’écritures, de la création de factures…
Pour rechercher des anomalies, il suffit d’extraire des données de journalisation et d’étudier celles qui sont enregistrées hors des horaires « normaux » de travail.
Si l’on prend l’exemple d’un dépôt de vente de marchandise ouvert du mardi au samedi de 9 heures à 20 heures, il serait intéressant d’isoler les factures « comptoir » (payées au comptant par le client lors de l’enlèvement des marchandises) créées hors de ces horaires. Il en serait de même pour les factures créées les jours fériées ou pendant les fermetures annuelles.
Données à obtenir
L’extrait de la table de facturation (1290 factures) contient le code client, l’identifiant du vendeur, le numéro de facture, la date et l’heure de facturation ainsi que le TTC. Les données ont été extraites aléatoirement sur quatre années.
Exploitation des données
Nous allons retraiter ces données sous ACCESS à l’aide de la requête suivante :
SELECT [Liste factures].N°, [Liste factures].Code_clt, [Liste factures].ID_vend, [Liste factures].Num_Fre, [Liste factures].Date_Fre, [Liste factures].TTC, Weekday([date_fre],1) AS jour, Hour([date_fre]) AS heure
FROM [Liste factures]
WHERE (((Weekday([date_fre],1))=1)) OR (((Weekday([date_fre],1))=2)) OR (((Hour([date_fre]))>20 And (Hour([date_fre]))<9));
Cette requête recherche les factures créées le dimanche ou le lundi ou entre 20 heures et 9 heures. Nous obtenons 256 lignes, qu’il reste donc à analyser.
La fonction « weekday(date,1) » donne le numéro du jour de la semaine ; 1 étant le dimanche. Cette fonction existe également sous EXCEL sous le nom « JourSem », elle fonctionne de la même manière.
La fonction « hour » fournit l’heure compris dans un numéro de série donné (date).
A partir de ce résultat, il est possible d’obtenir des explications auprès des vendeurs concernés : retard de facturation, ouvertures exceptionnelles…
Il est également possible de réaliser un tableau croisé dynamique (TCD) pour résumer la facturation sur une semaine type en nombre de factures ou en chiffre d’affaires heure par heure par exemple pour apprécier les heures de pointe. Ce tableau peut être réaliser au niveau du dépôt ou par vendeur…
TCD résumant la facturation (en nombre de factures) heure par heure sur une semaine type (à partir des 1290 lignes de facturation extraite) :
Par exemple, le lundi (colonne intitulée « 2 »), 71 factures ont été créées à 9 heures.
L’utilisation d’un format conditionnel colorisant par exemple les heures durant lesquelles plus de 25 % des factures quotidiennes sont établies améliorerait grandement la lisibilité du tableau.
TCD résumant la facturation (en chiffre d’affaires) heure par heure sur une semaine type (à partir des 1290 lignes de facturation extraite) :
Derniers articles parBenoît RIVIERE (voir tous)
- Projet IXP (v1.2beta) : quelques nouvelles de mon interpréteur d’expressions - dimanche 1 décembre 2024
- 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
Pingback: Analyse de données : interroger une base de données avec une requête SQL – Audit & Systèmes d'Information