Fonction Excel en VBA

T

Terrenso

Guest
Tout d'abord bonjour,
voilà, je ne maitrise pas du tout le VBA et j'aimerais avoir une fonction qui me permet de trouver le maximum d'une plage tout en tenant compte d'un critère.
exemple :
Date : Noms : Montants:
01/01/2005 Pierre 3
04/05/2005 Paul 4
06/07/2005 Pierre 12
18/10/2005 Jacques 6
J'aimerais ici trouver le maximum de montant d'achat qu'a fait Pierre lors d'une seule journée.
Dans ce cas ma plage serait B2:B5
mon critère serait Pierre
et ma plage ou je veux connaitre le max en fonction du critère serait C2:C5
Et je veux que le résultat trouvé par cette fonction soit 12 c'est à dire le montant des achats qu'a fait Pierre le 06/07/2005 (car il est supérieur au montant des achats que Pierre a fait le 01/01/2005)

La synthaxe de cette fonction serait la même que la fonction SOMME.SI à la seule différence qu'il ne faut pas faire la somme en fonction du critere mais qu'il faut trouver le max en fonction du critère.

Cela donnerait :
MAX.SI(plage où l'on va chercher le critère; critère; plage ou l'on va chercher le MAX en fonction du critère)


Merci beaucoup pour toutes les aides que vous pourrez m'apporter.
 

Hervé

XLDnaute Barbatruc
Bonjour terrenso, michel


En pièce jointe une tentative de réponse par formule personnalisée VBA.

salut
[file name=Classeur1_20051112180130.zip size=7155]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Classeur1_20051112180130.zip[/file]
 

Pièces jointes

  • Classeur1_20051112180130.zip
    7 KB · Affichages: 33
T

Terrenso

Guest
Déja merci à tous les deux pour vos réponses,
la solution d'hervé m'est la plus adapté, seul hic c'est que lorsque je modifie l'emplacement de cette fonction dans une feuille(lorsque je déplce la plage1) le résultat est 0 ce qui n'est pas juste.
Il doit y avoir un manque dans la forumule ,
pouvez vous m'aider
Merci beaucoup
 

Hervé

XLDnaute Barbatruc
re terrenso, michel, le forum, la terre

J'ai pas tout compris à ta derniere demande.

J'ai mis chaque plage sur une feuille différente, et j'ai pas de souci.

Pourrais-tu etre plus précis

en attendant je te souhaite une bonne soirée.

:)

salut
 
T

Terrenso

Guest
Bon c'est pas grave merci quand meem Hervé,
j'ai trouvé une autre personne qui a pu m'aider, si ca vous interresse la réponse qu'il m'a donné est la suivante :
Merci encore et @+ :


Dim valeur As Double
Function maxsi(plage As Range, critère As String, max_plage As Range)
x = max_plage.Column - plage.Column
valeur = 0
For Each c In plage
If c.Value = critère Then
If c.Offset(0, x).Value > valeur Then valeur = c.Offset(0, x).Value
End If
Next
maxsi = valeur
End Function
 

Discussions similaires

Réponses
2
Affichages
282

Statistiques des forums

Discussions
312 492
Messages
2 088 930
Membres
103 984
dernier inscrit
maliko67