Rechercher valeur proche et afficher nom lign & col correspondan
Badabimboum
Messages postés
1
Statut
Membre
-
eriiic Messages postés 24581 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24581 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous,
Voici mon problème expliqué par un exemple :
J'ai un tableau Excel
D E F
A 1 2 3
B 4 5 6
C 7 8 9
Je voudrais que Excel me recherche dans ce tableau l'entier supérieur le plus proche d'une valeur calculée (exemple 5,8) et qu'il m'affiche le nom de la ligne correspondante (cad B) et la colonne correspondante (cad F).
Quel est la formule magique selon vous ?
Merci pour votre aide.
Voici mon problème expliqué par un exemple :
J'ai un tableau Excel
D E F
A 1 2 3
B 4 5 6
C 7 8 9
Je voudrais que Excel me recherche dans ce tableau l'entier supérieur le plus proche d'une valeur calculée (exemple 5,8) et qu'il m'affiche le nom de la ligne correspondante (cad B) et la colonne correspondante (cad F).
Quel est la formule magique selon vous ?
Merci pour votre aide.
2 réponses
-
bonsoir,
Je peux peut-être t'aider sur un point.
La fonction: plafond(valeur calculée,précision) te donnera le nombre le plus proche figurant dans ton tableau.
dans ton exemple: nombreAchercher=plafond(nombreAarrondir;1)
Maintenant, il reste à trouver la formule qui te permet de trouver un nombre égal à celui qu'a renvoyé la fonction.
-
Bonjour,
Proposition de fonction personnalisée en vba à mettre dans un module standard.
syntaxe : rechMat(valeur, matrice , typeRetour)
exemple : =rechMat($A8;$A$1:$D$4;1)
code :
Function rechMat(valeur As Double, matrice As Range, typeRetour As Long) As Variant ' recherche dans 'matrice' le 1er nombre le plus proche supérieur ou égal à 'valeur' ' 'matrice' contient les titres des lignes et colonnes ' typRetour =1 : 1er nombre le plus proche supérieur ou égal à 'valeur' ' typRetour =2 : nom de la ligne ' typRetour =3 : nom de la colonne ' Dim lig As Long, col As Long, delta As Double Dim lig1 As Long, col1 As Long, delta1 As Double Dim mat() As Variant ' mat = matrice.Value delta1 = 9 ^ 99 For lig = 2 To UBound(mat, 1) For col = 2 To UBound(mat, 2) delta = mat(lig, col) - valeur If mat(lig, col) >= valeur And delta < delta1 Then col1 = col: lig1 = lig delta1 = delta End If Next col Next lig If lig1 = 0 Then rechMat = CVErr(xlErrNA) Else Select Case typeRetour Case 1 rechMat = mat(lig1, col1) Case 2 rechMat = mat(lig1, 1) Case 3 rechMat = mat(1, col1) End Select End If End Function
fichier exemple : https://www.cjoint.com/?BJugHiXRnrH
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.