Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Bonjour Chri401, le forum,

Votre formule n'est pas au point, pour tester entrez 29400 en D4 de Feuil2.

F2 de Feuil1 affiche "Inconnu" alors que le résultat 29 441,28 doit rester inchangé.

A+
 
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


 
Bonsoir grotsblues,

Oui il y avait une parenthèse fermante du dernier SI mal positionnée à la fin de la formule en F2.

C'et corrigé dans ce fichier (2).

Merci d'avoir testé, on fait facilement des erreurs avec des formules aussi longues.

Bonne nuit.
 

Pièces jointes

Bonsoir job75 cela fonctionne très bien, juste que le calcul est un peu long du faite que mon fichier contient 89000 lignes.
Je ne sais pas si en mettant la formule dans du vba cela pourrait peut être aller plus vite.
Merci beaucoup
 
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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…