Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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:
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…