XL 2016 Soustraction par ordre

Rabeto

XLDnaute Occasionnel
Bonjour,

Je souhaite faire une soustraction selon l'ordre des valeurs du plus grand au plus petit pour chaque ligne et dans la colonne à côté de la réponse faire l'inverse.

Merci
 

Pièces jointes

  • Soustraire du plus grand au plus petit.xlsx
    9.4 KB · Affichages: 6
Solution
Bonjour le fil, bonjour le forum,

Ooops j'ai l'impression d'être complètement à coté de la plaque. Tant pis, j'envoie quand même ma proposition VBA :

VB:
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim PL As Range 'déclare la variable PL (PLage)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim I As Integer 'déclare la variable I (Incrément)
Dim TL(1 To 7) 'déclare la variable TL (Tableau des Lignes)

Set O = Worksheets("Feuil1") 'définit l'onglet O
Set PL = O.Range("A1").CurrentRegion 'définit la plage PL
DL = PL.Rows.Count 'définit la dernière ligne éditée de la plage PL
For I = 2 To DL 'boucle des ligne 2 à DL
    TL(1) = Application.WorksheetFunction.Large(PL.Rows(I), 1) 'définit la...

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Rabeto,
Pourquoi pas tout simplement :
VB:
=GRANDE.VALEUR($A2:$G2;1)-
GRANDE.VALEUR($A2:$G2;2)-
GRANDE.VALEUR($A2:$G2;3)-
GRANDE.VALEUR($A2:$G2;4)-
GRANDE.VALEUR($A2:$G2;5)-
GRANDE.VALEUR($A2:$G2;6)-
GRANDE.VALEUR($A2:$G2;7)
Ou encore plus simple :
VB:
=2*MAX(A2:G2)-SOMME(A2:G2)
 

Pièces jointes

  • Soustraire du plus grand au plus petit.xlsx
    10 KB · Affichages: 3

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour le fil, bonjour le forum,

Ooops j'ai l'impression d'être complètement à coté de la plaque. Tant pis, j'envoie quand même ma proposition VBA :

VB:
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim PL As Range 'déclare la variable PL (PLage)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim I As Integer 'déclare la variable I (Incrément)
Dim TL(1 To 7) 'déclare la variable TL (Tableau des Lignes)

Set O = Worksheets("Feuil1") 'définit l'onglet O
Set PL = O.Range("A1").CurrentRegion 'définit la plage PL
DL = PL.Rows.Count 'définit la dernière ligne éditée de la plage PL
For I = 2 To DL 'boucle des ligne 2 à DL
    TL(1) = Application.WorksheetFunction.Large(PL.Rows(I), 1) 'définit la première plus grande valeur de la ligne de la boucle
    TL(2) = Application.WorksheetFunction.Large(PL.Rows(I), 2) 'définit la seconde plus grande valeur de la ligne de la boucle
    TL(3) = Application.WorksheetFunction.Large(PL.Rows(I), 3) 'définit la troisième plus grande valeur de la ligne de la boucle
    TL(4) = Application.WorksheetFunction.Large(PL.Rows(I), 4) 'définit la quatriemme plus grande valeur de la ligne de la boucle
    TL(5) = Application.WorksheetFunction.Large(PL.Rows(I), 5) 'définit la cinquième plus grande valeur de la ligne de la boucle
    TL(6) = Application.WorksheetFunction.Large(PL.Rows(I), 6) 'définit la sixième plus grande valeur de la ligne de la boucle
    TL(7) = Application.WorksheetFunction.Large(PL.Rows(I), 7) 'définit la septième plus grande valeur de la ligne de la boucle
    'renvoie dans la cellule ligne I colonne "I" la valeur de la soustraction
    O.Cells(I, "I").Value = TL(1) - TL(2) - TL(3) - TL(4) - TL(5) - TL(6) - TL(7)
Next I 'prochaine ligne de la boucle
End Sub

Les calculs sont fait avec les valeurs réelles, pas les arrondis affichés...
 

AtTheOne

XLDnaute Accro
Supporter XLD
Bonjour @Rabeto
Une petite question :
Faut-il faire une simple soustraction des valeurs (ton exemple ligne 2 donne alors -138% ->137,04% sans les arrondis)
Dans ce cas le formule est
Code:
{=GRANDE.VALEUR(A2:G2;1)-SOMME(SIERREUR(GRANDE.VALEUR(A2:G2;COLONNE(A:G)-COLONNE(A2)+2);0))}

Pour des valeurs contenues en A2:G2, formule matricielle à valider par CTRL+MAJ+ENTREE

Je ne comprends pas bien ce que tu entends par l'inverse dans la colonne d'à coté.
Voir le fichier joint.

Cordialement
Alain
 

Pièces jointes

  • Soustraire du plus grand au plus petit.xlsx
    11 KB · Affichages: 1
Dernière édition:

Statistiques des forums

Discussions
312 492
Messages
2 088 910
Membres
103 983
dernier inscrit
AlbertCouillard