Création d'une fonction sous Excel - VB/VBA/VBS - Programmation
Marsh Posté le 11-11-2005 à 18:44:16
bonjour,
Exemple d'une fonction qui renvoie le MAX des multiples d'un nombre de la sélection courante:
Code :
|
Cette fonction doit être collée dans un module quelconque (Module1, Module2...) pas dans un module de Feuille.
on l'utilise dans la feuille de calcul comme une fonction ordinaire
la formule suivante :
=MAXIF(B1:B5;2)
renvoie 8 si B1:B5 contient 3,4,8,9,13
Elle est alors visible dans la liste des fonctions (dernière ligne : personnalisées)
A+
Marsh Posté le 11-11-2005 à 19:28:55
Merci pour ta réponse mais la fonction que tu me proposes me permet de trouver le maximum d'une plage qui est multiplue de 2 et je ne recherche pas cela.
En effet, 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)
Merci beaucoup pour vos nouvelles réponses
Marsh Posté le 11-11-2005 à 22:57:07
Re...
Je t'ai donné un exemple de création de fonction selon un critère qui chez moi est un multiple de x.
A toi de l'adapter en fonction de ton critère...
Ce n'est pas bien difficile :
Je te le fait à la hache et sans test...
Function MAXIF(o As Range, crit As Range)
z = crit.Value
For Each cellule In o
iR = cellule.Row
If Cells(iR, crit.Column) = z Then If cellule > resultat Then resultat = cellule
Next
MAXIF = resultat
End Function
Marsh Posté le 11-11-2005 à 23:39:13
Merci galopin de l'intéret que tu portes à ma demande mais je dois te dire que je ne sais pas du tout programmer c'est pourquoi je te demande stp, si cela ne te dérange pas, de me faire cette fonction entierement.
J'ai testé celle que tu as faite mais elle ne rponds pas à ma requete.
Si tu peux te pencher plus amplement sur ma question je t'en serait beaucoup reconnaissant,
Merci encore.
Marsh Posté le 12-11-2005 à 05:07:25
bonjour,
ben, normalement ça marche...
je l'ai juste adaptée un poil pour que ce soit impec.
Code :
|
Les conditions d'utilisation sont les mêmes : Module Standart
syntaxe de l'appel:
=MAXIF(C2:C10;B2)
A+
Marsh Posté le 12-11-2005 à 11:31:35
Dans la formule que tu me donnes, lorsque je la rentre en VBA et que je l'applique sous Excel, il me demande seulement une plage et un critère (et donc pas de plage ou il faut chercher le MAX en fonction du critere).
J'espere qe tu pourras prendre le temps de te pencher un peu sur la question
Merci déja beaucoup
Marsh Posté le 12-11-2005 à 11:34:19
Derniere précision :
Je voudais que la formule se présente comme ceci :
MAXIF(plage de critère, critère, plage du max à faire en fonction du critere) <=(comme la fonction SOMME.SI mais ici il faut rechercher le MAX et non faire la SOMME
Voila merci encore
Marsh Posté le 12-11-2005 à 15:17:16
Bonjour,
Cette formule s'adapte exactement à ton exemple.
Plage correspond à la colonne dont il faut trouver le max en fonction du critère.
Pour critère, pas besoin de déterminer une plage : tu pointes directement sur Pierre, Paul ou Jacques...
Je comprend qu'une formule plus générale permettant de faire un critère conditionnel t'interesserait plus, mais dans ce cas... il faudra chercher ta réponse ailleurs !
Si tu la trouves je suis preneur !
A+
Marsh Posté le 12-11-2005 à 17:03:36
Et oui il me faudrait une fonction avec un critère conditionnel,
c'est pourquoi je suis toujours ouvert à toute les aides que vous pouvez m'offir,
merci à tous ce qui m'aideront
Marsh Posté le 12-11-2005 à 23:18:26
Bon pour galopin et pour les autres , voila la solution que j'attendais et qui m'a été donné trés gentiement par une personne.
Régalez vous 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
Marsh Posté le 11-11-2005 à 16:34:22
Tout d'abord bonjour,
voila j'aimerais savoir s'il est possible de créer une fonction sous Excel.
je m'explique, j'aimerais créer une fonction MAX.SI un peu similaire à la fonction SOMME.SI, qui elle existe, mais cette nouvelle fonction ne ferait pas la somme mais rechercherait le max de la plage sélectionnée.
Merci beaucoup pour votre réponse,
Bye.