RECHERCHEV (repérer une suite de caractères) - Page 2
Résolu
Précédent
- 1
- 2
-
j'ai trouvééé !
S'il te reste deux secondes, ça m'intéresse toujours que tu me décortiques la formule...
(eh non, en fait il reste un bug :(. J'y retourne) -
Je veux bien t'expliquer mais avant rassure moi un peu...
Le trigramme de regroupement ce n'est pas systématiquement les caractères entre les 2 - hein ? -
:)
Non non, c'est plus compliqué que ça. Les identifiants peuvent parfaitement changer complètement d'un projet à l'autre et ne plus contenir le trigramme. Ceux-là ne s'affichent comme ça que pour le document modèle. Et comme le but c'est de faire un doc qui convienne à tous les projets...
En tout cas, une formule de type =GAUCHE(STXT(A4;4;NBCAR(A4));3) n'aurait pas suffit.
Je suis toujours en train de galérer sur le fait que lorsqu'aucune valeur n'est remontée, il y a "Recensement des cas de test pour le lot XX" qui s'affiche. C'est bizarre, avec une formule de type SI(ESTERREUR(formule);"message d'erreur";(formule)), je n'y arrive pas non plus.
J'ai même essayé de mettre le message d'erreur dans la cellule A1 de l'autre tableau pour voir. :)
Et j'ai modifié dans mon fichier le texte "Recensement des cas de test pour le lot XX", ça n'a rien changé à celui que me remonte ma formule !
Je suppose qu'il doit y avoir une histoire du genre que l'on ne peut pas imbriquer n'importe comment une formule matricielle ? -
Chez moi j'ai 0 qui s'affiche si pas trouvé.
Pour simplifier ton test tu peux mettre :
=si(SOMME(NON(ESTERREUR(CHERCHE(A4;[Tableau1.xls]GGG!$D$19:$D$32)))*1);ta formule;"pas trouvé")
tjs en matriciel
L'explication après manger pour ménager le suspense ;-) -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
:) Ca marche. J'ai pas non plus compris comment tu faisais, mais ça marche !
-
Pffiou ! heureusement que j'ai mangé léger... Ca va me prendre l'aprem pour assimiler tout ça et j'aurais pas perdu ma journée !
Je mets ma question en Résolu et je te remercie ! -
Bonjour eriiic !
j'espère que tu auras ce message...
Il faut que je complique un peu la formule de l'autre jour.
Je ne dois plus remonter la dernière occurrence (MAX) mais celles qui correspondent à la plus grande valeur dans une tierce colonne.
Voici la formule telle qu'elle existe actuellement.
SI(SOMME(NON(ESTERREUR(CHERCHE(D12;MatFJ)))*1);INDEX(MatM;MAX(NON(ESTERREUR(CHERCHE(D12;MatFJ)))*LIGNE(MatFJ)));Params!$D$19
Crois-tu qu'il est possible de remplacer le MAX par un RECHERCHEV ?
Je ne vois pas très bien comment mettre ça en place... -
Bonjour,
Ben oui, soyons fou, compliquons un peu...
=INDEX([Tableau1.xls]GGG!$A$1:$A$32;INDEX((NON(ESTERREUR(CHERCHE(A4;[Tableau1.xls]GGG!$D$19:$D$32)))*LIGNE($D$19:$D$32));EQUIV(MAX([Tableau1.xls]GGG!$E$19:$E$32);[Tableau1.xls]GGG!$E$19:$E$32)))
Je n'ai pas repris tes plages nommées car n'ayant pas le fichier je risquais d'ajouter des erreurs et de chercher pour rien.
Et je t'avoue ne pas avoir eu le courage de faire des tests exhaustifs, je te laisse le soin de me dire si c'est ok ;-)
Et une tite leçon de morale au passage : mefie toi des formules un peu complexes, très difficiles à maintenir en cas d'évolution 6 mois plus tard...
eric -
Merci pour ta réponse eriiic...
Et tu as raison, c'est galère à mettre en place.
D'ailleurs je tombe toujours sur un résultat à "pas de cluster associé" (je ne sais toujours pas d'où il sort celui-là...
Je retente avec en mêlant la formule avec ta solution du post 23. -
C'est quoi exactement la plage que tu mets dans EQUIV ? La plage tierce dont je cherche la plus grande valeur, c'est ça ?
-
Re...
Cette formule, soit :
- elle me donne toujours le même résultat quelle que soit la cellule que j'appelle
- elle me renvoie un résultat à 0
- elle m'indique "pas de cluster associé"...
Et j'arrive même pas à établir de règle pour voir ce qui ne va pas.
Le plus beau c'est que la même formule, à deux emplacements différents donne deux résultat différents.
Je nage un peu là... -
Et dans LIGNE(), c'est quelle plage que tu appelles ?
Oui, ça en fait des questions... :) -
Re,
oui effectivement, si je met plus de valeurs en colonne E (là où on cherche le maxi) ça ne marche plus.
Je regarderai d'un peu plus près plus tard.
C'est le genre de pb qui mériterait une fonction personnalisée pour simplifier...
A+
eric -
Re re,
A mettre dans un module :Function Trigramme(ID As String, PlageReglesGest As Range, OffsetPoids As Long, OffsetTrigramme As Long) Dim i As Long, p As Long, poids As Variant, rep As String, c As Range Application.Volatile rep = "non trouvé" For Each c In PlageReglesGest p = InStr(c.Value, ID) If p > 0 And c.Offset(0, OffsetPoids).Value > poids Then poids = c.Offset(0, OffsetPoids).Value rep = c.Offset(0, OffsetTrigramme).Value End If Next c Trigramme = rep End Function
et la formule devient :
=Trigramme(A4;[Tableau1.xls]GGG!$D$19:$D$21;1;-3)
Function Trigramme(ID, PlageReglesGest, OffsetPoids, OffsetTrigramme)
ID : l'ID recherché
PlageReglesGest : la plage des N° Règle de gestion générale
OffsetPoids : l'offset en colonnes où est le poids par rapport à la colonne PlageReglesGest
OffsetTrigramme : l'offset en colonnes où est le trigramme par rapport à la colonne PlageReglesGest
Je ne fais aucun contrôle sur les parametres saisis. PlageReglesGest doit faire 1 colonne de large bien sûr.
Avec 'inserer / fonctions / fonctions personnalisées' tu peux désigner les plages et cellules à la souris
Comme d'hab je te laisse tester...
eric -
Waw, on ne fait plus dans le touristique là...
Je te remercie et comme d'hab je teste et je te tiens au courant ! -
Arf...
Effectivement, c'est moins lourd, ça réagit plus vite, mais ça me remonte toujours le premier résultat trouvé... Je continue de chercher !-
A 'poids' égal oui, sinon il doit ramener le 'poids' le plus élevé.
J'appelle 'poids' ce que tu as décris comme ça "Je ne dois plus remonter la dernière occurrence (MAX) mais celles qui correspondent à la plus grande valeur dans une tierce colonne.".
Cette tierce colonne est attendue à l'offset OffsetPoids, mais peut-être que j'avais mal compris ta demande...
- si offset x >1 => x colonnes à droite de gestion...jenesaisplusquoi
- si offset x <1 => x colonne à gauche de gestion...jenesaisplusquoi
OffsetPoids=1 dans mon exemple, donc 1 colonne à droite de la colonne gestion...jenesaisplusquoi (de mémoire là où on recherche tes ID) il faut qu'il y ait des valeurs différentes, le trigramme de la plus élevée doit être ramené. Si c'est bien le test que tu a fais il faudrait déposer tes fichiers que je regarde sur un exemple plus complet.
eric
-
-
Non non, c'est bon, je comprends mieux.
Je pense que je vais pouvoir y arriver.
Et puis, j'ai trouvé une solution temporaire pour contourner le problème, donc ici, il y a moins de stress.
Merci beaucoup !! -
:)
Normal, c'est une réponse de juste-avant-le-WE...
Je n'en peux plus, je raccroche, sinon je vais continuer à raconter n'importe quoi.
je voulais dire qu'effectivement, la solution devait être dans
"- si offset x >1 => x colonnes à droite de gestion...jenesaisplusquoi
- si offset x <1 => x colonne à gauche de gestion...jenesaisplusquoi "
parce que ce n'était pas exactement ce que j'avais compris, et que toi en revanche, tu avais bien compris ma demande.
Je te souhaite un très bon WE et see you lundi matin !
Précédent
- 1
- 2