VBA - plus petite valeur d'une matrice

Résolu
tomparis75 Messages postés 1 Statut Membre -  
 tomparis75 -
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

  1. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    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
  2. tomparis75
     
    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