Creer une fonction rechercher Vba

Abd3l0u Messages postés 21 Date d'inscription   Statut Membre Dernière intervention   -  
Abd3l0u Messages postés 21 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour a tous,

Mon probleme de vendredi n'inspire personne apparament jusqu'a aujourd'hui donc je retente ma chance avec une variante lol.

J'aimerai creer une fonction recherche sur Vba.

Cette fonction recherche une valeur en B et me donne la valeur qui se trouve en C. Cependant il est possible d'avoir la meme valeur en B ( exemple 10 lignes marquees G01) mais avec une valeur differente en C.

Dans ce cas la, j'aimerai que la fonction me donne toutes les possibilites possible que j'exploiterai autrement.

J'espere avoir etait assez clair =/, c'est jamais evident.

Merci par avance pour vos reponse.
A voir également:

2 réponses

Gyrus Messages postés 3334 Date d'inscription   Statut Membre Dernière intervention   526
 
Bonjour,

Tu peux réaliser cette recherche multiple avec VBA et la méthode Range.Find.
Un exemple :
https://www.cjoint.com/?DCyjFdDHP1k

A+
1
Abd3l0u Messages postés 21 Date d'inscription   Statut Membre Dernière intervention   1
 
Merci beaucoup Gyrus sympa l'exemple et surtout tres explicite.Il me reste plus qu'a voir au niveau des macros pour essayer d'adapter a mon cas.
0
Abd3l0u Messages postés 21 Date d'inscription   Statut Membre Dernière intervention   1
 
Alors j'ai repris ta sub et je l'ai transforme en fonction. J'aimerai avoir ton avis et si cela te semble correct ou pas stp .

Function ChercheDxx(X3 As String) As Range
'Cette fonction cherche dans ZBPRPL1 le code X3 dans la colonne B et retourne la plage des Dxx (colonnes C) qui y correspondent

Dim Plage As Range, C As Range

Dim Dxx As String

Set Plage = Range("B1:B" & Range("B" & Rows.Count).End(xlUp).Row)

Set C = Plage.Find(Valeur, , xlValues, xlWhole)
If Not C Is Nothing Then
Dxx = C.Address
Do
ChercheDxx = C.Offset(0, 1)
Set C = Plage.FindNext(C)
Loop While Not C Is Nothing And C.Address <> Dxx
End If
Set Plage = Nothing: Set C = Nothing

End Function
0
Gyrus Messages postés 3334 Date d'inscription   Statut Membre Dernière intervention   526
 
Tout dépend de l'utilisation que tu veux faire de la fonction.
Exemple avec une fonction appelée par une procédure test :

Sub Test()
MsgBox ChercheDxx("Toto2").Address
End Sub

Function ChercheDxx(X3 As String) As Range
'Cette fonction cherche dans ZBPRPL1 le code X3 dans la colonne B et retourne la plage des Dxx (colonnes C) qui y correspondent
Dim Plage As Range, C As Range
Dim Dxx As String
Set Plage = Range("B1:B" & Range("B" & Rows.Count).End(xlUp).Row)
Set C = Plage.Find(X3, , xlValues, xlWhole)
If Not C Is Nothing Then
Dxx = C.Address
Do
If ChercheDxx Is Nothing Then
Set ChercheDxx = C.Offset(0, 1)
Else
Set ChercheDxx = Application.Union(ChercheDxx, C.Offset(0, 1))
End If
Set C = Plage.FindNext(C)
Loop While Not C Is Nothing And C.Address <> Dxx
End If
Set Plage = Nothing: Set C = Nothing
End Function

A+
1
Abd3l0u Messages postés 21 Date d'inscription   Statut Membre Dernière intervention   1
 
Merci encore pour ton aide =)
0