comment modifier WorksheetFunction.Match() ??

A

albert

Guest
Bonjour à tous et à toutes, forumiens, forumiennes,


j'ai tenté de travailler la fonction équiv() pour obtenir un résultat sans erreur.

J'ai par conéquent cherché à comprendre son fonctionnement. Mais je n'ai pas trouvé de solutions satisfaisante. Je vous livre ma réflexion :
- Principe

La fonction EQUIV()
Equiv(valeur_cherchée;tableau_recherche;type)

La fonction Equiv renvoie la position de la valeur cherchée dans la matrice. (n° de ligne)

- Application

En AH2572=SI(AA2572="Clôture V";EQUIV("Vente";L2573:L5568;0);"")

on cherche Vente dans le tableau L2573:L5568, qui doit correspondre à Clôture V en AA2572

PROBLEME A RESOUDRE :
Si dans la colonne L, à la fin de la recherche, il n’y a pas" Vente" alors qu’il y a "Clôture V" en AA2572 , excel renvoie un nombre de lignes en AH2572
idem EN AH2577, 2580, 2582


Traduction en vba : WorksheetFunction.Match()

En AB2572 (en jaune) , j’obtiens 20,
c’est à dire le nombre de lignes comprises entre le dernier Clôture V correspondant à Vente dans la plage Range(Cells(R + 1, 12), Cells(s, 12) trouvé par .Match, et la dernière ligne remplie, en AA2586

AB2577 =15 lignes
AB2580=12 lignes
AB2582 = 10 lignes

Sub ColAB()
'En AB4=SI(AA4="Clôture V";EQUIV("Vente";L5:L3000;0);"")
A = Cells(1, 8)
For R = 4 To A
s = A + R
On Error Resume Next
chercheAB = WorksheetFunction.Match("vente", Range(Cells(R + 1, 12), Cells(s, 12)), 0)
If Cells(R, 27) = "Clôture V" Then 'AA=27
Cells(R, 28) = chercheAB 'AB=28
End If
Next
End Sub


ma question :

comment modifier WorksheetFunction.Match()
dansle code vba pour supprimer les résultats erronés à partir de AB2572 ??

d'avance merci

albert
 

Pièces jointes

  • ColAB.zip
    38 KB · Affichages: 27

Discussions similaires

Réponses
6
Affichages
439
Réponses
3
Affichages
554