Dans le cadre de mon projet de développement d’un logiciel d’audit des comptes consolidés, je convertis en DELPHI des programmes que j’avais initialement rédigés en VBA et notamment le programme de calcul des pourcentages d’intérêt.
Cette opération de conversion se pratique de la même manière que la traduction d’un texte d’une langue à l’autre : elle nécessite la connaissance de la grammaire (la syntaxe) et du vocabulaire (les mots clefs). En matière informatique, la conversion nécessite la maîtrise approfondie des deux langages. En effet, si de prime abord la ressemblance de ces deux langages est frappante, des subtilités, véritables chausse-trapes, compliquent quelque peu la donne.
Je vais prendre pour exemple la procédure de calcul de la matrice inverse sous EXCEL extraite du programme de calcul des pourcentages d’intérêt. Cette procédure rédigée en VBA (cf extrait n°1) est convertie sous DELPHI (extrait n°2).
Extrait n°1 : procédure « AfficheMatrice » rédigée en VBA :
Sub AfficheMatrice()
Dim détenteur As Integer
Dim détenu As Integer
classeurAppli.Sheets.Add after:=Worksheets(Worksheets.Count)
With classeurAppli.Sheets(classeurAppli.Sheets.Count)
.Cells(1, 1).Value = "Matrice I-M"
For détenteur = 1 To Nbentités
For détenu = 1 To Nbentités
If détenteur = 1 Then
.Cells(1, détenu + 1).Value = Entités(détenu)
.Cells(3 + Nbentités, détenu + 1).Value = Entités(détenu)
End If
If détenu = 1 Then
.Cells(détenteur + 1, 1).Value = Entités(détenteur)
.Cells(détenteur + Nbentités + 3, 1).Value = Entités(détenteur)
End If
.Cells(détenteur + 1, détenu + 1).Value = MatriceImoinsDétentions(détenteur, détenu)
Next détenu
Next détenteur
.Cells(3 + Nbentités, 1).Value = "Matrice (I-M)^-1"
.Range("B" & 4 + Nbentités & ":" & RéfColonne(Nbentités) & Nbentités * 2 + 3).FormulaArray = "=minverse(B2:" & RéfColonne(Nbentités) & Nbentités + 1 & ")"
'FormulaArray équivaut à Ctrl+Maj+Entrée
For détenu = 2 To Nbentités
PourcentagesIntérêt(détenu) = Cells(4 + Nbentités, détenu + 1)
Next détenu
End With
End Sub
Extrait n°2 : procédure « AfficheMatrice » rédigée sous DELPHI :
procedure AfficheMatrice;
var
detenteur : Integer;
detenu : Integer;
begin
cellule:=classeurexcelresultat.sheets[feuilleresultat];
cellule.Cells[1, 1].Value := 'Matrice I-M';
For detenteur := 1 To Nbentites do
begin
For detenu := 1 To Nbentites do
begin
If detenteur = 1 Then
begin
cellule.Cells[1, detenu + 1].Value := Entites[detenu-1];
cellule.Cells[3 + Nbentites, detenu + 1].Value := Entites[detenu-1];
End;
If detenu = 1 Then
begin
cellule.Cells[detenteur + 1, 1].Value := Entites[detenteur-1];
cellule.Cells[detenteur + Nbentites + 3, 1].Value := Entites[detenteur-1];
End;
cellule.Cells[detenteur + 1, detenu + 1].Value := MatriceImoinsDetentions[detenteur-1, detenu-1];
end;
end;
cellule.Cells[3 + Nbentites, 1].Value := 'Matrice (I-M)^-1';
cellule.Range['B' + inttostr(4 + Nbentites) + ':' + RefColonne(Nbentites) + inttostr(Nbentites * 2 + 3)].FormulaArray := '=inversemat(B2:' + RefColonne(Nbentites) + inttostr(Nbentites + 1) + ')';
//FormulaArray équivaut à Ctrl+Maj+Entrée
For detenu := 2 To Nbentites do
begin
PourcentagesInteret[detenu-2] := cellule.Cells[4 + Nbentites, detenu + 1];
end;
End;
Au premier coup d’œil, on remarque la grande similitude des deux codes :
- Même architecture (langages structurés),
- Mots clefs semblables (boucles For To Next pour l’un, For To End pour l’autre…),
- Interactions avec EXCEL à l’aide de mots clefs identiques : .Cells, . Range…
Hormis quelques principes d’écriture différents (affectation d’une valeur à une variable à l’aide de = en VBA, := sous DELPHI, l’usage des parenthèses dans les variables tableaux en VBA et des crochets sous DELPHI…), l’on peut noter quelques subtilités à connaître pour le programmeur qui s’aventure dans la transposition de programmes et notamment :
- L’indice inférieur des variables tableaux est zéro en VBA alors qu’il est de un sous DELPHI (le lecteur attentif aura remarqué dans le code que la restitution de données contenues dans les variables tableaux en VBA est rédigée ainsi : Entités(détenu) alors qu’elle est retranscrite ainsi sous DELPHI : Entites[detenu-1]. L’instruction OPTION BASE 1 permet d’établir l’indice inférieur à un en VBA (toutefois cette option n’a pas été utilisée à l’origine).
- En VBA, les formules EXCEL sont rédigées à l’aide des instructions en version anglaise alors que sous DELPHI, on recourt au français, il en est ainsi par exemple pour le calcul de la matrice inverse :
– Code VBA : “=minverse(B2:” & RéfColonne(Nbentités) & Nbentités + 1 & “)”
– Code DELPHI : ‘=inversemat(B2:’ + RefColonne(Nbentites) + inttostr(Nbentites + 1) + ‘)’;
Il en est de même pour les formats de nombre sous EXCEL (la décimale notée par le point en VBA et la virgule sous DELPHI).
Pour résumer, la conversion de programmes d’un langage à l’autre ne pose pas de difficultés insurmontable mais nécessite rigueur et concentration.
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



