SQL : détecter les achats comptabilisés en double

La supervision des comptabilités d’un groupe vise à répondre à plusieurs objectifs dont la prévention des risques des erreurs et des fraudes.

Une des erreurs communes est la double comptabilisation de factures fournisseurs. Si les procédures sont chargées de limiter ce risque, la systémisation du contrôle complète plus efficacement le dispositif de prévention.

SELECT Requête1.CompteDeCodeEntité AS NbOccurrences, ECRITURES.CodeEntité, ECRITURES.JournalCode, ECRITURES.JournalLib, ECRITURES.EcritureNum, ECRITURES.EcritureDate, ECRITURES.CompteNum, ECRITURES.CompteLib, ECRITURES.CompteAuxNum, ECRITURES.CompteAuxLib, ECRITURES.PièceRéf, ECRITURES.PièceDate, ECRITURES.EcritureLib, ECRITURES.Débit, ECRITURES.Crédit, ECRITURES.ValidDate, ECRITURES.Solde, ECRITURES.AAAAMM
INTO ACHATS_DOUBLONS IN 'C:\ANA-FEC.accdb'
FROM (SELECT ECRITURES.CodeEntité, ECRITURES.CompteAuxNum, ECRITURES.PièceRéf, ECRITURES.Solde, ECRITURES.TypeJournal, Count(ECRITURES.CodeEntité) AS CompteDeCodeEntité FROM ECRITURES
WHERE ((Not (ECRITURES.CompteAuxNum) Is Null) AND ((ECRITURES.TypeJournal)="ACHATS"))
GROUP BY ECRITURES.CodeEntité, ECRITURES.CompteAuxNum, ECRITURES.PièceRéf, ECRITURES.Solde, ECRITURES.TypeJournal
HAVING ((Count(ECRITURES.CodeEntité))<>1)) AS Requête1 INNER JOIN ECRITURES ON (Requête1.TypeJournal = ECRITURES.TypeJournal) AND (Requête1.Solde = ECRITURES.Solde) AND (Requête1.PièceRéf = ECRITURES.PièceRéf) AND (Requête1.CompteAuxNum = ECRITURES.CompteAuxNum) AND (Requête1.CodeEntité = ECRITURES.CodeEntité)
ORDER BY Requête1.CodeEntité, Requête1.CompteAuxNum, Requête1.PièceRéf, Requête1.Solde;

Cette automatisation peut efficacement être mise en œuvre à l’aide d’une requête SQL.

Continue reading ‘SQL : détecter les achats comptabilisés en double’ »

ACCESS (SQL) : figer le résultat d’une requête dans une table

Les requêtes SQL permettent d’extraire des informations de bases de données. Le résultat de ces requêtes peut lui-même être interrogé par une autre requête (sous-requête) et ainsi de suite. Appliquée à des volumes de données conséquents, cette pratique de sous-requêtes entraîne des temps de traitements qui s’allongent à chaque niveau d’interrogation. Pour pallier à cet inconvénient, il est possible de figer le résultat des requêtes dans une table avant interrogation par la requête suivante.

SELECT Champs et calculs INTO TableDestination FROM TableOrigine

L’assertion INTO TableDestination envoie le résultat de la requête SELECT… FROM TableOrigine dans une nouvelle table nommée TableDestination.

Continue reading ‘ACCESS (SQL) : figer le résultat d’une requête dans une table’ »

SQL : obtenir le numéro du jour de la semaine d’une date avec la fonction DAYOFWEEK

La fonction SQL DAYOFWEEK(date) fournit le numéro du jour de la semaine de la date indiquée en paramètre.

Le numéro renvoyé par la fonction DAYOFWEEK s’interprète ainsi :

1 = dimanche, 2 = lundi…, 7 = samedi.

Exemple :

SELECT DAYOFWEEK(EcritureValidDate) AS NumJourSem, EcritureNum
FROM ECRITURES
WHERE DAYOFWEEK(EcritureValidDate)=1 OR DAYOFWEEK(EcritureValidDate)=7;

Continue reading ‘SQL : obtenir le numéro du jour de la semaine d’une date avec la fonction DAYOFWEEK’ »

VBA, SQL : conversion d’une valeur numérique en une chaîne de caractères

La conversion de données (ou transtypage) est commune en programmation.

Pour convertir des valeurs numériques en données texte, les langages VBA et SQL utilisent la fonction Cstr.

En VBA :

Dim Num as Integer
Dim Ch as String 
Num = 12 
Ch = Cstr(Num)

En SQL, la conversion d’une valeur numérique en une chaîne de caractères passe également par la fonction Cstr :

Continue reading ‘VBA, SQL : conversion d’une valeur numérique en une chaîne de caractères’ »

Excel : arrondir un nombre

L’arrondi est d’usage quotidien en comptabilité, que ce soit pour un calcul de montant de TVA, une base d’imposition…

Logo Excel

Excel propose différentes fonctions pour remplir cette tâche, la plus commune étant, tout simplement ARRONDI :

ARRONDI ( expression ; nbdécimales)

Continue reading ‘Excel : arrondir un nombre’ »

Les détournements de fonds commis par un tiers au détriment de l’entreprise sont déductibles fiscalement

En cas de détournements de fonds commis au détriment d’une société par un tiers, les pertes qui en résultent sont, en principe, déductibles des résultats de la société y compris en cas de carences ou de comportement fautif des dirigeants. Le Conseil d’Etat vient de prendre position en ce sens (CE 12-4-2019 n° 410042, arrêt téléchargeable ci-après). L’arrêt en sens contraire de la cour administrative d’appel est annulé (CAA Marseille 23-2-2017 n° 15MA03323).

Continue reading ‘Les détournements de fonds commis par un tiers au détriment de l’entreprise sont déductibles fiscalement’ »

ACCESS : importer un fichier texte dans une table (exemple appliqué à un FEC)

L’importation de données dans des tables ACCESS peut être réalisée de plusieurs manières. L’une d’elle passe par le menu Données externes :

ACCESS - Menu Données externes

Pour importer un fichier texte, à l’image d’un FEC (Fichier des Ecritures Comptables), cliquer sur Fichier texte ; puis sélectionner le fichier texte à importer :

ACCESS - Données externes - Sélection Continue reading ‘ACCESS : importer un fichier texte dans une table (exemple appliqué à un FEC)’ »

Supprimer et insérer des données dans une table de données à l’aide de requêtes SQL

La mise à jour de bases de données volumineuses passe utilement par des requêtes : les requêtes suppression (DELETE) et les requêtes insertion (INSERT).

ACCESS - Requête INSERT INTO

Ces requêtes sont susceptibles d’avoir des effets non désirés sur les données non réversibles en cas d’erreurs de programmation : faire une sauvegarde des données avant toute exécution d’une table avant toute requête DELETE ou INSERT est une sage précaution.

Les requêtes DELETE et INSERT se construisent d’une manière similaire aux requêtes sélection (SELECT).

Continue reading ‘Supprimer et insérer des données dans une table de données à l’aide de requêtes SQL’ »