Microsoft 365 RECHERCHEV

Anto35200

XLDnaute Occasionnel
Bonjour,

Dans mon fichier joint, je recherche si les montants dans la plage de cellule A2 à C18 de la feuille « Synthèse », je retrouve ces montants à la colonne G de la feuille « extrait ».

Ma formule est en cellule E2, mais je ne comprends pas le problème.

En vous remerciant de votre aide.
 

Pièces jointes

  • Classeur1.xlsx
    17.7 KB · Affichages: 14

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour Anto35200 :) ,

Essayez la formule en E2 : =REPT("Inc.";(A2:C18<>"") * ESTNA(RECHERCHEV(A2:C18;extrait!G:G;1;FAUX)))

En général, on évite de prendre des lignes ou colonnes entières si ce n'est pas nécessaire. On peut remplacer G:G par G2;G999 ; c'est bien suffisant.
 

Pièces jointes

  • Anto35200- Classeur1.xlsx
    16.6 KB · Affichages: 7
Dernière édition:

Anto35200

XLDnaute Occasionnel
Bonjour JHA,
Merci pour ta proposition de réponse, mais aux cellule B2 (413 200.16) et C3 (11 463.56) , la formule indiquent "Non trouvé" alors que ceux-ci sont bien dans la colonne G de l'onglet "extrait".
La formule fait une recherche sur la colonne Total et non sur toute la plage de cellules.
 

job75

XLDnaute Barbatruc
Bonjour le forum,

Formule en E2 de la feuille Synthèse :
Code:
=SI(SOMMEPROD(NB.SI(extrait!G:G;A2:C2));"OK";"Non trouvé")
Voyez les MFC dans les 2 feuilles.
En général, on évite de prendre des lignes ou colonnes entières si ce n'est pas nécessaire.
Avec EQUIV, NB.SI, SOMME.SI, RECHERCHEV etc... ça n'a aucune importance ces fonctions ne traitent pas les cellules en dehors du UsedRange.

A+
 

Pièces jointes

  • Classeur1.xlsx
    17.6 KB · Affichages: 3

job75

XLDnaute Barbatruc
Merci de confirmer ce que je subodorais sans en avoir du tout la certitude 👌
Pour que tu en sois bien sûr, dans le fichier .xlsm joint :

- j'ai effacé toutes les MFC

- en colonne E de la feuille Synthèse j'ai rendu volatiles les formules :
Code:
=T(ALEA())&SI(SOMMEPROD(NB.SI(extrait!G:G;A4:C4));"OK";"Non trouvé")
1) cette macro s'exécute en 2,5 secondes :
VB:
Sub a()
t = Timer
For i = 1 To 10000
Calculate
Next
MsgBox Timer - t
End Sub
2) la même macro s'exécute en 16,5 secondes après avoir entré 111 en extrait!G1048576.
 

Pièces jointes

  • Classeur1.xlsm
    20 KB · Affichages: 2

Discussions similaires

Réponses
3
Affichages
146
Réponses
4
Affichages
285
Réponses
33
Affichages
922

Membres actuellement en ligne

Statistiques des forums

Discussions
314 708
Messages
2 112 090
Membres
111 416
dernier inscrit
philipperoy83