XL 2010 Récupérer la valeur la plus proche après une recherchev EXCEL 2007

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

grotsblues

XLDnaute Occasionnel
Bonsoir le forum

Je souhaiterai savoir si on peut récupérer une valeur la plus proche après une recherchev.

exemple feuille 1
19583 toto 165 29360.71 19583165
exemple feuille 2
19583 toto 165 29441.28 19583165
Je souhaiterai qu'elle récupère les 29441.28.

Je joint un fichier pour la compréhension
Merci pour votre retour
 

Pièces jointes

Bonsoir
Quand tu dis "Récupérer la valeur la plus proche", ce n'est pas suffisant.
En effet, pour le deuxième TOTO, la valeur la plus proche de 51 620.64 est 29 441.28 et tu veux "Inconnu".
Donc plus proche de x en plus ou x en moins ?
Ou simplement supérieure ?
 
Dernière édition:
Bonsoir grotsblues, Chris401,

Voyez le fichier joint, en Feuil1!F2 la formule matricielle est impressionnante :
Code:
=SIERREUR(INDEX(Tableau1[MONTANT];EQUIV(PETITE.VALEUR(SI((Tableau1[CONCAT]=E2)*(ABS(Tableau1[MONTANT]-D2)<100);ABS(Tableau1[MONTANT]-D2));1);SI(Tableau1[CONCAT]=E2;ABS(Tableau1[MONTANT]-D2);0)));"INCONNU")
En Feuil2 le tableau source est structuré (menu Insertion => Tableau).

A+
 

Pièces jointes

Bonsoir le forum et merci job 75
Je viens de tester la formule sur mon fichier de travail, j'ai redimensionner le tableau1 car j ai 10040 lignes sur la feuille1 et 86040 lignes sur la feuille2. Et descendu la formule, le souci est
-le résultat obtenu est un montant qui n'existe pas dans la feuille 2
-elle répète ce résultat plusieurs fois
-et la mise à jour est un peu longues
Est ce dû au nombre de lignes
J'espère être clair

Merci pour votre aide

1635276210288.png

1635276260041.png
 
Bonjour grotsblues, le forum,

Le VBA ne sera pas plus rapide que la formule matricielle du post #12.

Voyez le fichier .xlsm joint et cette fonction VBA :
VB:
Function PlusProche(montant#, concat$, Pmontant As Range, Pconcat As Range)
Dim Tmontant, Tconcat, mini#, i&, dif#
Tmontant = Pmontant.Resize(, 2) 'matrice, plus rapide, au moins 2 éléments
Tconcat = Pconcat.Resize(, 2) 'matrice, plus rapide, au moins 2 éléments
mini = 1E+308
For i = 1 To UBound(Tmontant)
    If Tconcat(i, 1) = concat Then
        dif = Abs(Tmontant(i, 1) - montant)
        If dif < 100 Then If dif < mini Then mini = dif: PlusProche = Tmontant(i, 1)
     End If
Next
If mini = 1E+308 Then PlusProche = "Inconnu"
End Function
Le recalcul des 5 formules se fait chez moi en 1,8 millième de seconde ici comme au post #12.

Vérifiez sur votre fichier de 89000 lignes.

A+
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour