Bonjour,
Je souhaitais me créer une fonction qui ait un peu le même fonctionnement que le recherchev() d'excel mais qu'elle me renvoie tous les résultats trouvés séparés par un 'pipe'.

exemple :
je recherche "a" dans le matrice suivante :

a 1
a 2
b 5
a Z

le fonction devrait me renvoyer 1|2|Z

Cela me permettrait grâce à la fonction convertir de mettre les différents résultats dans des colonnes distinctes.

j'ai donc fait le code suivant qui fonctionne en sub() mais pas en function() ??
désolé si la syntaxe n'est pas académique, j'apprends tout seul

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
Function RechercheTout(valeur_cherchee As Range, table_matrice As Range, no_index_col As Integer)
 
Dim TabValeurs() As String
 
valeur = valeur_cherchee
 
i = 0
 
With table_matrice
    Set c = .Find(valeur, LookIn:=xlValues)
        If Not c Is Nothing Then
            firstaddress = c.Address
            Do
                Set c = .FindNext(c)
                i = i + 1
            Loop While Not c Is Nothing And c.Address <> firstaddress
        End If
End With
 
ReDim TabValeurs(i-1)
 
With table_matrice
    Set c = .Find(valeur, LookIn:=xlValues)
        If Not c Is Nothing Then
            firstaddress = c.Address
            Do
 
                    For j = 0 To UBound(TabValeurs)
                        TabValeurs(j) = c.Offset(0, no_index_col - 1).Value
                        Set c = .FindNext(c)
                    Next j
 
            Loop While Not c Is Nothing And c.Address <> firstaddress
        End If
End With
 
resultat = ""
For k = 0 To UBound(TabValeurs)
    resultat = resultat & TabValeurs(k)
     If k <> UBound(TabValeurs) Then
        resultat = resultat & "|"
    End If
Next k
 
RechercheTout = resultat
 
End Function
Si quelqu'un avait le temps de se pencher sur mon problème, je lui en serais trés reconnaissant.

PS : je suis sur excel 2003