vertigos
Messages postés4Date d'inscriptionjeudi 17 février 2005StatutMembreDernière intervention18 février 2005
-
17 févr. 2005 à 15:53
valtrase
Messages postés937Date d'inscriptionlundi 19 janvier 2004StatutMembreDernière intervention 9 mai 2022
-
20 févr. 2005 à 16:15
Bonjour,
Je cherche à créer une focntion personnalisée calculant dans une cellule de
la feuille de calcul la différence entre la valeur maxi d'une plage de cellules et
la valeur mini d'une autre plage.
Voilà ce que j'ai fait. Et le calcul de la première plage ne s'opère pas!
Voyez-vous où est le problème?
Merci d'avance de votre aide!!!
Vertigos
Function Q3Différence(plage1, plage2)
'Définition des variables
Dim Maxi As Variant
Dim i As Long
Dim Mini As Variant
'calcul plage1
Maxi = plage1(LBound(plage1))
For i = LBound(plage1) + 1 To UBound(plage1)
If plage1(i) > Maxi Then Maxi = plage1(i)
Next i
'calcul plage2
Mini = plage2(LBound(plage2))
For i = LBound(plage1) + 1 To UBound(plage2)
If plage2(i) < Mini Then Mini = plage2(i)
Next i
'Résultat
If Maxi > Mini Then Q3Différence = Maxi - Mini
vertigos
Messages postés4Date d'inscriptionjeudi 17 février 2005StatutMembreDernière intervention18 février 2005 17 févr. 2005 à 17:05
merci beaucoup pour votre aide, econs et phantom_2005, mais...
çà ne marche pas du tout.
Je suis sûre que la fonction a un problème quelque part (vers calacul plage 1
je pense). Quand je fais f(x) sous Excel, Excel me dit que la fonction est
inutilisable, et rien ne se passe quand je sélectionne plage1 (alors que le programme
devrait me donner la valeur maxi !).
Vous n’avez pas trouvé la réponse que vous recherchez ?
vertigos
Messages postés4Date d'inscriptionjeudi 17 février 2005StatutMembreDernière intervention18 février 2005 17 févr. 2005 à 18:18
En fait, le problème semble venir d'ici.
Je ne sais pas faire une fonction personnalisée donnant le maximum d'une plage (oui, y'a une fonction déjà toute faite pour çà mais j'en voudrais une en VBA).
Function maximum(plage)
Dim Maxi As Variant
Dim i As Long
Maxi = maximum(UBound(plage))
For i = LBound(plage) To UBound(plage)
If plage(i) > Maxi Then maximum = plage(i)
Next i
valtrase
Messages postés937Date d'inscriptionlundi 19 janvier 2004StatutMembreDernière intervention 9 mai 20223 17 févr. 2005 à 23:37
Salut,
Sous excel il existe des fonctions pour cela
ex: =MAX(A1:A5)-MIN(B1:B6)
Si tu l'utilises sous vba tu dois tapper
Dim MyRangeMax As Range
Dim MyRangeMin As Range
Dim RangeRésultat As Range
Set MyRangeMax = Worksheets("feuil1").Range("A1:A6")
Set MyRangeMin = Worksheets("feuil1").Range("B1:B6")
Set RangeRésultat = Worksheets("feuil1").Range("C7")
vertigos
Messages postés4Date d'inscriptionjeudi 17 février 2005StatutMembreDernière intervention18 février 2005 18 févr. 2005 à 09:15
Merci de ton aide, Jean-Paul... même si cela ne répond pas à mon problème.
Je ne cherche pas à travailler à partir d' une plage pré-définie sous Excel (exemple: Worksheets("feuil1").Range("A1:A6")) mais à lancer une fonction personnalisée (fx) qui me demande de sélectionner une plage et alors seulement la fonction affiche la valeur numérique maximale des valeurs sélectionnées.
Je pense donc qu'une boucle est nécessaire, mais celle que j'ai fait ne fonctionne pas
Function maximum(plage)
Dim Maxi As Variant
Dim i As Long
Maxi = maximum(UBound(plage))
For i = LBound(plage) To UBound(plage)
If plage(i) > Maxi Then maximum = plage(i)
Next i
valtrase
Messages postés937Date d'inscriptionlundi 19 janvier 2004StatutMembreDernière intervention 9 mai 20223 20 févr. 2005 à 16:15
Salut,
Je n'arrive pas à te comprendre .....
si tu veux calculer un max à partir de cellule tu dois faire
Public Function Maximum(MyRange As Range) As Single
Maximum = Application.WorksheetFunction.Max(MyRange)
End Function
si tu veux que le prog te demmande de sélectionner des cellules tu dois faire une UserForm insérer dans celle ci un controle RefEdit et dans ton code appeller cette UserForm. ensuite tu récupère la valeur de la sélection et tu applique la fonction Max