Excel - fonction RECHERCHE

Hub

XLDnaute Occasionnel
Bonjour à tous,

Vous trouverez ci-joint un fichier illustrant le problème que je rencontre.

Comment le résoudre ?

Merci d'avance pour toutes vos suggestions.

A plus
 

Pièces jointes

  • excel classique fonction recherche.xls
    24 KB · Affichages: 57

Hub

XLDnaute Occasionnel
Re : Excel - fonction RECHERCHE

Bonjour le file,

Didji, je joins un nouveau fichier indice "b"
J'ai essayé de reconduire ta solution sans succès. Je regarde et découvre en ce moment comment fonctionne la commande INDIRECT.
Si tu as encore un peu de temps à m'accorder, regardes si tu arrives à la reconduire et tu me dis ce qui en est car les solutions classiques sans VBA sont parfois plus rapides donc plus intéressantes

Jacky, ta solution VBA est Ok, je la teste sur mon projet final et je reviens vers vous pour vous informer.

merci pour votre aide
 

Pièces jointes

  • excel classique fonction recherche b.xls
    49 KB · Affichages: 36

djidji59430

XLDnaute Barbatruc
Re : Excel - fonction RECHERCHE

Re
je te remets ton fichier, avec différentes formules pour le meme resultat (heureusement)
Les valeurs de l'argument vecteur_recherche doivent être placées en ordre croissant : ...,-2, -1, 0, 1, 2, ..., A-Z, FAUX, VRAI. Sinon, la fonction RECHERCHE peut donner une valeur incorrecte.

Ce qui n'est pas le cas:
sp1 sp2 sp11 ne se suivent pas mais sp1 sp11 sp115 sp2 oui

D'un autre coté, c'est ecrit partout que la fonction recherche() est obsolète et d'un usage "merdique".
Crdmt
 

Pièces jointes

  • excel classique fonction recherche b.xls
    112 KB · Affichages: 38

Jacky67

XLDnaute Barbatruc
Re : Excel - fonction RECHERCHE

Re...
Jacky, ta solution VBA est Ok, je la teste sur mon projet final et je reviens vers vous pour vous informer.
Utilise plutôt la méthode de "Modeste" avec la fonction RechercheV
Elle est mieux adapté à ton cas et il y aura moins de plage à nommer.
Et pas besoin de calcul intermédiaire
En F6
Code:
=SI(B6="";"";RECHERCHEV(B6;DECALER(Fr;;EQUIV(B3;TitreLangue;0)-1;;3);2;0))

En I6
Code:
=SI(B6="";"";RECHERCHEV(B6;DECALER(Fr;;EQUIV(B3;TitreLangue;0)-1;;3);3;0))
 

Pièces jointes

  • excel classique fonction recherche b.xls
    45 KB · Affichages: 40

Modeste geedee

XLDnaute Barbatruc
Re : Excel - fonction RECHERCHE

Bonsour®
D'un autre coté, c'est ecrit partout que la fonction recherche() est obsolète et d'un usage "merdique".
:confused:

Meuh non !!! :rolleyes:
les Fonctions RECHERCHE? exigent que la clé de recherche soit en premiere colonne (ou ligne)
cette limitation oblige souvent à dupliquer des colonnes pour parvenir à nos fins.
:rolleyes: je dirais donc ch..nt ! heu...? pénalisant plutôt que merdique ...:eek:

Obsolete ??? ces fonctions existent depuis la naissance d'EXCEL et ont toujours produis les résultats prévus et attendus...

L'utilisation de la combinaison INDEX-EQUIV permet une plus grande flexibilité dans la mise en oeuvre pour des résultats similaires.

Tout comme pour les fonctions RECHERCHE?, la fonction EQUIV possède un 3eme argument qu'il convient de préciser de façon explicite
à fin d'éviter les résultats parfois "merdiques"...
 

Hub

XLDnaute Occasionnel
Re : Excel - fonction RECHERCHE

Bonsoir le fil,

Jacky, j'ai essayé de reconduire ta solution VBA sur le projet final => plantage !!!
J'utilise déjà du code VBA très copieux pour la mise en page, je renseigne environ 25 cellules qui sont testés... faut-il modifier ton code de manière à le distinguer de l'existant ? je ne pense pas puisque dans "Worksheet_SelectionChange" ton code désigne la cible B3.

Dim temp As String
la variable "temp" est le diminutif de quoi ? elle sert à quoi ?
elle est déclarée de manière "global" pour la rendre commune aux deux Private Sub. Donc pas besoin de lui attribuer une valeur. C'est bien ça ?

If Target.Count > 1 Then Exit Sub
KéZaKo ? peux-tu m'expliquer ?

