RECHERCHEV (repérer une suite de caractères) - Page 2

Résolu
Précédent
  • 1
  • 2
  1. identifiant-comment Messages postés 351 Statut Membre 54
     
    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)
    0
  2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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 ?
    0
  3. identifiant-comment Messages postés 351 Statut Membre 54
     
    :)
    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 ?
    0
  4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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 ;-)
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. identifiant-comment Messages postés 351 Statut Membre 54
     
    :) Ca marche. J'ai pas non plus compris comment tu faisais, mais ça marche !
    0
  7. identifiant-comment Messages postés 351 Statut Membre 54
     
    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 !
    0
  8. identifiant-comment Messages postés 351 Statut Membre 54
     
    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...
    0
  9. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
    0
  10. identifiant-comment Messages postés 351 Statut Membre 54
     
    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.
    0
  11. identifiant-comment Messages postés 351 Statut Membre 54
     
    C'est quoi exactement la plage que tu mets dans EQUIV ? La plage tierce dont je cherche la plus grande valeur, c'est ça ?
    0
  12. identifiant-comment Messages postés 351 Statut Membre 54
     
    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à...
    0
  13. identifiant-comment Messages postés 351 Statut Membre 54
     
    Et dans LIGNE(), c'est quelle plage que tu appelles ?
    Oui, ça en fait des questions... :)
    0
  14. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
    0
  15. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
    0
  16. identifiant-comment Messages postés 351 Statut Membre 54
     
    Waw, on ne fait plus dans le touristique là...
    Je te remercie et comme d'hab je teste et je te tiens au courant !
    0
  17. identifiant-comment Messages postés 351 Statut Membre 54
     
    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 !
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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
      0
  18. identifiant-comment Messages postés 351 Statut Membre 54
     
    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 !!
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Non non, c'est bon
      heuuuu... Ah ouais ?
      rien compris à la réponse moi... :-s
      0
  19. identifiant-comment Messages postés 351 Statut Membre 54
     
    :)
    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 !
    0
Précédent
  • 1
  • 2