Trouver une valeur égal ou directement supérieure

Nanir

XLDnaute Occasionnel
Bonjour,

Je dois trouver une valeur égale ou directement supérieur par rapport à une liste de valeur...
Explications sur le fichier joint...
Merci pour votre aide...
 

Pièces jointes

  • égale ou équiv.xls
    20 KB · Affichages: 395

Tibo

XLDnaute Barbatruc
Re : Trouver une valeur égal ou directement supérieure

Bonjour,

Un essai avec :

Code:
=INDEX(D1:D14;EQUIV(A19;D1:D14)+1-NB.SI(D1:D14;A19))

un autre avec une formule matricielle :

Code:
=INDEX(D1:D14;EQUIV(VRAI;D1:D14>=A19;0))

Formule matricielle à valider par CTRL + MAJ + ENTREE

@+
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Trouver une valeur égal ou directement supérieure

Bonjour Nani, bonjour le forum,

Je sais pas faire avec des formules, je te propose la macro ci-dessous :
Code:
Sub Macro1()
Dim pl As Range 'déclare la variable pl (PLage)
Dim r As Range 'déclare la variable r (Recherche)
Dim em As Integer 'déclare la variable em (Ecart Minimum)
Dim val As Integer 'déclare la variable val (VALeur)
 
Set pl = Range("D1:D14") 'définit la plage pl
Set r = pl.Find(Range("A19"), , xlValues, xlWhole) 'définit la variable r
 
If Not r Is Nothing Then 'condition initiale : si il existe au moins une occurrence de r dans pl
 
    Range("D19") = r 'place l'occurrence trouvée en D19
 
Else 'sinon
 
    em = Application.WorksheetFunction.Max(pl) 'définit la variable em (le chiffre le plus haut de pl)
    For Each cel In pl 'boucle sur toutes les cellules cel de la plage pl
        If cel.Value <> "" Then 'condition 1 : si la cellule n'est pas vide
            'condition 2 : si la valeur absolue de la différence A19 et la cellule est inférieure à l'écart minimum
            If Abs(Range("A19").Value - cel.Value) < em Then
                em = Abs(Range("A19").Value - cel.Value) 'redéfinit l'écart minimum
                val = cel.Value 'définit la variable val
            End If 'fin de la condition 2
        End If 'fin de la condition 1
    Next cel 'prochaine cellule cel de la plage pl
    Range("D19") = val 'place la valeur la plus proche en D19
 
End If 'fin de la condition initiale
 
End Sub

Édition :

Salut Tibo on s'est croisé... Heu y a pas photo vive les formules !!!! (un jour, qui sait, il faudra bien que je m'y mette bon sang)...
 

Pièces jointes

  • Nani_v01.xls
    47.5 KB · Affichages: 170
Dernière édition:

Discussions similaires

Réponses
17
Affichages
517

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz