Juste une formule

7final.xlsx (33.29 Ko)

bonsoir encore merci pour votre aide

nous avons de D18 a K18 des chiffres que je rentre manuellement

et nous avons d'autres chiffres de D27 a K27

EXEMPLE : le chiffre 1 en D18 correspond a 88.2 en D27

le chiffre 2 qui et en E18 correspond a 126.2 en E27

Et nous avons en F31 a I31 2157

Qui correspond aux plus grande valeur en D27 a K27

le chiffre 2 correspond a 126.2

le 1 correspond a 88.2

le 5 correspond a 71.7

et le 7 correspond a 65.7

la formule serait de me classer du plus grand au plus petit

important il en faut que 4 et qu'il me les mette en F31 a I31

Bonjour,

dis moi si j'ai bien compris le schmilblick

=INDEX($D$18:$K$18;EQUIV(GRANDE.VALEUR($D$27:$K$27;COLONNE()-5);$D$27:$K$27;0))
6final.xlsx (32.95 Ko)

exactement ça milles merci pour votre aide

puis-je te demander un dernier truc ?

bonjour

pourrais tu stp me refaire la formule ci jointe pour la remettre dans le fichier ci joint

j'ai mis une place pour le bouton j'ai écris (pour le bouton)

merci pour ton aide et ta patience

(33 Kio) Pas encore téléchargé

Sub Macro1()

8final-2.xlsx (33.00 Ko)

Dim O As Worksheet 'déclare la variable O (Onglet)

Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)

Dim A() As Variant 'déclare la variable A (taleau TOCA)

Dim B() As Variant 'déclare la variable B (tableau TOCB)

Dim X() As Variant 'déclare la variable X (Tableau TOCX)

Dim IA As Integer 'déclare la variable IA (Incrément A)

Dim IB As Integer 'déclare la variable IB (Incrément B)

Dim IX As Integer 'déclare la variable IX (Incrément X)

Dim T1 As Variant 'déclare la variable T1 (variable Temporaire 1)

Dim T2 As Variant 'déclare la variable T2 (variable Temporaire 2)

Set O = Worksheets("Feuil1") 'définit l'onglet O

TV = O.Range("A2").CurrentRegion 'définit la tableau des valeurs TV

O.Range("C14:I16").ClearContents 'effaceles anciennes données

For J = 2 To 15 'boucle sur les colonne 2 à 15

Select Case TV(3, J) 'agit en fonction de la donnée ligne 3 colonne J du tableau des valeurs TV

Case Is < 20 'cas inférieur à 20

If TV(3, J) > 6 Then 'condition : si TV(3,J) est supérieur à 6

ReDim Preserve A(1 To 2, 0 To IA) 'redimensionne le tableau A (2 lignes, IA colonnes)

A(1, IA) = TV(2, J) 'récupère le [Nº] dans la ligne 1 de A

A(2, IA) = TV(3, J) 'récupère la [COTES] dans la ligne 2 de A

IA = IA + 1 'incrémente IA

End If 'fin de la condition

Case Is < 31 'cas inférieur à 31

If TV(3, J) > 20 Then 'condition : si TV(3,J) est supérieur à 20

ReDim Preserve B(1 To 2, 0 To IB) 'redimensionne le tableau B (2 lignes, IA colonnes)

B(1, IB) = TV(2, J) 'récupère le [Nº] dans la ligne 1 de B

B(2, IB) = TV(3, J) 'récupère la [COTES] dans la ligne 2 de B

IB = IB + 1 'incrémente IB

End If 'fin de la condition

Case Is > 31 'cas supérieur à 31

ReDim Preserve X(1 To 2, 0 To IX) 'redimensionne le tableau X (2 lignes, IA colonnes)

X(1, IX) = TV(2, J) 'récupère le [Nº] dans la ligne 1 de X

X(2, IX) = TV(3, J) 'récupère la [COTES] dans la ligne 2 de X

IX = IX + 1 'incrémente IX

End Select 'fin de l'action en fonction de la donnée ligne 3 colonne J du tableau des valeurs TV

Next J 'prochaine colonne de la boucle

If IA > 0 Then 'condition : si IA est positive

For I = 0 To UBound(A, 2) 'boucle 1 : sur tous les éléments I du tableau A

For J = 0 To UBound(A, 2) 'boucle 2 : sur tous les éléments J du tableau A

If I <> J And A(2, I) < A(2, J) Then 'si I est différent de J et la cote de A(I) est inférieure à la cote de A(J)

T1 = A(1, I): A(1, I) = A(1, J): A(1, J) = T1 'tri des données

T2 = A(2, I): A(2, I) = A(2, J): A(2, J) = T2 'tri des données

End If 'fin de la condition

Next J 'prochain élément de la boucle 2

Next I 'prochain élément de la boucle 1

O.Range("C14").Resize(1, UBound(A, 2) + 1).Value = Application.Index(A, 1) 'renvoie dans C14 redimensionnée la ligne 1 de A

End If 'fin de la condition

If IB > 0 Then 'idem IA

For I = 0 To UBound(B, 2)

For J = 0 To UBound(B, 2)

If I <> J And B(2, I) < B(2, J) Then

T1 = B(1, I): B(1, I) = B(1, J): B(1, J) = T1

T2 = B(2, I): B(2, I) = B(2, J): B(2, J) = T2

End If

Next J

Next I

O.Range("C15").Resize(1, UBound(B, 2) + 1).Value = Application.Index(B, 1)

End If

If IX > 0 Then 'idem IA

For I = 0 To UBound(X, 2)

For J = 0 To UBound(X, 2)

If I <> J And X(2, I) < X(2, J) Then

T1 = X(1, I): X(1, I) = X(1, J): X(1, J) = T1

T2 = X(2, I): X(2, I) = X(2, J): X(2, J) = T2

End If

Next J

Next I

O.Range("C16").Resize(1, UBound(X, 2) + 1).Value = Application.Index(X, 1)

End If

End Sub

Haut

Je n'ai pas bien compris ... car tu postes une macro, avec un fichier sans macro, sachant que le sujet est la mise au point d'une formule !!

Rechercher des sujets similaires à "juste formule"