VBA - plus petite valeur d'une matrice

Résolu/Fermé
tomparis75 Messages postés 1 Date d'inscription mercredi 11 juillet 2012 Statut Membre Dernière intervention 11 juillet 2012 - 11 juil. 2012 à 18:41
 tomparis75 - 12 juil. 2012 à 15:30
Bonjour,

je fais une macro vba dans laquelle j'ai une matrice intermédiaire qui contient une (ou plusieurs) valeur nulle, tout le reste est positif, et je voudrais prendre la plus petite valeur non nulle.

quelqu'un aurait une idée de comment le faire?

merci d'avance

2 réponses

Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 289
12 juil. 2012 à 11:56
Bonjour,

il est possible d'écrire une fonction mais je te propose
un exemple avec une Sub dans un module.


Sub PluPetiteValeur()
Dim Cel As Variant
Dim valeurMini As Variant
Dim plage1 As Range
Dim nbCol As Integer
Dim NbLig As Integer

Set plage1 = Range("B10:E13")

valeurMini = plage1.Cells(1, 1)
nbCol = plage1.Columns.Count
NbLig = plage1.Rows.Count


For i = 1 To nbCol
    For j = 1 To NbLig
        If plage1.Cells(i, j).Value < valeurMini And plage1.Cells(i, j).Value > 0 Then
        valeurMini = plage1.Cells(i, j).Value
        End If
    Next
Next
    
    
MsgBox valeurMini




End Sub


J'ai écris en "dur" la plage B10:E13 à titre d'exemple.
je peux regarder pour l'écrire sous forme de fonction utilisable sur la feuille mais tu n'as rien précisé dans ta démarche. VBA ou Pas?
j'ai une matrice intermédiaire signifie aussi bien l'utilisation d'un tableau ( variable de type tableau ...Array) qu'une utilisation d'une plage de cellule. C'est la raison pour laquelle je t'ai montré le principe.
A+
R
0
Bonjour,

ta proposition me convient tout à fait. Je compte l'inclure dans une macro VBA, et la matrice dans laquelle je cehrche est une variable de type Array dans cette macro.

En fait, mon idée de base était d'utiliser la fonction min() dans la macro, mais j'ai vite vu le problème qu'il me renverrait 0 à tous les coups...

Mon problème est résolu en tous cas, merci beaucoup!
0