max et min non nul sur vba

bernaroff

XLDnaute Junior
Bonjour,

Je n'arrive pas à trouver la fonction équivalente à la fonction MAX et MIN (NON NUL) sur vba excel:

ma plage de cellule est Range(Cells(34,6),Cells(34,cr_max)) où cr_max est la dernière colonne non vide

je recherche le min (<>0) et le max de cette ligne

de plus, mes ordonnées allant de 0 à 0, 023; mon graphe est tout raplapla (vraiment mince sur la hauteur :-() y'a t'il un moyen de lui redonner la forme ??

Merci pour votre aide
Bernaroff
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : max et min non nul sur vba

Bonjour
Il existe Worksheetfunction.Min et .Max pour ces fonctions qui seules peuvent traiter les plages.
Mais il n'existe pratiquement pas une application VBA ou VB6 où je n'utilise également ce que je considère comme un ajout personnel intégré au langage:
VB:
Function Max(ByVal Vr As Variant, ParamArray Vs() As Variant) As Variant
Dim N As Long: For N = 0 To UBound(Vs): If Vs(N) > Vr Then Vr = Vs(N)
   Next N: Max = Vr: End Function
Function Min(ByVal Vr As Variant, ParamArray Vs() As Variant) As Variant
Dim N As Long: For N = 0 To UBound(Vs): If Vs(N) < Vr Then Vr = Vs(N)
   Next N: Min = Vr: End Function
Tiens, juste derrière j'ai aussi ça:
VB:
Property Get PressePapier() As String
Dim DOb As New DataObject
DOb.GetFromClipboard: PressePapier = DOb.GetText
End Property
Property Let PressePapier(Z As String)
Dim DOb As New DataObject
DOb.SetText Z: DOb.PutInClipboard
End Property
Mais ça n'a rien à voir et je m'arrête là.
Cordialement.
 

bernaroff

XLDnaute Junior
Re : max et min non nul sur vba

re

merci à vous deux, les deux solutions marchent très bien, seulement comment puis-je faire pour prendre la plus petite valeur non nulle ?
(j'ai opté pour la solution de Pierrot qui est beaucoup plus compréhensible puisque la macro que j'ai écrit doit être la plus accessible possible pour celui qui l'utilisera après moi)

Cdt
Bernaroff
 

Pierrot93

XLDnaute Barbatruc
Re : max et min non nul sur vba

Re,

pour éviter les valeurs 0 ou absentes :
Code:
Dim t() As Variant, i As Byte, v As Double
t = Application.Transpose(Range("A1:A8"))
For i = LBound(t) To UBound(t)
    If t(i) > 0 And t(i) < IIf(v = 0, 9 ^ 9, v) Then v = t(i)
Next i
MsgBox v
 

bernaroff

XLDnaute Junior
Re : max et min non nul sur vba

merci, j'ai fini par trouvé une solution un peu dans le même genre,
Dim min As Integer
min = Application.Max(Range(Cells(34, 6), Cells(34, cr_max)))
For i = 6 To cr_max
If (Cells(34, i).Value <> 0 And Cells(34, i).Value < min) Then
min = Cells(34, i).Value
End If
Next i

Bonne soirée à tous
 

Discussions similaires

Réponses
0
Affichages
175