Recherche de la valeur supérieur la plus proche dans une colonne

Vorens

XLDnaute Occasionnel
Re ou bonjour à tous,


Je suis à la recherche d'une nouvelle fonction VBA car je m'emploie à etudier cet outil des plus intéressant.

Cette fois-ci je cherche le moyen de connaître le nombre supérieur le plus proche d'un nombre référence dans une colonne.

Je m'explique


J'ai une colonne avec des nombre qui ne se suivent pas mais sont trier par ordre croissant.


Imaginons une colonne (B) de chiffre

123
124
128
131
157
187
200


Je tape dans une cellule le nombre 132 mais celui-ci n'existe pas dans la liste. J'aimerais que la fonction me sélectionne la cellule supérieur la plus proche qui dans notre cas est 157.Comment puis-je procéder ?


Merci de votre aide une fois de plus.

Cordialement Vorens
 

Dranreb

XLDnaute Barbatruc
Re : Recherche de la valeur supérieur la plus proche dans une colonne

Bonjour.
Ça, ça donne le résultat demandé:
VB:
Dim L As Long, Crit As Long,Plg As Range
Crit = 132
Set Plg = Feuil1.[B1:B7]
L = WorksheetFunction.Match(Crit, Plg, 1)
If Plg.Rows(L).Value < Crit Then L = L + 1
Plg.Rows(L).Select
À+
 
Dernière édition:

Vorens

XLDnaute Occasionnel
Re : Recherche de la valeur supérieur la plus proche dans une colonne

Re,

Merci pour ta réponce.
Je ne suis pas parvenu à la faire fonctionner. J'obtiens une erreur 400 à la ligne
L = WorksheetFunction.Match(Crit, Feuil1.[C3:C8], 1)

je ne comprend pas à quoi correspond Feuil1.[C3:C8], 1) étant donne que je n'utilise pas ses cellules.
 

Vorens

XLDnaute Occasionnel
Re : Recherche de la valeur supérieur la plus proche dans une colonne

Re,

Je n'avais pas encore rafraichi le message et l'édit que tu as fais n'etait pas apparu. Avec cette version tout fonctionne.
Un grand merci à toi et je te souhaite une bonne fin d'après midi

Cordialement

Vorens
 

Dranreb

XLDnaute Barbatruc
Re : Recherche de la valeur supérieur la plus proche dans une colonne

Oui, j'ai vu que mon code n'était pas cohérent. Je l'ai modifié dans le post précédent
Modifier les 2 instructions derrière la déclaration de manière à traiter ce qui doit être traité.
À+
 

Vorens

XLDnaute Occasionnel
Re : Recherche de la valeur supérieur la plus proche dans une colonne

Re,

Je suis heurté à un autre problème, Si j'aimerais entrer la valeur recherchée dans une cellule, exemple dans C1 je mets 132 et la macro me donne le résultat souhaité.

Le truc c'est que je suis confronté à un problème de type avec la variavle "Crit" déclarée en Long.

je poeux faire une conversion de la valeur introduite dans la cellule pour ce cela soit comatible ?
Car comme ci-dessous cela ne fonctionne pas.


date = Range("c1").Value
Dim L As Long, Crit As Long, Plg As Range
Crit = date
Set Plg = Feuil1.[B1:B7]
L = WorksheetFunction.Match(Crit, Plg, 1)
If Plg.Rows(L).Value < Crit Then L = L + 1
Plg.Rows(L).Select
 

Vorens

XLDnaute Occasionnel
Re : Recherche de la valeur supérieur la plus proche dans une colonne

Re,

Le problème de type est seulement du au fait que je suis pas très bien reveilé auj. appeler une variable Date c'est pas très malin. en revanche. J'ai toujours une erreur 400 si je fais comme sa:

toto = Range("c1").Value

Dim L As Long, Crit As Long, Plg As Range
Crit = toto
Set Plg = Feuil1.[B1:B7]
L = WorksheetFunction.Match(Crit, Plg, 1)
If Plg.Rows(L).Value < Crit Then L = L + 1
Plg.Rows(L).Select
 

Dranreb

XLDnaute Barbatruc
Re : Recherche de la valeur supérieur la plus proche dans une colonne

Essayer
VB:
L = WorksheetFunction.Match(CDate(Feuil1.[C1].Value), Plg, 1)
ou bien:
VB:
Dim L As Long, Crit As Date, Plg As Range
Crit = CDate(Feuil1.[C1].Value)
Set Plg = Feuil1.[B1:B7]
L = WorksheetFunction.Match(Crit, Plg, 1)
If Plg.Rows(L).Value < Crit Then L = L + 1
Plg.Rows(L).Select
À+
 
Dernière édition:

Vorens

XLDnaute Occasionnel
Re : Recherche de la valeur supérieur la plus proche dans une colonne

Re,

En fait le programme bug si on met une valeur en C1 plus petite que la valeur la plus petite du tableau. Exemple en B1 on a 50. si je met 48 en C1, il plante.
 

Dranreb

XLDnaute Barbatruc
Re : Recherche de la valeur supérieur la plus proche dans une colonne

VB:
Dim L As Long, Crit As Date, Plg As Range
Crit = CDate(Feuil1.[C1].Value)
Set Plg = Feuil1.[B1:B7]
On Error Resume Next
L = WorksheetFunction.Match(Crit, Plg, 1)
If Err Then L = 1
On Error GoTo 0
If Plg.Rows(L).Value < Crit Then L = L + 1
Plg.Rows(L).Select
 

Vorens

XLDnaute Occasionnel
Re : Recherche de la valeur supérieur la plus proche dans une colonne

Re,


J'ai encore une question =).

Avec cette fonction, si j'ai plusieur fois le même nombre dans la liste, il va me sélectionner le dernier. comment puis-je faire pour qu'il me sélectionne le premier qui apparait ?

Exemple:

Maintenant

123
123
123
123
123 <===c'est celui là qui est ciblé

et j'aimerais

123<===Celui là qui est sélectionné
123
123
123
123

merci encore
 

Discussions similaires

Réponses
6
Affichages
524

Statistiques des forums

Discussions
312 745
Messages
2 091 582
Membres
105 004
dernier inscrit
Dera