Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 RESOLU: recherchex dans une fontion en VBA

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

merinos-BernardEtang

XLDnaute Accro
Bonjour le fofo,

je cherche a simplifier la vie de certains utilisateurs.
ce que je veux: avoir une fonction ne necesitant qu'un paramettre et randant le resultat d'une recherchex....

j'ai essayé de créer ma fonction : fctn_Prix

je dois être aveugle aujourd'hui.... j'y arrive pas...

// modification: j'ai besoin de recherchex, car je vais effectuer des recherches que recherchev ne peut effectuer. L'exemple joint est une simplification//

Merinos
 

Pièces jointes

Dernière édition:
Solution
C
Bonjour Merinos,

La fonction RechercheX() ou en VBA XLOOKUP() retourne une matrice ou plage
Donc le retour ne peut pas être un String

En variant ça fonctionne 😉
VB:
Public Function Fctn_Prix(MaChaine As String) As Variant
  Fctn_Prix = Application.XLookup(MaChaine, Range("Table1[fruit]"), Range("Table1[prix]"), "pas trouvé", 0, 1)
End Function

Ceci dit, une simple RechercheV() suffit dans ce cas
Code:
Public Function Fctn_Prix2(MaChaine As String)
  Fctn_Prix2 = Application.VLookup(MaChaine, Range("Table1[#All]"), 2, False)
End Function

A+
Bonjour Merinos,

La fonction RechercheX() ou en VBA XLOOKUP() retourne une matrice ou plage
Donc le retour ne peut pas être un String

En variant ça fonctionne 😉
VB:
Public Function Fctn_Prix(MaChaine As String) As Variant
  Fctn_Prix = Application.XLookup(MaChaine, Range("Table1[fruit]"), Range("Table1[prix]"), "pas trouvé", 0, 1)
End Function

Ceci dit, une simple RechercheV() suffit dans ce cas
Code:
Public Function Fctn_Prix2(MaChaine As String)
  Fctn_Prix2 = Application.VLookup(MaChaine, Range("Table1[#All]"), 2, False)
End Function

A+
 
Re,

On peut améliorer celle de RechercheV() qui fonctionne pareil mais est plus longue 😜
VB:
Public Function Fctn_Prix2(MaChaine As String) As Variant
  Dim Result As Variant
  On Error Resume Next
  Result = Application.VLookup(MaChaine, Range("Table1[#All]"), 2, False)
  If Result = 0 Then
    Fctn_Prix2 = "Pas trouvé"
  Else
    Fctn_Prix2 = Result
  End If
  On Error GoTo 0
End Function
 
@BrunoM45 ,

Désolé mais vlookup ne travaille comme xlookup que si le 5° parametre est "1" ...
Ici je vais devoir mettre "2" ... ce qui permet de rechercher "Bern*" et de retrouver "Bernard" ou "Bernadette".

dans mon cas précis, j'ai le numero de serie mais pas la marque. donc "478478478" retrouve "478478478VOLVO".

Mais comme tu m'as donné la gramais de vlookup, j'ai pu extrapoller .
mon proble était au niveau de "Range("Table1[#All]")"

Merci encore
 
Re,

Désolé de vous contredire, mais cela fonctionne de la même façon avec moins de critères (donc moins de risque d'erreurs) 😉

Essayez avec votre fonction de rechercher "Bern" tout court... Pas trouvé 😁
Ou alors donnez-nous un exemple concret

A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
582
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…