Private Sub Worksheet_Change(ByVal Target As Range)
Dim O As Object 'déclare la variable O (Onglet)
Dim R As Range 'déclare la variable R (Recherche)
Dim LT As Integer 'déclare la variable LT (Ligne Total)
Dim PL As Range 'déclare la variable PL (PLage)
Dim SD As Double 'déclare la variable SD (Somme Débit)
Dim SC As Double 'déclare la variable SC(Somme Crédit)
Set O = Sheets("Feuil4") 'définit l'onglet O
'définit la recherche R (recherche le mot "TOTAL" en entier dans la colonne 9 (=J) de l'onglet O
Set R = O.Columns(9).Find("TOTAL", , xlValues, xlWhole)
If Not R Is Nothing Then LT = R.Row - 1 'si il existe au moins une occurrence trouvée définit la ligne du total LT
Set PL = O.Range("J2:K" & LT) 'définit la plage PL (toutes les ligne entre la première et la ligne du total des colonnes J et K)
'si le changement a lieu ailleurs que dans la plage PL sort de la procédure (évite les boucle de la procédure)
If Application.Intersect(Target, PL) Is Nothing Then Exit Sub
SD = CDbl(R.Offset(0, 1).Value) 'définit la somme des débits SD
SC = CDbl(R.Offset(0, 2).Value) 'définit la somme des crédit SC
If SD > SC Then 'condition si la somme des débits est supérieure à la somme des crédits
R.Offset(1, -1).Value = "SOLDE DÉBITEUR"
R.Offset(1, 1).Value = SD - SC 'renvoie la différence sous la somme des débits
R.Offset(1, 2).Value = "" 'vide la cellule sous la somme des crédits
Else 'sinon
R.Offset(1, -1).Value = "SOLDE CRÉDITEUR"
R.Offset(1, 1).Value = "" 'vide la cellue sous la somme des débits
R.Offset(1, 2).Value = SC - SD 'renvoie la différence sous la somme des crédit
End If 'fin de la condition
If SD = SC Then 'condition : si les somme sont égales
R.Offset(1, -1).Value = "SOLDE"
R.Offset(1, 1).Value = 0 'renvoie la valeur nulle sous la somme des débits
R.Offset(1, 2).Value = 0 'renvoie la valeur nulle sous la somme des crédit
End If 'fin de la condition
End Sub