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

XL 2019 RECHERCHEV dans une somme

alain160

XLDnaute Nouveau
Bonjour,
Comment faire fonctionner une recherche verticale lorsque la "table matrice" contient la valeur recherchée
mais à l'intérieure d'une somme.
Exemple:
Dans la colonne B j'ai ma formule =RECHERCHEV(A1;$D$1:$D$5;1;0)
En B1 la valeur recherchée n'est pas trouvée , ce qui est normal
Mais en B2 et B3, les valeurs recherchées se trouvent dans la cellule D3 mais sous forme de somme
Quelle formule utiliser pour trouver ces 2 valeurs ?

Merci par avance
 

job75

XLDnaute Barbatruc
Bonsoir alain160,
Dans la colonne B j'ai ma formule =RECHERCHEV(A1;$D$1:$D$5;1;0)
Quand la valeur de A1 existe dans D1: D5 la formule renvoie forcément la valeur de A1.

Ce n'est donc pas vraiment génial Que voulez-vous que la formule renvoie exactement ?

Et pour rechercher un nombre dans une formule il faut du VBA, mais que voulez-vous faire ensuite ?

A+
 

Wayki

XLDnaute Impliqué
Bonsoir,
Tel quel la formule est sous forme de texte, pour rechercher le 6 (ou le 34) ainsi, voyez plutôt :
=RECHERCHEV("*"&A1&"*";$D$1:$D$5;1;0)
Mais ce serait trop beau pour être ce cas de figure
A +
 

alain160

XLDnaute Nouveau
Merci pour vos réponses.
Cette RECHERCHEV me sert à faire un état de rapprochement comptable.
C'est à dire à savoir quelles sont les valeurs de la colonne A qui n'existent pas en D ( donc pas comptabilisées).
En principe il doit y en avoir trés peu et donc une réponse #N/A me convient.
Je peux aussi ,lorsque je maitriserai la formule, l'aménager avec une formule "=si(xx" pour ne faire ressortir que les valeurs oubliées .......
Il existe aussi probablement d'autres façons d'y arriver........
Cordialement
 

job75

XLDnaute Barbatruc
Bonjour alain160, Wayki, JHA, le forum,

Voyez le fichier joint et cette fonction VBA :
VB:
Function RechercheSommeV(Valeur_cherchée As Double, Plage As Range, Numéro_colonne As Integer)
Dim derlig&, tablo, i&, x$, j%
derlig = Plage.Parent.UsedRange.Row + Plage.Parent.UsedRange.Rows.Count
tablo = Plage.Columns(1).Resize(derlig - Plage.Row + 1).Formula 'matrice, plus rapide, au moins 2 éléments
For i = 1 To UBound(tablo)
    x = "+" & tablo(i, 1)
    j = InStr(x, Valeur_cherchée)
    If j Then If Not IsNumeric(Mid(x, j - 1, 1)) And Val(Replace(Mid(x, j), ",", ".")) = Valeur_cherchée _
        Then RechercheSommeV = Plage(i, Numéro_colonne): Exit Function
Next
RechercheSommeV = [NA()]
End Function
Le code doit impérativement être placé dans un module standard.

A+
 

Pièces jointes

  • RechercheSommeV(1).xlsm
    17.6 KB · Affichages: 3

job75

XLDnaute Barbatruc
La macro du post #9 ne donne pas toujours le bon résultat, utilisez celle-ci :
VB:
Function RechercheSommeV(Valeur_cherchée, Plage As Range, Numéro_colonne%)
Dim derlig&, tablo, i&, s, j%
derlig = Plage.Parent.UsedRange.Row + Plage.Parent.UsedRange.Rows.Count
tablo = Plage.Columns(1).Resize(derlig - Plage.Row + 1).Formula 'matrice, plus rapide, au moins 2 éléments
For i = 1 To UBound(tablo)
    s = Split(Replace(Replace(tablo(i, 1), "=", ""), "+", " "))
    For j = 0 To UBound(s)
        If s(j) = Valeur_cherchée Then RechercheSommeV = Plage(i, Numéro_colonne): Exit Function
Next j, i
RechercheSommeV = [NA()]
End Function
 

Pièces jointes

  • RechercheSommeV(2).xlsm
    17.7 KB · Affichages: 1

Discussions similaires

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