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 ?
1630337002556.png
Merci par avance
 

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

Statistiques des forums

Discussions
311 729
Messages
2 081 970
Membres
101 852
dernier inscrit
dthi16088