Bonjour à tous,
Je suis en train d'essayer de créer une fonction que je pense assez simple mais qui pourtant ne fonctionne pas.
Cette fonction, une fois rentrée dans une cellule, doit rechercher un critère dans un autre onglet et renvoyer la date (contenue dans une colonne de ce nouvel onglet) qui correspond au critère trouvé.
Comme je me rends compte que mon explication est laborieuse je vais essayer de vous donner un exemple avant de vous montrer mon code.
Dans mon onglet 1 j'ai un tableau avec en 1ère colonne des noms et dans les 10 colonnes qui suivent je veux mettre ma fonction qui renverra une date.
Dans mon onglet 2 j'ai un autre tableau contenant dans une colonne des noms, et dans une autre des dates entrées manuellement. Les autres colonnes de ce tableau ne m'intéressent pas.
Donc admettons que dans mon onglet 1 sur la ligne "Jean MARCEL" je mette ma fonction, je veux que celle-ci me retourne les dates contenues dans l'onglet 2 associées à Jean MARCEL. Je sais qu'il existe la fonction RECHERCHEV mais celle-ci se contente de retourner la première valeur trouvée. Hors ma fonction doit faire ceci : dans la première colonne des dates, on trouve la première date trouvée, dans la deuxième colonne la deuxième date etc.
Et pour en finir avec le blabla voici mon code :
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 Option Base 1 Public Function AUDIT() Dim j As Integer Dim liste(10) As Date j = 1 With Worksheets(2).Range("C:C") Set a = .Find(Cells(Application.ThisCell.Row, 1), Range("C4"), xlFormulas, xlPart, xlByRows, xlNext) If Not a Is Nothing Then debut = a.Address Do liste(j) = Worksheets(2).Cells(a.Row, 7) j = j + 1 Set a = .FindNext(a) Loop While Not a Is Nothing And a.Address <> debut Else AUDIT = "" End If End With AUDIT = liste(Application.ThisCell.Column - 1) End Function
J'espère que vous pourrez m'aider sur ce coup
Partager