Dans de précédents articles, j’évoquais l’usage du langage VBA et de logiciels tels qu’EXCEL ou ACCESS dans nos missions d’audit en vue de faciliter la mise en forme et l’analyse de données. Cependant, d’autres langages de programmation structurés, tels DELPHI (déclinaison orientée objet du langage Pascal) ou le C++ (successeur du C également orienté objet) existent. A la différence du VBA qui est un langage interprété, DELPHI et C++ sont des langages compilés[1].
Indéniablement, la création d’applications, mettant en œuvre des formules pour lesquelles l’inaltérabilité et/ou la confidentialité doivent rester de mise (par exemple, calculatrices ou outils de calcul de primes, de RFA, d’impôts… à destination des clients et mettant en avant les compétences du cabinet), requière l’usage de langages de programmation compilés tels que ceux évoqués plus avant. En effet, l’utilisateur n’a pas accès au code-source du programme (contrairement aux développements en VBA) mais seulement à son exécutable (*.exe, *.com), il ne peut donc pas en modifier le fonctionnement (sauf à se lancer dans des opérations de décompilation fort ardues).
Les langages compilés assurent, de la même manière que le VBA, des passerelles avec des applications tierces, telles EXCEL, ACCESS ou WORD (mais la liste est beaucoup plus longue). Ainsi, il est aisé de prendre le contrôle d’EXCEL, d’ouvrir des feuilles de calcul et de les modifier avec quelques lignes de codes. La liaison opérée entre les processus de traitements programmés et des tableurs ou SGBDR étendent de manière infinie le champ du possible en matière de traitement de données. C’est ce que je vous propose de découvrir avec l’exemple qui suit.
Pour résumer, les langages compilés offrent les avantages suivants par rapport aux langages compilés : rapidité d’exécution, sécurité et confidentialité des processus de traitement.
L’exemple ci-après reprend un extrait du code-source du logiciel d’audit des comptes sur lequel je travaille : cet extrait récupère les balances générales enregistrées dans différents onglets d’un classeur EXCEL (classeur intitulé ‘BG.xlsx’) et les reprend en comparatif N/N-1/N-2… Cet exemple montre comment à l’aide d’un langage évolué comme DELPHI, il est possible de traiter des données comptables ou financières issues de feuilles de calcul EXCEL. Ce code aurait pu être développé sous VBA, cependant il n’aurait pas offert les mêmes gages de sécurité et la même rapidité d’exécution. Au passage, l’on remarquera les similitudes de syntaxe des appels aux fonctions EXCEL entre DELPHI et VBA.
begin
CheminFichier:='E:\Projets DELPHI\Lecture BG\';
//Ouverture d'une nouvelle session Excel
SessionExcel:=createOleObject('Excel.Application');
//Session visible
SessionExcel.Visible:=true;
//Définition des variables de session
ClasseursExcel:=SessionExcel.Workbooks;
//Ouverture du classeur BG
NomFichier:=CheminFichier+'BG.xlsx';
ClasseurExcel:=ClasseursExcel.open(NomFichier);
//Préparation de la feuille de récapitulation des balances
//---La feuille récapitulant toutes les balances est la plus à gauche du classeur BG
FeuilleRécap:=ClasseurExcel.WorkSheets[1];
//---Vide la récap pluriannuelle
//------Compte le nombre de lignes occupées...
l:=FeuilleRécap.usedrange.rows.count;
//------...et les efface
feuillerécap.range['A'+inttostr(premlignebg)+':F'+inttostr(premlignebg+l)].rows.delete;
//Lit les balances générales (en commençant par N) et les recopie dans l'onglet Récap
//---Compte le nombre d'onglets du classeur
j:=ClasseurExcel.WorkSheets.count;
//---Lit les balances les unes après les autres
if j>1 then //si nombre d'onglets > à un
begin
for i:=1 to j-1 do //de la balance N à...
begin
FeuilleBG:=ClasseurExcel.WorkSheets[i+1];
l:=0; //Numéro de ligne en cours de traitement de la BG
l2:=0; //Numéro de ligne en cours de traitement de la récap
repeat
inc(l);
//Lecture du numéro de compte
s1:=feuillebg.cells[premlignebg+l-1,1].value;
if s1<>'' then //si le numéro de compte est renseigné, alors lecture de la ligne
begin
//Convertit le numéro de compte sur 10 positions ; exemple 1013000 => 1013000000
s1:=convertitcompte10pos(s1);
if i=1 then //balance N
begin
//Numéro de compte
feuillerécap.cells[premlignebg+l-1,1].value:=s1;
//Libellé de compte
feuillerécap.cells[premlignebg+l-1,2].value:=feuillebg.cells[premlignebg+l-1,2].value;
//Solde du compte
feuillerécap.cells[premlignebg+l-1,3+(i-1)].value:=feuillebg.cells[premlignebg+l-1,3].value;
end
else
begin //balances N-1...
inc(l2);
//Lecture du numéro de compte de la récap
s2:=feuillerécap.cells[premlignebg+l2-1,1].value;
if s1<s2 then //Compte inexistant en N => insertion d'une nouvelle ligne et du compte
begin
//Insertion ligne
feuillerécap.rows[premlignebg+l2-1].insert;
//Numéro de compte = s1
feuillerécap.cells[premlignebg+l2-1,1].value:=s1;
//Libellé compte
feuillerécap.cells[premlignebg+l2-1,2].value:=feuillebg.cells[premlignebg+l-1,2].value;
end;
//Solde du compte
feuillerécap.cells[premlignebg+l2-1,3+(i-1)].value:=feuillebg.cells[premlignebg+l-1,3].value;
end;
end;
until (s1='') or (l>10000) or (l2>10000); //si numéro de compte vide ou nb ligne > 10000 => on arrête
end;
end;
//Sauvegarde et fermeture du classeur
ClasseurExcel.save;
ClasseurExcel.close;
//Fermeture de la session Excel
SessionExcel.Quit;
SessionExcel:=unassigned;
end;
[1] Les langages interprétés nécessitent une compilation (c’est-à-dire une conversion du code-source du programme en code-machine directement interprétable par le microprocesseur) à chaque utilisation du logiciel tandis que les langages compilés opèrent cette compilation une seule fois. L’opération de compilation, préalable à l’exécution des instructions, nécessite du temps processeur et rend donc l’exécution des programmes développés en langage interprété moins rapide que ceux rédigés en langage compilé.
Derniers articles parBenoît RIVIERE (voir tous)
- Analyse des données comptables (FEC) : analyse de la conformité comptable des transactions et de leur dénouement - dimanche 23 novembre 2025
- L’AMF et l’AFA appellent à la vigilance sur le risque de corruption par des réseaux criminels de personnes ayant accès à des informations privilégiées - lundi 4 août 2025
- Détecter les inversions HT/TVA avec ANA-FEC2 - jeudi 31 juillet 2025
- Analyse de FEC en ligne avec ANA-FEC2 (manuel d’utilisation) - mardi 29 juillet 2025
- Rapport AFA 2024 : les contrôles comptables à ne pas négliger - samedi 5 juillet 2025



BON TRAVAIL
Excellent travail, je travaille dans une banque, je suis programmeuse, j’ai trouvé votre programme très intéressant. Je suis très motivée à percés dans mon projet.