Fonction perso pour RechercheV avec plusieurs résultats

Hello tout le monde

Je trouve assez sidérant la formule à appliquer pour faire ça, surtout quand on connait le FILTRE() de Google Sheet.

La formule que je trouve en général est similaire à celle-ci :

=SI(LIGNE()-1>NB.SI($A:$A;D$1);"";INDEX($B:$B;PETITE.VALEUR(SI($A:$A=D$1;LIGNE(A:A);"");LIGNE()-1)))

trouvé sur un post de ce jour (ici)

J'ai créé une fonction plus similaire à la FILTRE() de Google Sheet et donnant actuellement ce résultat (basé sur le post mis en lien plus haut) :

jgfiltre
Public Function JGFiltre(tableau, Donnée, Colonne) As Variant

Dim compteur As Integer
compteur = 1

Dim i As Integer
Dim MonTableau
Dim TableauSortie()

MonTableau = tableau

For i = 1 To UBound(MonTableau, 1)
ReDim Preserve TableauSortie(1 To compteur + 1)
    If MonTableau(i, 1) = Donnée Then
        TableauSortie(compteur) = MonTableau(i, Colonne)
        compteur = compteur + 1
    End If

Next
JGFiltre = WorksheetFunction.Transpose(TableauSortie)
End Function

Tous les retours et avis sont bienvenus

La question pour le moment est surtout de comment faire pour remplacer les 0 et #N/A par un blanc.

Bonsoir, je viens de tester les deux solutions, pour la formule, elle fonctionne bien, pas de message d'erreur ni de "0" affiché, seulement entre 4 et 5 secondes de calcul si changement de valeur dans les prénoms avec un tableau de 7 lignes et deux colonnes.

Votre solution : en matricielle ou pas, ne m'affiche que le premier prénom trouvé, j'ai ajouté des $ devant certaines références mais rien n'y fait, c'est soit j'ai le premier prénom trouvé qui se répète soit il y a des 0. Voir le fichier joint, il se peut que je n'ai pas fait tout ce qu'il fallait. A moins que ceci ne marche pas sous Excel...ou seulement sous de Google Sheet :

vbMBHB

Hello

J'ai un peu clarifié le code, mais aucun problème chez moi :

Public Function JGFiltre(tableau, Donnée, Colonne) As Variant

Dim compteur As Integer
compteur = 1

Dim i As Integer
Dim MonTableau
Dim TableauSortie()

MonTableau = tableau

For i = 1 To UBound(MonTableau, 1)
ReDim Preserve TableauSortie(1 To compteur)
    If MonTableau(i, 1) = Donnée Then
        TableauSortie(compteur) = MonTableau(i, Colonne)
        compteur = compteur + 1
    End If

Next
JGFiltre = WorksheetFunction.Transpose(TableauSortie)
'JGFiltre = TableauSortie
End Function

Voici le résultat obtenu.

capture

Chez moi, en utilisant cette formule, un changement de "statut" change instantanément le tableau de sortie.

La seule chose sur laquelle je bloque, c'est virer les #N/A

J'ai tenté de créer une boucle qui remplirait de vide le tableau sur une longueur correspondant à la longueur du tableau source, mais on repasse alors dans le problème de l'attente de quelquse secondes avant l'actualisation des données.

Bonsoir, un essai avec une MFC :

vbMBHB

Rechercher des sujets similaires à "fonction perso recherchev resultats"