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
Si quelqu'un avait le temps de se pencher sur mon problème, je lui en serais trés reconnaissant.
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
PS : je suis sur excel 2003
Partager