Formule max

Résolu
drogba28 Messages postés 13 Date d'inscription mardi 28 septembre 2004 Statut Membre Dernière intervention 30 mars 2011 - 20 mars 2011 à 15:57
drogba28 Messages postés 13 Date d'inscription mardi 28 septembre 2004 Statut Membre Dernière intervention 30 mars 2011 - 30 mars 2011 à 12:59
Bonjour,

Je suis sur Excel 2003.
Je souhaite trouver la valeur max d'une colonne tout en excluant des valeurs dans la plage de données.

Par exemple mes valeurs sont classés dans la colonne A mais je souhaite que seul les veleurs avec un 1 dans la colonne B soient prise en compte.

A B

1 45 1
2 67 1
3 99 0
4 98 0
5 3 1

La valeur max dans ce cas là est 67.

Merci d'avance.

6 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
28 mars 2011 à 09:03
...

Public Function MyMax(Values As Range, Where As Range) As Variant
Dim i As Long
Dim nRow As Long
    '# nRow est la ligne de la première donnée.
    nRow = Values.Row
    '# Pour chacune des lignes de la Range...
    For i = 1 To Values.Rows.Count
        '# Si la cellule de la colonne 'B' correspondante ne contient pas 0 
        If Where.Cells(nRow) Then
            '# alors on calcule le max
            If MyMax < Values.Cells(nRow) Then
                MyMax = Values.Cells(nRow)
            End If
        End If
        nRow = nRow + 1
    Next
End Function


pour adapter pour ton cas, tu peux simplement faire :
Public Function MyMax(Values As Range, Where As Range, Byval Value as long) As Variant
Dim i As Long
Dim nRow As Long
    nRow = Values.Row
    For i = 1 To Values.Rows.Count
        If Where.Cells(nRow) = Value Then
            If MyMax < Values.Cells(nRow) Then
                MyMax = Values.Cells(nRow)
            End If
        End If
        nRow = nRow + 1
    Next
End Function


et ainsi faire :

=MyMAX(A1:A10; B1:B10; 1)
=MyMAX(A1:A10; B1:B10; 2)

...

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
21 mars 2011 à 10:18
Solution de facilité :

=MAX(A1*B1;A2*B2;A3*B3;A4*B4;A5*B5)

Après, tu peux te faire un colonne C contenant:
=A1*B1
=A2*B2
...
=A5*B5
et simplement faire un
=MAX(C1:C5)

Autre solution, faire une Macro :

=MyMAX(A1:A5; B1:B5)
Public Function MyMax(Values As Range, Where As Range) As Variant
Dim i As Long
Dim nRow As Long
    nRow = Values.Row
    For i = 1 To Values.Rows.Count
        If Where.Cells(nRow) Then
            If MyMax < Values.Cells(nRow) Then
                MyMax = Values.Cells(nRow)
            End If
        End If
        nRow = nRow + 1
    Next
End Function



Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
drogba28 Messages postés 13 Date d'inscription mardi 28 septembre 2004 Statut Membre Dernière intervention 30 mars 2011
23 mars 2011 à 14:17
Bonjour,

Est-on obligé de designé les colonnes et lignes dans la formule de mymax?
Car je ouhaiterais que Excel me donne la valeur max des données ou il y a un 1 devant puis la valeur max des donnés ou il y a un 2 devant sans avoir a changé ls plage de donnéés manuellement

ex:

A B

1 45 1
2 67 1
3 99 0
4 98 0
5 3 1
6 56 2
7 58 2
8 21 0
9 23 0
10 4 2

max1=67
max2=58

merci
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
23 mars 2011 à 14:23
j'ai rendu cette formule générique...
libre a toi de l'adapter...

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
drogba28 Messages postés 13 Date d'inscription mardi 28 septembre 2004 Statut Membre Dernière intervention 30 mars 2011
26 mars 2011 à 14:27
re,

Pour être franc j'ai du mal à comprendre votre code, pouvez-vous me faire un exemple? si c'est pas trop demandé...
0
drogba28 Messages postés 13 Date d'inscription mardi 28 septembre 2004 Statut Membre Dernière intervention 30 mars 2011
30 mars 2011 à 12:59
merci
0
Rejoignez-nous