Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Valeur la plus proche dans une matrice

Magic_Doctor

XLDnaute Barbatruc
Bonjour,

Je construis, au moyen d'une boucle, une matrice avec 4 éléments (des nombres).
J'ai une valeur donnée (un nombre) et je voudrais extraire de la matrice l'élément dont la valeur est la plus proche de celle de la valeur donnée.

Comment m'y prendre ?

Merci d'avance pour toute proposition.
 
Dernière édition:

Magic_Doctor

XLDnaute Barbatruc
J'ai fini par trouver une solution.
VB:
    Dim i As Byte, ppmGetBoucle(1 To 4), dif(1 To 4), mini#, pos as byte

    'On dresse 2 arrays
    For i = 1 To 4
        'On dresse l'array contenant les nombres qui seront comparñes avec la valeur de référence (ne pas tenir compte de la formule ; elle marche)
        ppmGetBoucle(i) = Round((gouttes + i) * Evaluate("Remember_masse1goutte") * 10 ^ 3 / ([ppm_sol4].Offset(9, 1) + (gouttes + i) / [ppm_sol4].Offset(1, 1)), 2)
        '[ppm_sol4].Offset(10, 1) est la valeur de référence
        'On soustrait toutes les valeurs de l'array de la valeur de référence et l'on confectionne un nouvel array
        dif(i) = Abs([ppm_sol4].Offset(10, 1) - ppmGetBoucle(i))
    Next
    'La plus petite valeur du 2ème array
    mini = Application.Min(dif)
    'Position de cette valeur dans le 2ème array
    'La fonction "Array_pos" trouvée sur le Net
    pos = Array_pos(dif, mini)

VB:
Function Array_pos(tableau, recherche)
    
    'https://www.excel-pratique.com/fr/astuces_vba/recherche-position-tableau-array
    
    Array_pos = -1
    
    For ii = LBound(tableau) To UBound(tableau)
        If tableau(ii) = recherche Then 'Si valeur trouvée
            Array_pos = ii
            Exit For
        End If
    Next
End Function
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…