If Target.Value = temp Then Exit Sub
ça voudrait dire : si la cible (cellule que l'on renseigne) est égale à la variable temp alors on sort de la macro; C'est bien ça ? mais comme je ne sais pas ce que tu attends de cette variable... KéZaKo ?
c'est sur cette ligne que le débogeur c'est placé lors du plantage

If Target.Address = "$B$3" Then [b6] = ""
là c'est bon j'ai compris : quand on renseigne la cible (la celleule B3) alors on efface B6

en terme de pourcentage, je n'ai pas suivi grand chose.
 

Hieu

XLDnaute Impliqué
Re : Excel - fonction RECHERCHE

Salut,

Je m'incruste dans la discussion ^^

Un essai en index equiv sur plusieurs tableaux;

La méthode : Index((tab1;tab2;tab3;tab4);ligne;colonne;tableau)

Et je ne sais pas si la méthode a déjà été proposé ^^

++

Nota : j'viens de me rendre compte qu'il y avait une deuxieme page de discussion ^^
 

Pièces jointes

  • excel classique fonction recherche b_v0.xls
    45.5 KB · Affichages: 37
Dernière modification par un modérateur:

Jacky67

XLDnaute Barbatruc
Re : Excel - fonction RECHERCHE

Bonsoir,
Le code dans la feuille en question n'est absolument PAS obligatoire
Bonsoir le fil,

Jacky, j'ai essayé de reconduire ta solution VBA sur le projet final => plantage !!!
Sans voir ton code, ce sera difficile
J'utilise déjà du code VBA très copieux pour la mise en page, je renseigne environ 25 cellules qui sont testés... faut-il modifier ton code de manière à le distinguer de l'existant ? je ne pense pas puisque dans "Worksheet_SelectionChange" ton code désigne la cible B3.
Ce code sert seulement à effacer la cellule B6
Ce qui a comme conséquence(avantage) de ne rien affiche dans les cellules des résultats au changement de langue, mais là, par formule.
Dim temp As String
la variable "temp" est le diminutif de quoi ? elle sert à quoi ?
C'est un nom quelconque, on aurait pu l'appeler 'Tartanpion'
Elle sert a mémoriser le contenu la cellule B3

elle est déclarée de manière "global" pour la rendre commune aux deux Private Sub.
Juste :)
Donc pas besoin de lui attribuer une valeur. C'est bien ça ?
Elle prend la valeur de la cellule B3 a chaque fois que celle-ci est sélectionnée par la macro ''Private Sub Worksheet_SelectionChange(ByVal Target As Range)''

If Target.Count > 1 Then Exit Sub
KéZaKo ? peux-tu m'expliquer ?
Ejection de la macro si la sélection est multiple
If Target.Value = temp Then Exit Sub
ça voudrait dire : si la cible (cellule que l'on renseigne) est égale à la variable temp alors on sort de la macro; C'est bien ça ?
Juste ;)
Il es inutile d'effacer B6 si la langue sélectionnée est identique à celle en cours

mais comme je ne sais pas ce que tu attends de cette variable... KéZaKo ?
c'est sur cette ligne que le débogeur c'est placé lors du plantage
Si cela fonctionne dans le classeur exemple , le problème vient d'ailleurs

If Target.Address = "$B$3" Then [b6] = ""
là c'est bon j'ai compris : quand on renseigne la cible (la celleule B3) alors on efface B6 :rolleyes:

en terme de pourcentage, je n'ai pas suivi grand chose.
Tu es courageux, tu vas y arriver.

Salutaions
JJ
 

Hub

XLDnaute Occasionnel
Re : Excel - fonction RECHERCHE

Jacky, j’ai bien compris que ce code ne sert uniquement quà effacer la cellule B6 et indirectement les cellules F6 et I6 via la formule « =SI(B6="";"";… »

Question :
If Target.Count > 1 Then Exit Sub
Ejection de la macro si la sélection est multiple
Je ne suis pas sur d’interpréter correctement cette explication.
Comment une sélection peut elle être multiple puisque l’on ne peut choisir qu’une cellule à la fois ?
Serait-ce, par exemple, via un « Range(« A1 :T16 ») ?

Cette macro me sera certaienement nécessaire plus tard !

@+
 

Jacky67

XLDnaute Barbatruc
Re : Excel - fonction RECHERCHE

Jacky, j’ai bien compris que ce code ne sert uniquement quà effacer la cellule B6 et indirectement les cellules F6 et I6 via la formule « =SI(B6="";"";… »

Question :
If Target.Count > 1 Then Exit Sub
Ejection de la macro si la sélection est multiple
Je ne suis pas sur d’interpréter correctement cette explication.
Comment une sélection peut elle être multiple puisque l’on ne peut choisir qu’une cellule à la fois ?
Serait-ce, par exemple, via un « Range(« A1 :T16 ») ?

Cette macro me sera certaienement nécessaire plus tard !

@+
Bonjour,

Reponse: ;)

Cette instruction permet dans ce cas de continuer à travailler sur cette feuille en dehors de la sélection de la cellule B3.
Mets cette ligne en commentaire, sélectionne 2 ou 3 lignes(ou colonnes) entières et essayes de les supprimer.
Tu comprendras l'intérêt de cette instruction.

Salutations
JJ
 

Discussions similaires

Statistiques des forums

Discussions
312 480
Messages
2 088 757
Membres
103 950
dernier inscrit
Thomas Solioz