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

Créations d'une Fonctions Recherche

RYJITS

XLDnaute Nouveau
Bonjour,

j'ai créer une fonctions Recherche qui me donne la possibilité de rechercher sur plusieur colonne elle fonctionne mais elle la ses défauts et j'ai besoin de votre aide pour completé mon code.

Function RechercheCC(ValCherchee As Range, Plage As Range, Plage2 As Range, Feuille)

valeur = ValCherchee.Value
Ligne = Plage.Find(valeur, LookIn:=xlValues, lookAt:=xlWhole).Offset(0).Row
colonne = Plage2.Column
cellule = Cells(Ligne, colonne).Address

RechercheCC = Sheets(Feuille).Range(cellule).Value

les problèmes:
1) j'ai du integré une variable Feuille pour indiqué si les donnée à rechercher se trouve sur une autre feuille. ma fonction ne prend pas en charges la valeur feuil comme les autre fonction excel exemple (Feuil!I:J). Pourquoi ?

2) je voudrais aussi pouvoir faire une recherche multiple eventuelement Matriciel (avec deux valeurs de recherche) exemple (A1&B1;Feuil2'A:A&AG:AH)

merci d'avance de votre aide.
 

RYJITS

XLDnaute Nouveau
Re : Créations d'une Fonctions Recherche

j'ai aussi esayer ce code pour pouvoir faire une recherche multiple mais pas de resulta.

Function RechercheCC1(ValCherchee As Range, Val2Cherchee As Range, Plage1 As Range, Plage2 As Range, Retour As Range, Feuille)

valeur = ValCherchee.Value & Val2Cherchee.Value
Plage = Plage1 & Plage2
Ligne = Plage.Find(valeur, LookIn:=xlValues, lookAt:=xlWhole).Offset(0).Row
colonne = Retour.Column
cellule = Cells(Ligne, colonne).Address

RechercheCC = Sheets(Feuille).Range(cellule).Value

End Function
 

clochete

XLDnaute Nouveau
Re : Créations d'une Fonctions Recherche

Bonjour RYJITS,

Pour que la recherche se face sur d'autre feuille, tu dois renvoyer le résultat directement à partir de la plage matrice.
cellule = Cells(Ligne, colonne).Address transforme ta Range en String et ne gère plus les feuilles. Ton résultat devrait plutôt ressembler à : RechercheCC = Plage.cells(Ligne, colonne).Value

Par ailleurs, si tu cherches plusieurs valeurs, tu n'as pas d'autre choix que de faire une boucle dessous.

\\//(^_^)\\//
 

RYJITS

XLDnaute Nouveau
Re : Créations d'une Fonctions Recherche

bonjour,
j'ai essayé mais la fonctions ne reagie pas , on n'a l'impréssion que la macro ne ce lance pas.
j'ai introduit des point d'arret dans le code mais rien ne ce passe.

Function RechercheCC2(ValCherchee As String, Val2Cherchee As String, Plage As String, Plage2 As String)

Compteur = 1
valeur = ValCherchee.Value
valeur2 = Val2Cherchee.Value


While Compteur < 11

ligne = Plage.Find(valeur, LookIn:=xlValues, LookAt:=xlWhole).Offset(0).Row
valeur_trouve = Plage.Find(valeur, LookIn:=xlValues, LookAt:=xlWhole).Offset(0).Value
colonne = Plage2.Column
cellule = Cells(ligne, colonne).Address
Cellule_valeur = Cells(ligne, colonne).Value
Compteur = Compteur + 1

If valeur_trouve = valeur Then

If Cellule_valeur = valeur2 Then

RechercheCC2 = Cells(ligne, colonne).Value

merci encore
 

RYJITS

XLDnaute Nouveau
Re : Créations d'une Fonctions Recherche

tous d'abord merci pour votre aide.
la fonctions findall me semble bien mais comme dab j'ai besoin d'explication, commencons par le debut.

Function FindAll(SearchRange As Range, _
FindWhat As Variant, _
Optional LookIn As XlFindLookIn = xlValues, _
Optional LookAt As XlLookAt = xlWhole, _
Optional SearchOrder As XlSearchOrder = xlByRows, _
Optional MatchCase As Boolean = False, _
Optional BeginsWith As String = vbNullString, _
Optional EndsWith As String = vbNullString, _
Optional BeginEndCompare As VbCompareMethod = vbTextCompare) As Range

que represente les partie optional ??

J'ai essayer la fonctions comme seci =FindAll(Feuil2!A:AO;Feuil1!B5) ca fonctionne mais me renvoie la valeur de la cellule trouver. je voudrais la valeur de la cellule d'une autre collonne éventuellement les partie optionel pourais m'aidé.

merci d'avance
 

RYJITS

XLDnaute Nouveau
Re : Créations d'une Fonctions Recherche

bonjour,

je n'ai pas trouver pour créer une fonction je me suis donc débrouiller en bidouillons une macro pour faire ce que je veux.
un jour peut-être quelqu'un seras intéresser par le sujet et pourras me dire comment créer une fonctions de recherche, à double variable. je pense que j'en suis pas très loin il suffirais d'adapté ma macro. merci aux trois bonne âmes qui en la gentillesse de me répondre.

Sub mise_à_jour()


'-----------Mise a jour des donnée-------------------

ActiveWorkbook.UpdateLink Name:= _
"R:\Process\METHODES\Reporting\Méthodes Reconvilier_2014.xlsm", Type:= _
xlExcelLinks

'-----------Recherche des Nouve
On Error Resume Next

'déclaration des variables :
Dim Trouve As Range
Dim PlageDeRecherche As Range
Dim Valeur_Cherchee As String
Dim AdresseTrouvee As String
Dim AdresseTrouvee2 As String
Dim ligne As String
Dim reponce As String
Dim code_methode As String
Dim Créateur As String
Dim verificateur As String
Dim FeuilleMethode As String

Interface.Select
Range("A5").Select

'valeur variable fixe
FeuilleMethode = Methode.Name
Valeur_Cherchee = ActiveCell.Offset(0, 1).Value
'CellDepart = Range("A5").Address à revoir pour amélioration éviter les selections.
Set PlageDeRecherche = Methode.Columns("AH:AO")

While ActiveCell.Offset(0, 1) <> ""

'************'méthode find, ici on cherche la valeur exacte (LookAt:=xlWhole)****************

Set Trouve = PlageDeRecherche.Cells.Find(What:=Valeur_Cherchee, LookAt:=xlWhole, LookIn:=xlValues)

AdresseTrouvee = Trouve.Address

'***********'traitement de l'erreur possible : Si on ne trouve rien :************************

Trouve:
If Trouve Is Nothing Then
ActiveCell.Offset(1, 0).Select
Valeur_Cherchee = ActiveCell.Offset(0, 1).Value
AdresseTrouvee = AdresseTrouvee2
Else

'************'ici, traitement pour le cas où la valeur est trouvée*****************************
ligne = Trouve.Row
reponce = Methode.Cells(ligne, 4).Value
code_methode = Methode.Cells(ligne, 2).Value
Créateur = Methode.Cells(ligne, 5).Value
verificateur = Methode.Cells(ligne, 6).Value

If code_methode = "A" Then
ActiveCell.Offset(0, 4) = reponce
ActiveCell.Offset(0, 8) = Créateur
ActiveCell.Offset(0, 9) = verificateur
Else
If code_methode = "M" Then
ActiveCell.Offset(0, 6) = reponce
ActiveCell.Offset(0, 8) = Créateur
ActiveCell.Offset(0, 9) = verificateur
Else
If code_methode = "G" Then
ActiveCell.Offset(0, 5) = reponce
ActiveCell.Offset(0, 8) = Créateur
ActiveCell.Offset(0, 9) = verificateur
Else

End If
End If
End If

Set Trouve = PlageDeRecherche.Cells.FindNext(After:=Trouve)
AdresseTrouvee2 = Trouve.Address
If AdresseTrouvee = AdresseTrouvee2 Then

ActiveCell.Offset(1, 0).Select
Valeur_Cherchee = ActiveCell.Offset(0, 1).Value
Else

GoTo Trouve

End If
 

Discussions similaires

  • Suggestion
Recherche & référence RECHERCHE2D
Réponses
8
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…