Recherche dans un tableau - valeur comprise entre 2 lignes

Bonjour,

J'ai besoin s'il vous plait de votre aide en VBA. J'ai eu quelques cours dessus mais j'ai des petits soucis de mise en pratique.

Je vous expose mon problème :

J'ai un tableau de 10 lignes et 3 colonnes (pour commencer). Dans la première colonne, les nombres vont de 5 en 5 (en commençant par 5) et dans la colonne 2 et 3, il y a d'autres nombres.

Exemple des premières lignes :

5 11 65

10 16 78

15 21 95...

Je souhaite faire une macro pour qu'un utilisateur puisse dans une case, rentrer par exemple le nombre 15 et que ca lui donne automatiquement la correspondance de ce nombre dans les deux autres colonnes (ici 21 et 95). Et que s'il donne par exemple le nombre 13 (qui ne correspond pas à un nombre de la première colonne), que cela fasse une règle de 3 pour trouver les deux autres colonnes : par exemple avec 13, que cela donne 13*21/15 (pour la deuxième colonne) et ensuite 13*95/15 pour la troisième.

J'ai commencé avec ça (en supposant que mon tableau commence à la ligne 15 et que le chiffre rentré par l'utilisateur est dans la case A4) :

Sub recherch()

Range("B4").Value = WorksheetFunction.VLookup(Range("A4").Value, Range("A15:A24"), 2, False)

Range("C4").Value = WorksheetFunction.VLookup(Range("A4").Value, Range("A15:A24"), 3, False)

End Sub

Je suppose qu'il faut ensuite faire une boucle if pour dire que si le chiffre dans A4 est 5 ou 10 ou 15... on a directement les valeurs sinon il faut faire le calcul mais je ne sais pas comment coder cela,

Merci beaucoup pour votre aide

bonjour

sans VBA, mais en ajoutant des colonnes (sans saisie manuelle rassure-toi) à ton tableau (dont une de pointage) ça t'irait ?

joins un fichier exemple

Bonjour,

Essaie comme cela

Sub Rechercher()
Dim Valeur, BorneMin, BorneMax, ValeurA_Max, ValeurA_Min, ValeurB_Max, ValeurB_Min
    Valeur = Application.VLookup(Range("A4").Value, Range("A15:C24"), 2, False)
    If Application.IsNA(Valeur) Then
        BorneMin = Application.VLookup(Range("A4").Value, Range("A15:A24"), 1, True)
        BorneMax = BorneMin + 5
        ValeurA_Min = Application.VLookup(BorneMin, Range("A15:C24"), 2, True)
        ValeurA_Max = Application.VLookup(BorneMax, Range("A15:C24"), 2, True)
        Range("B4").Value = (ValeurA_Max - ValeurA_Min) * (Range("A4").Value - BorneMin) / 5 + ValeurA_Min
        ValeurB_Min = Application.VLookup(BorneMin, Range("A15:C24"), 3, True)
        ValeurB_Max = Application.VLookup(BorneMax, Range("A15:C24"), 3, True)
        Range("C4").Value = (ValeurB_Max - ValeurB_Min) * (Range("A4").Value - BorneMin) / 5 + ValeurB_Min
    Else
        Range("B4").Value = Application.VLookup(Range("A4").Value, Range("A15:C24"), 2, False)
        Range("C4").Value = Application.VLookup(Range("A4").Value, Range("A15:C24"), 3, False)
    End If
End Sub

A+

Merci Jmd pour ta réponse, mais je préfère utiliser une macro dans un premier temps

Merci beaucoup Frangy c'est exactement ce que je cherchais !!!

Bonne soirée à vous deux


J'ai une autre petite question finalement : est ce que c'est possible de compléter ce code par une autre boucle if, selon ce que donne l'utilisateur en entrée ou ça devient un peu trop compliqué ? Je m'explique, dans l'exemple précédent, on allait toujours mettre un nombre de la colonne A et la macro nous donne les valeurs correspondants des colonnes B et C. Mais est ce que c'est possible de demander en premier à l'utilisateur s'il a une valeur correspondant à la colonne A, B, ou C et ensuite, lui donner les deux valeurs correspondantes. Par exemple s'il donne la valeur de la colonne C, qu'on lui donne les valeurs A et B.

Merci pour votre aide

Rechercher des sujets similaires à "recherche tableau valeur comprise entre lignes"