Fonction recherche avec résultat sur possibilité multiple

Salutations,

Dans cette colonne, j'aimerais avoir un résultat qui dépend d'une recherche d'un valeur "B5" dans une plage d'une autre classeur identifiée ici par"1R'!B8:I53;'1R'!K8:R53;'1R'!B7:I7" et dont la valeur résultat dépendrait en fonction du libellé de la ligne où la valeur B5 aurait été trouvé. Ex/ si la valeur B5 se trouve dans la ligne A14 alors le résultat a indiqué serait A14, s'il se trouve dans la ligne A50 alors le résultat serait A50... possibilités entre A12 etA58

selon la formule :

=RECHERCHE(B5;"'1R'!B8:I53;'1R'!K8:R53;'1R'!B7:I7";'1R'!A12:A58) mais la valeur résultat n'est pas bonne évidemment

Je précise que les plusieurs cellules des plages B8:I53;K8:R53;B7:I7 sont occupées par des valeurs diverses.

=RECHERCHE(B5;"'1R'!B8:I53;'1R'!K8:R53;'1R'!B7:I7";"A12) donne un résultat MAIS ce n'est pas forcément le bon puisque ce résultat dépend de la ligne occupée par la valeur B5.

Une idée ?

91test.zip (46.35 Ko)

Bonjour

Faire une recherche d'une valeur B5 vide sur des plages vides n'est pas très aisé.

Un tableau avec des valeurs et un exemple du résultat attendu pourrait aider.

Cordialement

Revoici le document avec 'en plus' un exemple du résultat souhaité. Merci d'avance, car je sais que ce n'est vraiment pas évident. Je me demande même si c'est possible en fait

102test.zip (44.96 Ko)

Bonsoir

Par formule je ne sais pas

Merci Banzai64, c'est parfait et même encore mieux que les formules ^^

Cela fonctionne pour une feuille appelée "1R dans ce code :

Option Explicit

Function Localise(Qui As Range) As String
Dim Cel As Range

  Application.Volatile
  If Trim(Qui) = "" Then Exit Function
  With Sheets("1R")
    Set Cel = .Range("B7,B8:I53,K8:R53").Find(what:=Qui, LookIn:=xlValues, lookat:=xlWhole)
    If Not Cel Is Nothing Then
      Localise = Trim(.Range("A" & Cel.Row))
      End If
  End With

End Function

Maintenant, si je veux la même chose pour une autre feuille "2R", j'ai essayé ceci, mais je n'ai pas vos connaissances et donc çà ne fonctionne pas. En fait, il me reprend aussi les valeurs de la feuille "1R"+ celles du "2R", je vais t'envoyer le classeur complet pour plus de compréhension du problème car je suis certain que je m'exprime mal

Voici le classeur avec les feuilles relatives au 2R

Up, à l'aide je n'y arrive pas.

J'ai également testé le code ci-bas pour introduire une seconde feuille de recherche mais Il me mélange toujours les résultats.

Function Localise(Qui As Range) As String
Dim Cel As Range

  Application.Volatile
  If Trim(Qui) = "" Then Exit Function
  With Sheets("1R")
    Set Cel = .Range("B7,B8:I53,K8:R53").Find(what:=Qui, LookIn:=xlValues, lookat:=xlWhole)
    If Not Cel Is Nothing Then
      Localise = Trim(.Range("A" & Cel.Row))
      End If
  End With

  With Sheets("2R")
    Set Cel = .Range("B7,B8:I53,K8:R53").Find(what:=Qui, LookIn:=xlValues, lookat:=xlWhole)
    If Not Cel Is Nothing Then
      Localise = Trim(.Range("A" & Cel.Row))
      End If
  End With
End Function

je suis désespéré, je n'ai plus de cheveux à tirer

Bonsoir

En modifiant la fonction personnalisée

On aurait pu passer par une cellule contenant le nom de la feuille

Tu es vraiment trop fort

Je cherche toute la journée et j'avance pas et tu règles çà en deux minutes ! Chapeau l'artiste.

Merci. Un tout grand merci. Mais j'ai encore besoin de tes connaissances car j'ai une bizarrerie quand je l'applique sur mon classeur général.

Sur le fichier que tu viens de modifier, l'opération se fait directement à l'ouverture du classeur.

J'ai transposé ton code dans mon programme complet, le résultat fonctionne à merveille MAIS l'opération ne fait pas directement à l'ouverture du classeur.

Mais si je clique sur la première formule et que je vais dans la barre de formule et que je fais "ENTER" tout le tableau se fait d'un coup.

Tu n'as pas une idée sur ce qui cause cela ? Certainement une option mais laquelle ? L'idéal étant comme sur le fichier que tu as réalisé, que la formule s'applique directement à l'ouverture du classeur.

Bonjour

Pour Banzai, la solution de départ par formule matricielle ou formule nommée.

Cordialement

Serait-il possible de partir sur l'idée de Banzai64 en Vba avec la fonction Localise, c'est mieux pour m'y retrouver, le tableau de la V002 compte un exemple avec plusieurs feuilles.

Peut-être qu'un ajout dans le Workbook, qui activerait les formules de la feuille "RECH" suffirait ?

à noter que cette feuille "RECH" sera masquée.

Bonjour

Voilà des formules dont je serai incapable de faire

Ton problème de rafraichissement des résultats doit-être résolu

ok, j'attendais ton avis en fait.

Banzai64 a écrit :

Bonjour

Voilà des formules dont je serai incapable de faire

Ton problème de rafraichissement des résultats doit-être résolu

Cela ne fonctionne pas. Les résultats varient fortement et les données résultats sont faussées.

Le tien fonctionne très bien mis à part le souci que je rencontre sur mon classeur et que je ne rencontre pas sur celui de test que tu m'as renvoyé. çà doit être une bêtise, mais laquelle ?! pt être un format dans mon classeur ?

Veux-tu regarder ?

Yes ! EurêKa, j'ai trouvé tout seul

En partant de l'observation que la macro fonctionnait sur mon programme, uniquement lorsque je validais la barre de formule (je ne sais toujours pas la raison)... j'ai essayé en introduisant une valeur dans une cellule non utilisée (E2) et ensuite simplement aller sur (F2) et j'ai remarqué que là aussi, cela déclenchait la macro.

Du coup, me suis fait un bouton macro sur ma page principale qui va vers la page de recherche où est utilisée la macro que tu m'as réalisée ainsi que les localise , je place 1 dans E2 et qui va ensuite sur F2 puis retourne sur ma page principale.

Sub testlarecherche()
'
' activerlarecherche Macro
'

'
    Sheets("RECH").Select
    Range("E2").Select
    ActiveCell.FormulaR1C1 = "1"
    Range("F2").Select
    Sheets("RSU").Select
End Sub

C'est du pur hasard... mais çà fonctionne, lol. Vous pensez que je risque d'avoir une mauvaise surprise ?

Bonsoir

Hummmm les formules d'Amadéus ne fonctionnent pas ?

Ce sont des formules matricielles

Pour ton problème d'affichage c'est que les formules sont calculées à l'ouverture du fichier et comme tu as énooooormément de calculs, le temps de rafraichissement de tous les résultats est élevé

Vérifies aussi si tu n'es pas en calcul manuel

Banzai64 a écrit :

Bonsoir

Hummmm les formules d'Amadéus ne fonctionnent pas ?

Ce sont des formules matricielles

Pour ton problème d'affichage c'est que les formules sont calculées à l'ouverture du fichier et comme tu as énooooormément de calculs, le temps de rafraichissement de tous les résultats est élevé

Vérifies aussi si tu n'es pas en calcul manuel

La formule de Amadeus fonctionne, elle fonctionne très bien sur le fichier qu'il a réalisé. C'est sur le programme complet qu'elle ne fonctionne pas, mais c'est normal puisqu'il n'a pas toutes les infos, sinon je suis certain que cela aurait aussi fonctionné. Cela m'intéresse toujours d'ailleurs, s'il sait le faire sur le fichier V002, je serais "heureux"

Je suis en calcul automatique, dommage cela aurait été simple. Tu as raison le volume de calcul doit être responsable de tout çà.

Pour en revenir au code que j'ai fait pour contourner le problème, il fonctionne parfaitement tant que la feuille RECH est visible. Si je la masque, çà ne fonctionne plus. Faut-il appeler la feuille autrement à ce niveau-ci ?

Sub testlarecherche()
'
' activerlarecherche Macro
'

'
   Sheets("RECH").Select  'C'est là que çà bugge si la feuille est masquée'
    Range("E2").Select
    ActiveCell.FormulaR1C1 = "1"
    Range("F2").Select
    Sheets("RSU").Select
End Sub

Yes, trouvé aussi ^^

Sub testlarecherche()
'
' activerlarecherche Macro
'

'
    Sheets("POP3S").Select
    Sheets("RECH").Visible = True
    Sheets("RECH").Select
    Range("E2").Select
    ActiveCell.FormulaR1C1 = "1"
    Range("F2").Select
    ActiveWindow.SelectedSheets.Visible = False
    Sheets("RSU").Select
End Sub
Rechercher des sujets similaires à "fonction recherche resultat possibilite multiple"