Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1022 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Création d'une fonction sous Excel

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Création d'une fonction sous Excel

n°1243934
terrenso
Posté le 11-11-2005 à 16:34:22  profilanswer
 

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.

mood
Publicité
Posté le 11-11-2005 à 16:34:22  profilanswer
 

n°1243976
terrenso
Posté le 11-11-2005 à 18:19:46  profilanswer
 

Please

n°1243984
galopin01
Posté le 11-11-2005 à 18:44:16  profilanswer
 

bonjour,
Exemple d'une fonction qui renvoie le MAX des multiples d'un nombre de la sélection courante:

Code :
  1. Function MAXIF(o As Range, i As Integer)
  2. For Each cellule In o
  3. If cellule Mod i = 0 Then If cellule > resultat Then resultat = cellule
  4. Next
  5. MAXIF = resultat
  6. End Function

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+

n°1243997
terrenso
Posté le 11-11-2005 à 19:28:55  profilanswer
 

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

n°1244029
terrenso
Posté le 11-11-2005 à 21:33:19  profilanswer
 

Please

n°1244061
galopin01
Posté le 11-11-2005 à 22:57:07  profilanswer
 

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


---------------
roger
n°1244073
terrenso
Posté le 11-11-2005 à 23:39:13  profilanswer
 

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.

n°1244100
terrenso
Posté le 12-11-2005 à 00:30:58  profilanswer
 

Please

n°1244136
galopin01
Posté le 12-11-2005 à 05:07:25  profilanswer
 

bonjour,
ben, normalement ça marche...
je l'ai juste adaptée un poil pour que ce soit impec.

Code :
  1. Function MAXIF(plage As Range, critere As Range)
  2. Dim iR&, o, vMax, z
  3. Application.Volatile
  4. z = critere
  5. For Each o In plage
  6. iR = o.Row
  7. If Cells(iR, critere.Column) = z Then If o > vMax Then vMax = o
  8. Next
  9. MAXIF = vMax
  10. End Function

Les conditions d'utilisation sont les mêmes : Module Standart
syntaxe de l'appel:
=MAXIF(C2:C10;B2)
A+


---------------
roger
n°1244182
terrenso
Posté le 12-11-2005 à 11:31:35  profilanswer
 

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

mood
Publicité
Posté le 12-11-2005 à 11:31:35  profilanswer
 

n°1244185
terrenso
Posté le 12-11-2005 à 11:34:19  profilanswer
 

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

n°1244211
terrenso
Posté le 12-11-2005 à 12:30:59  profilanswer
 

Please

n°1244260
terrenso
Posté le 12-11-2005 à 14:26:21  profilanswer
 

HELP ME PLEASE lol

n°1244290
galopin01
Posté le 12-11-2005 à 15:17:16  profilanswer
 

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+


---------------
roger
n°1244342
terrenso
Posté le 12-11-2005 à 17:03:36  profilanswer
 

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

n°1244394
terrenso
Posté le 12-11-2005 à 19:23:40  profilanswer
 

Please

n°1244416
terrenso
Posté le 12-11-2005 à 20:43:17  profilanswer
 

N'y a t il vraiment personne de bon en VBA ici???

n°1244487
terrenso
Posté le 12-11-2005 à 23:18:26  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Création d'une fonction sous Excel

 

Sujets relatifs
Création site WebProblèmes pour envoyer fichiers excel avec javaMail
[MACRO excel / resolu ] creation d hyperliens amenant a des feuilletsExcel VBA configuration des marges
ouvrir un fichier excel depuis Access en VBA, encore une petite chosefonction copy() de fichier
Quel est le fonction pour détecter le type variable renvoyé ? (suite)problemme d'argument dans une fonction
[Webservice/PHP] Modification d'une fonction soap 
Plus de sujets relatifs à : Création d'une fonction sous Excel


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR