OVH Cloud OVH Cloud

Min en vba

6 réponses
Avatar
ThierryP
Bonjour tout le monde,

J'ai un souci de syntaxe :
En VBA, je veux (souhaite !) récupérer l'adresse de la plus petite
valeur supérieure à 1000 d'une sélection G3:G180, et là ...je patauge :-((((

Merci d'avance !!

@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin
gourmet - G. Courteline

6 réponses

Avatar
Daniel
Bonjour.
Il y a sans doute plus simple, mais, rapidement :

Sub test()
Dim Tablo(177)
Dim c As Range, Ctr As Integer
Ctr = 0
For Each c In Range("G3:G180")
If c.Value > 1000 Then Tablo(Ctr) = c.Value
If c.Value = 0 Then c.Value = ""
Ctr = Ctr + 1
Next c
MsgBox WorksheetFunction.Min(Tablo)
End Sub

Cordialement.
Daniel
"ThierryP" a écrit dans le message de
news: %
Bonjour tout le monde,

J'ai un souci de syntaxe :
En VBA, je veux (souhaite !) récupérer l'adresse de la plus petite valeur
supérieure à 1000 d'une sélection G3:G180, et là ...je patauge :-((((

Merci d'avance !!

@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin
gourmet - G. Courteline


Avatar
ThierryP
Merci Daniel,

Je sens qu'il y de çà, mais pour l'instant ça me retourne 0....Je vais
essayer de peaufiner; j'appelle au secours si je me noie :-))))

Bonjour.
Il y a sans doute plus simple, mais, rapidement :

Sub test()
Dim Tablo(177)
Dim c As Range, Ctr As Integer
Ctr = 0
For Each c In Range("G3:G180")
If c.Value > 1000 Then Tablo(Ctr) = c.Value
If c.Value = 0 Then c.Value = ""
Ctr = Ctr + 1
Next c
MsgBox WorksheetFunction.Min(Tablo)
End Sub

Cordialement.
Daniel
"ThierryP" a écrit dans le message de
news: %
Bonjour tout le monde,

J'ai un souci de syntaxe :
En VBA, je veux (souhaite !) récupérer l'adresse de la plus petite valeur
supérieure à 1000 d'une sélection G3:G180, et là ...je patauge :-((((

Merci d'avance !!

@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin
gourmet - G. Courteline





--


@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin
gourmet - G. Courteline


Avatar
El pequeno
Bonjour Thierry.
Personnellement, je ferai plutot un truc du genre :

Dim Val1, Val2 As Integer
Val2 = 0
For Each c In Range("G3:G180")
If c.Value > 1000 Then Val1 = c.Value
If Val1 > Val2 Then Val2 = Val1
Next c

Une fois la boucle bouclée, Val2 est la valeur que tu cherche
Macro non testée !

Cordialement


Merci Daniel,

Je sens qu'il y de çà, mais pour l'instant ça me retourne 0....Je vais
essayer de peaufiner; j'appelle au secours si je me noie :-))))

Bonjour.
Il y a sans doute plus simple, mais, rapidement :

Sub test()
Dim Tablo(177)
Dim c As Range, Ctr As Integer
Ctr = 0
For Each c In Range("G3:G180")
If c.Value > 1000 Then Tablo(Ctr) = c.Value
If c.Value = 0 Then c.Value = ""
Ctr = Ctr + 1
Next c
MsgBox WorksheetFunction.Min(Tablo)
End Sub

Cordialement.
Daniel
"ThierryP" a écrit dans le message de
news: %
Bonjour tout le monde,

J'ai un souci de syntaxe :
En VBA, je veux (souhaite !) récupérer l'adresse de la plus petite valeur
supérieure à 1000 d'une sélection G3:G180, et là ...je patauge :-((((

Merci d'avance !!

@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin
gourmet - G. Courteline





--


@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin
gourmet - G. Courteline





Avatar
JpPradier
Bonjour ThierryP

Une autre façon :

resultat=[1000+Min(Abs(G3:G180-1000))]

j-p
Avatar
Daniel
Ou encore :
MsgBox [=MIN(if(G3:G180>1000,G3:G180,""))]
Daniel
"ThierryP" a écrit dans le message de
news: %
Bonjour tout le monde,

J'ai un souci de syntaxe :
En VBA, je veux (souhaite !) récupérer l'adresse de la plus petite valeur
supérieure à 1000 d'une sélection G3:G180, et là ...je patauge :-((((

Merci d'avance !!

@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin
gourmet - G. Courteline


Avatar
Phil
bonjour,
tu peux essayer cela :

Sub test()
Dim maplage As Range
Dim cel As Range
Dim dimtab As Integer
Dim montab()
dimtab = 0
Set maplage = Range("G3:G180")

For Each cel In maplage
If cel > 1000 Then
dimtab = dimtab + 1
ReDim Preserve montab(dimtab)
montab(dimtab) = cel
End If
Next
For Each cel In maplage
If cel = Application.WorksheetFunction.Min(montab) Then
MsgBox cel.Address
Exit For
End If
Next
End Sub

je ne sais pas si on peu faire plus court ..
Bon courage


"ThierryP" a écrit dans le message de
news: %
Bonjour tout le monde,

J'ai un souci de syntaxe :
En VBA, je veux (souhaite !) récupérer l'adresse de la plus petite valeur
supérieure à 1000 d'une sélection G3:G180, et là ...je patauge :-((((

Merci d'avance !!

@+ thierryp
-----------------
Passer pour un idiot aux yeux d'un imbécile est une volupté de fin
gourmet - G. Courteline