Fonction de recherhce de valeur

G

gégé

Guest
je cherche une fonction tye recherchev() mais dont la particularité est qu'à la valeur cherchée, j'ai plusieurs valeurs à afficher. Je cherche en fait à afficher les noms des entreprises présentent sur un secteur en particulier. Les entreprises concernées apparîtront donc sur pls cellulles.
Merci d'avance
 

soft

XLDnaute Occasionnel
D'abord Bonjour Gégé (on devrait toiujours commencer par là non ?)

Pour répondre à ta question, il y aurait lieu de savoir si tu souhaites avoir le résulat dans une cellule (comme la fonction recherchev) ou s'il faut un résulat par cellule ...

J'anticipe tes réponses (parceque je vais arrêter là pour ce soir) :

1er cas : toutes les réponses dans une seule cellule :

on écrit =RechecheMult(ValeurCherchée; MatriceCherche; MatriceTrouve) dans la cellule où on veut le résultat de toutes les valeurs.

et surtout on copie le code ci-dessous dans un module du classeur :

Code:
Function RechecheMult(ValeurCherchée As String, MatriceCherche, MatriceTrouve, Optional Separator 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

Comme tu l'auras compris, toutes les valeurs vont se mettre à la suite séparée par un beau '/' - que tu pourras changer en ajoutant à la fin de la formule le séparateur désiré.

ça va donc donner =RechecheMult(ValeurCherchée; MatriceCherche; MatriceTrouve;' - ') par exemple.

2e cas : Tu veux les réponses dans des cellules séparées :

Alors il faudra copier cette macro dans le 'ameux' module :

Code:
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

... et répondre aux questions (là je peux plus le faire pour toi) ...

Bonne soirée.

Edition:
PS: Ca m'interresse quand même de savoir si j'ai répondu à ta question.

Message édité par: soft, à: 14/11/2005 18:14
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 892
Membres
101 831
dernier inscrit
gillec