Forum de discussion

Création de fonction Excel

#1

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.

0 Likes

#2

il semblerait que cette fonction existe déjà:
http://www.techonthenet.com/excel/formulas/max.php

0 Likes

#3

Non je pense que tu as mal lu mon message,
en effet le lien que tu me donnes me montre la fonction MAX normale alors que je voudrais créer une fonction MAX.SI comme j l’ai décrite dans mon premier message,
Merci à vous pour toute nouvelle aide

0 Likes

#4

et ça fait quoi SUM.SI ?

0 Likes

#5

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

0 Likes

#6

@ Sans-Nom :
La syntaxe de SOMME.SI est la suivante :
SOMME.SI ( plage_de_critère ; condition ; plage_de_somme )

Le contenu de chaque cellule de la plage_de_critère est testé et s’il correspond à la condition, alors le contenu de la cellule correspondante dans la plage_de_somme est pris en compte pour la somme.

0 Likes

#7

Oui et ce que j’aimerais c’est qu’au lieu de faire la somme des endroits où il rencontre le critère, qu’il me prenne le max.
Merci pour vos réponses

0 Likes

#8

J’ai bien compris ton problème, mais je ne vois pas la solution. :frowning:
Tu ne veux pas utiliser de macro ?

0 Likes

#9

et non pour cela il me faut une fonction
merci quand meme
Je suis ouvert à toute autre réponse

0 Likes

#10

Et utiliser une colonne supplémentaire pour faire des calculs intermédiaires, ça te conviendrait ?

Si oui, je te propose cette solution :

  • en D2 tu écris cette formule : =SI(B2=B$6;C2),
  • tu fais un copier/coller de cette formule de D3 à D5,
  • en C6 tu écris la formule : =MAX(D2:D5),

En B6 tu écris ton critère de recherche, par exemple : Pierre.
Tu obtiens donc, dans la cellule C6, la valeur maximale de Pierre.

"Astuce" : tu peux cacher la colonne D si tu trouves que ça ne fait pas joli, ou alors la laisser affichée, mais cacher le contenu des cellules D2 à D5.

0 Likes

#11

:hello:
une fonction personnelle créee en VBA te conviendrait ?
:slight_smile:

0 Likes

#12

Tout d’abord merci à toi jacky67 pour tes réponses mais c’est vrai que je préfererai une formule toute faite en VBA, c’est pourquoi j’accepte ton aide avec plaisir Pierrejean.
Merci à vous et j’attends la solution :slight_smile:

0 Likes

#13

Please

0 Likes

#14

Vi, Terrenso a raison : please !

J’attends aussi la réponse et merci de m’expliquer d’une part la différence entre une macro et une fonction personnelle et d’autre part comment s’utilise une fonction personnelle.

0 Likes

#15

:hello:
voici la fonction (avec mes excuses pour le retard mais j’ai été pris par des imperatifs familiaux)



Dim valeur As Double
Function speciale(lerange As Range, lenom As String)
valeur = 0
For Each c In lerange
If c.Value = lenom Then
If c.Offset(0, 1).Value > valeur Then valeur = c.Offset(0, 1).Value
End If
Next
speciale = valeur
End Function

pour jacky67:
une fonction personnelle se retrouve avec les fonctions classiques et s’utilise de la même facon
:slight_smile:

0 Likes

#16

@ PierreJean :
Merci pour la réponse, mais je ne vois pas où et comment entrer le code.
Est-ce que ça s’écrit dans un module ?

Oui, je sais, je suis un boulet, mais j’essaye de m’améliorer (mais non, pas pour devenir un super-boulet…:().

0 Likes

#17

:hello: jacky67
on est tous des boulets quelque part !!!

pour entrer le code:
outils > macro > visual basic editor > insertion > module

ne pas hesiter à demander des precisions si necessaire

edit : en me relisant je vois que tu as posé la question : effectivement cela se met dans un module

:slight_smile:

0 Likes

#18

Un immense merci à toi.

C’est une fonctionnalité que je ne connaissai pas.
Je vais tester ça de suite.

Merci encore
@+

0 Likes

#19

Tout d’abord merci,
mais il y a un probleme
en effet,
ta fonction fonctionne si la plage ou l’on doit rechercher le critere et la plage ou l’on doit rechercher le max en fonction du critere sont à coté.
J’aimerais différencier les 2 pour arriver à ce model :
MAXSI(Plage ou l’on cherche le critere; Critere; MAX de la plage sélectionnée en tenant compte du critere)

0 Likes

#20

:hello:
effectivement c’est le role d’offset(0,1) de voir la cellule voisine
pour definir la valeur d’offset en se referant a une autre plage je n’ais pas la solution immediatement et je dois malheureusement partir
Des que possible je reprends les cogitations
a+
:slight_smile:

0 Likes