RechercheV avec des doublons
Salut
Voila je cherche à faire afficher tous les résultats d'une recherche.
ex :
dans une liste j'ai 2 fois le N° 4 (dans la colonne A) et je veux en retour les 2 deux valeur texte associer (de la colonne B).
Malheurseusement RECHERCHEV ne me retour qu'une seulle valeur !!!
Quelq'un a une solution pour moi
Merci d'avance
Possible avec une fonction personnalisée en VBA :
Fonction à copier dans un module :
[b]Function RechecheMult(ValeurCherchée As String, MatriceCherche, MatriceTrouve, Optional Seprator As String) As String
Dim c, i As Long
If Separator = "" Then Separator = " / "
For Each c In MatriceCherche
i = i + 1
If ValeurCherchée = c Then
If RechecheMult = "" Then
RechecheMult = MatriceTrouve(i)
Else
RechecheMult = RechecheMult & Separator & MatriceTrouve(i)
End If
End If
Next c
End Function[/b]
Ensuite, utilise cette fonction comme la fonction comme une fonction Excel, mais avec les arguments correspondants :
=RechecheMult(ValeurCherchée,MatriceCherche,MatriceTrouve, " ; ")
le dernier argument separator est optionel et permet de définir la séparation entre les valeurs trouvées. Par défaut : /
merci soft
Ok super ca marche, j'ai mes resultats à la suite separe par des /
Mais serait il possible d'avoir un résultat par cellule ?
Pour le momoent ca donne:
en C1=> valeur1 / valeur2 / valuer3....
Et j'aimerais que ca donne:
en C1=> valuer1
en C2=> valeur2
en c3=> valeur 3
Dis moi si c possible, je vais voir si je peux trouver, mais le VBA c pas trop mon truc
... Si tu le disais dans ta question directement, parce que ça change tout...
On ne peut pas avoir une fonction dans Excel en utilisant = qui renvoi le résultat sur plusieurs cellules.
Seule solution, faire une macro, mais là reproblème comment donner les adresses des cellules pour la recherche, le résultat et où tu les veux.
Bon après près d'1 heure d'essais, je te propose la macro suivante :
Sub RechecheMlt()
Dim ValeurCherchée As String, MatriceCherche As New Collection, MatriceTrouve As New Collection, Ligne As Long
Dim c As String, i As Long, Z As Long, ColonneCherche As String, ColonneTrouve As String, LastLigne As Long
Dim ColonneRésultat As String, Maj As Boolean, RepMaj As Integer
ValeurCherchée = InputBox("Valeur cherchée")
If ValeurCherchée = "" Then Exit Sub
ColonneCherche = InputBox("Colonne où il faut chercher cette valeur", "Entrée", "A")
If ColonneCherche = "" Then Exit Sub
ColonneTrouve = InputBox("Colonne contenant les résultat à renvoyer", "Entrée", "B")
If ColonneTrouve = "" Then Exit Sub
ColonneRésultat = InputBox("Colonne ou mettre les valeurs correspondantes", "Entrée", "C")
If ColonneRésultat = "" Then Exit Sub
RepMaj = MsgBox("Respectez la casse de " & ValeurCherchée & " ?", 4, "Entrée")
Maj = IIf(RepMaj = 6, True, False)
ValeurCherchée = IIf(Maj, ValeurCherchée, UCase(ValeurCherchée))
LastLigne = Range(ColonneCherche & "1").End(xlDown).Row
On Error GoTo Erreur
For Z = 1 To LastLigne
MatriceCherche.Add Range(ColonneCherche & Z).Value
MatriceTrouve.Add Range(ColonneTrouve & Z).Value
Next Z
For i = 1 To MatriceCherche.Count
c = IIf(Maj, MatriceCherche(i), UCase(MatriceCherche(i)))
If ValeurCherchée = c Then
Ligne = Ligne + 1
Range(ColonneRésultat & Ligne) = MatriceTrouve(i)
End If
Next i
Exit Sub
Erreur:
MsgBox Error & " c'est certainement le nom des colonnes, entrez uniquement la lettre ..."
End Sub
Bonjour cette macros et parfaite mais pouvez-vous y incorporer incorporer un critère supplémentaire? exemple: on demande un critère de la colonne a correspondre mais il faudrait en plus qu'un critère d'une autre colonne soit respecter et que la liste soit tirée sur base des ces deux critères ?
est possible d'avoir ca intégré dans la macros ?
et si on pouvais prendre directement toutes les données des lignes touvées pour les collées ?
merci d'avance
impossible d'ouvrir le fichier
je suis reparti de la macros car elle est fort utile mais j'ai besoin de l'adapter quelque peu :/
y a t-il quelqu'un encore pour effectuer cette modif sur le code présent ci dessus?
Possible avec une fonction personnalisée en VBA :
Fonction à copier dans un module :
[b]Function RechecheMult(ValeurCherchée As String, MatriceCherche, MatriceTrouve, Optional Seprator As String) As String
Dim c, i As Long
If Separator = "" Then Separator = " / "
For Each c In MatriceCherche
i = i + 1
If ValeurCherchée = c Then
If RechecheMult = "" Then
RechecheMult = MatriceTrouve(i)
Else
RechecheMult = RechecheMult & Separator & MatriceTrouve(i)
End If
End If
Next c
End Function[/b]
Ensuite, utilise cette fonction comme la fonction comme une fonction Excel, mais avec les arguments correspondants :
=RechecheMult(ValeurCherchée,MatriceCherche,MatriceTrouve, " ; ")
le dernier argument separator est optionel et permet de définir la séparation entre les valeurs trouvées. Par défaut : /
Bonjour, quelqu'un a une idée pour faire une recherche partielle d'une cellule avec cette macro?
Merci d'avance.