condition SI en fonction de la différence entre cellules.

lefrizey

XLDnaute Nouveau
Bonjour à tous,

J'ai un compte à plage variable pour lequel j'ai fabriqué un macro qui fait la somme débit (colonne J) et crédit (colonne K). Le problème est que je dois aussi générer le solde juste en dessous. Le solde est la différence des sommes de colonnes J et K ou K et J.

Si Somme J > Somme K, solde = somme J - somme K
Si par contre somme K > somme J, solde = somme K - somme J.

Le solde doit apparaitre en dessous de somme J si somme K>somme J ou bien en dessous de K, si somme J>somme K.

Je joins le fichier dans lequel j'ai commencé la syntaxe et ou j'ai mieux expliquer le problème.


merci bien!!
 

Pièces jointes

  • Gener.Solde.Cptable.xlsm
    20.8 KB · Affichages: 47

Robert

XLDnaute Barbatruc
Repose en paix
Re : condition SI en fonction de la différence entre cellules.

Bonjour Lefrizey, Rachid, bonjour le forum,

En pièce jointe un proposition VBA avec la macro événementielle Change ci-dessous :
Code:
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

@Rachid : J'allais écrire en première ligne "Bonjour les frisés", parce que ça t'aurais fait marrer mais pas sûr que ça ait plu à Lefrizey. Mais comme tu vois, je n'ai pas pu m'empêcher de la sortir, ma vanne à deux balles...

[ÉDITION]
Suite à la judicieuse remarque d'Excfl (bonjour Excfl), j'ai modifié le code en intégrant SOLDE CRÉDITEUR ou SOLDE DÉBITEUR... Comme j'ai aussi changé la mise en forme des cellules H18 et I18 je mets le fichier en pièce jointe.

Le fichier :
 

Pièces jointes

  • Lefrizey_v01.xlsm
    23.5 KB · Affichages: 23
Dernière édition:

excfl

XLDnaute Barbatruc
Re : condition SI en fonction de la différence entre cellules.

Bonjour le forum, R@chid, Robert

I18 : Précision : Solde Débiteur ou Créditeur.

Ressaisie des sommes Débit & Crédit.

excfl
 

Pièces jointes

  • Solde débiteur ou créditeur.xlsm
    13.9 KB · Affichages: 38
Dernière édition:

lefrizey

XLDnaute Nouveau
Re : condition SI en fonction de la différence entre cellules.

Mes colonnes débit et crédit sont dynamiques. Je ne peux pas connaitre forcément K17 ou J17.
J'arrive à me situer sur les cellules en dessous des sommes, mais c'est entrer la syntaxe (condition) qui pose problème.
 

lefrizey

XLDnaute Nouveau
Re : condition SI en fonction de la différence entre cellules.

Merci pour la réponse, mais ma préoccupation reste la même. Mes colonnes débit et crédit sont dynamiques. Je dois écrire en VBA pour entrer les conditions. Mon fichier joint a un début de syntaxe.
 

excfl

XLDnaute Barbatruc
Re : condition SI en fonction de la différence entre cellules.

Re,

Une solution qui fonctionne quel que soit le nombre de lignes renseignées.

mbbp
 

Pièces jointes

  • Solde débiteur ou créditeur V2.xlsm
    13.9 KB · Affichages: 36

Robert

XLDnaute Barbatruc
Repose en paix
Re : condition SI en fonction de la différence entre cellules.

Bonjour le fil, bonjour le forum,

Bonjour Robert,
Je n'arrive pas à intégrer la macro que tu m'as proposée et à la faire fonctionner !
Elle fonctionne toute seule chaque fois que tu vas renseigner une valeur dans une des colonnes Crédit ou Débit... Il te suffit de copier le code. Dans ton fichier original, clique avec le bouton droit dans l'onglet concerné, choisis l'option Visualiser le code. Là tu colles le code dans la grand rectangle à droite... Ce code est déjà intégré dans le fichier que j'ai mis en pièce jointe au post #3.
 

excfl

XLDnaute Barbatruc
Re : condition SI en fonction de la différence entre cellules.

Re,

Sauf si je me trompe, le fichier que tu m'as renvoyé n'a pas la macro que tu me proposes.

Je n'utilise pas de macro dans ma réponse.

Quel que soit le nombre de lignes de ton tableau :
En P7 : le solde s'il est créditeur
En Q7 : le solde s'il est débiteur
Vérification : le solde est indiqué du côté le plus faible pour avoir les totaux égaux.

excfl
 

Discussions similaires

Réponses
8
Affichages
417
Réponses
2
Affichages
160

Statistiques des forums

Discussions
312 156
Messages
2 085 812
Membres
102 988
dernier inscrit
doryan