Comment créer une fonction personnalisée MAX?

Comment créer une fonction personnalisée MAX? - VB/VBA/VBS - Programmation

Marsh Posté le 17-02-2005 à 18:57:11    

Bonjour,
 
J'ai un problème avec une fonction qui ne veut pas fonctionner sous Excel :fou: .
 
Voilà un bout de ce que j'ai fait... et c'est là que cela ne marche pas   :cry:  
 
Function maximum(plage)
 
Dim i As Long
Dim Min As Variant
 
Min = plage(LBound(plage))
For i = LBound(plage) To UBound(plage)
If plage(i) > Min Then maximum = plage(i)
 
Next i
 
End Function
 
Merci d'avance si vous pouvez me donner un coup de pouce :)


Message édité par bisoo le 17-02-2005 à 19:00:25
Reply

Marsh Posté le 17-02-2005 à 18:57:11   

Reply

Marsh Posté le 18-02-2005 à 15:20:04    

Il y a 1,5 choses qui ne vont pas:
 
1. Si tu stockes le premier element de la plage dans une variable, toute valeur de la plage qui lui est supérieure se stockera dans maximum. Par exemple, si le dernier element de ta plage est supérieur au premier mais n'est pas le premier absolu, maximum resortira le dernier. Ca doit pas etre l'effet recherché  :pt1cable:  
1,5. Tout dépend de ce que tu veux classer. Si c'est des string, alors ton code est bon, tu auras la lettre la plus en bas d'une liste classée un peu comme les noms de fichiers de windows (1, 10, 11, 12, .., 2, 21, ...). Par contre si tu veux classer des nombres, il faut les convertir en integer ou double.
 
Le bon code serait donc plutot

Code :
  1. Function maximum(plage)
  2. Dim i As Long
  3. 'Dim Min As Variant
  4. maximum = plage(LBound(plage))
  5. For i = LBound(plage) To UBound(plage)
  6. If IsNumeric(plage(i)) And IsNumeric(maximum) Then
  7.   If Val(plage(i)) >= Val(maximum) Then maximum = plage(i)
  8. Else
  9.   If plage(i) >= maximum Then maximum = plage(i)
  10. End If
  11. Next i
  12. End Function


Voila !

Reply

Marsh Posté le 18-02-2005 à 17:22:27    

Merci pour les explications :-)! ... Bon çà fonctionne pas sur mon ordi, mais je le soupçonne depuis un certain temps d'avoir quelques problèmes.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed