Formule pour extraire des donnees sur 1 mot dans une phrase

glaieuls29 Messages postés 174 Statut Membre -  
glaieuls29 Messages postés 174 Statut Membre -
Bonjour,

j'aurai souhaité apporter une ultime retouche sur un tableau sous EXCEL 2016.

serait-il possible de rechercher 1 seul mot dans des phrases sur toute une colonne d'un tableau ?
je m'explique :
j'ai un tableau (feuil1) de plusieurs centaines de lignes et 9 colonnes.

l'onglet feuil1 etant satué d'info, j'ai donc créé un onglet pour faire des recherches sur les colonnes "entrepise", "montant","banque" et "travaux".
seule la colonne "travaux" m'intéresse.
tout fonctionne quand il n'y a eu qu'un seul mot de saisi.

ex : mot recherché "thermique"
si j'avais saisi "etude thermique "-----> ça ne marcherait pas
si j'avais saisi "thermique"-------> ok j'aurais toutes les infos correspondant à la ligne (date, ets, montant....)

j'aurais voulu adapter ce type de formule (ca ne fonctionne que si je specifie la ligne)

=SIERREUR(STXT(Feuil1!d20;CHERCHE(F2;Feuil1!d20;1);NBCAR(F2));"***");

à cette formule : (seule la partie en gras est à modifier)

=SI(ET($D$2="";$E$2="";$F$2="");SIERREUR(INDEX(Feuil1!$E:$E;AGREGAT(15;6;(1/(Tableau1[ENTREPRISE]=$C$2))*LIGNE(Tableau1[ENTREPRISE]);LIGNE(A1)));"");

SI(ET($CS2="";$E$2="";$F$2="");(SIERREUR(INDEX(Feuil1!$E:$E;AGREGAT(15;6;(1/(Tableau1[MONTANT]=$D$2))*LIGNE(Tableau1[MONTANT]);LIGNE(A1)));""));

SI(ET($C$2="";$D$2="";$F$2="");(SIERREUR(INDEX(Feuil1!$E:$E;AGREGAT(15;6;(1/(Tableau1[BANQUE]=$E$2))*LIGNE(Tableau1[BANQUE]);LIGNE(A1)));""));

SI(ET($C$2="";$D$2="";$E$2="");(SIERREUR(INDEX(Feuil1!$E:$E;AGREGAT(15;6;(1/(Tableau1[TRAVAUX]=$F$2))*LIGNE(Tableau1[TRAVAUX]);LIGNE(A1)));""));


SI(ET($C$2<>"";$D$2<>"";$E$2<>"";$F$2<>0);0;"")))))

je sais c'était un peu long et merci d'avoir lu jusqu'au bout :)

J'espère avoir été assez explicite, et je remercie par avance tout ceux qui se pencheront sur ce problème pour m'aider et encore tout ceux qui m'ont déjà apporté leur aide par le passé.

cordialement
glaieuls29.

Configuration: Windows / Firefox 87.0

8 réponses

  1. The_boss_68 Messages postés 959 Date d'inscription   Statut Membre Dernière intervention   182
     
    Bonjour,

    Je pense qu'avec un fichier joint anonymisé il serait plus facile pour les contributeurs de t'aider dans l’élaboration du fichier en question

    Slts
    0
  2. glaieuls29 Messages postés 174 Statut Membre
     
    re,
    oui merci j'en expédie un modèle très simplifié.

    quelques précisions qui pourraient peut être avoir leur importance:

    la recherche devra se faire dans un nouvel onglet et avec des données saisies qui vont encore evoluer

    https://www.cjoint.com/c/KDolVAaFcke

    Merci encore

    glaieuls29
    0
  3. glaieuls29 Messages postés 174 Statut Membre
     
    merci the_boss_68......tu es un boss.

    je trouve ton approche très intéressante. totalement à l'ouest de la mienne.

    ca semble fonctionner. Il me reste à incorporer cet onglet dans le programme.

    si je modifie son nom par "feuil1" ça posera un pb pour son déroulement ?

    je te tiens au courant.

    merci beaucoup pour ton coup de main.

    à plus

    glaieuls29
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. glaieuls29 Messages postés 174 Statut Membre
     
    re,
    je viens de faire l'essai "grandeur nature" ça fonctionne super bien.

    le seul inconvénient c'est que ça rame à la saisie de chaque lettre. Env 15 sec entre la saisie et l'affichage de la lettre dans le rectangle bleu.

    on peut y remedier ?

    cdt

    glaieuls29
    0
  6. The_boss_68 Messages postés 959 Date d'inscription   Statut Membre Dernière intervention   182
     
    Bonsoir

    Déjà mettre ce code dans ThisWorkbook
    Private Sub Workbook_Open()
    With Feuil3
    Feuil3.LastLine = .Range("B" & .Rows.Count).End(xlUp).Row
    End With
    End Sub


    en modifiant :
    With Feuil3
    Feuil3.LastLine = .Range("B" & .Rows.Count).End(xlUp).Row

    Par les valeurs que tu as mis sur ton code à toi voir grosso modo la ligne 63

    Sinon j'en sais rien pour la lenteur c'est dû certainement à la quantité des valeurs recherchés dans l'onglet BD

    Slts
    0
  7. glaieuls29 Messages postés 174 Statut Membre
     
    re,

    j'ai fait ce que tu m'as dit pour thisworkbook mais je ne suis pas certain d'avoir bien compris ce que tu voulais dire par "les valeurs que tu as mis sur ton code a toi voir grosso modo la ligne 63".
    range" b"......? j
    je fais comment pour faire apparaitre les n° ligne ?

    voilà ce que j'ai fait :

    après importation ton feuil3 ( feuillet "recherche") est devenu feuil8 chez moi.
    - j'ai donc modifié dans le code tous les mots feuil3 en feuil8.
    - range "b" : la je bloque je vois pas où ni quoi rechercher pour la modification.

    sinon j'ai rajouté un "Application.ScreenUpdating = True" à la fin du code feuil8 "recherche".
    l'affichage du resultat arrive avt l'affichage de ma saisie dans le rectangle bleu

    c'est beaucoup plus rapide ...mais.(20 sec env pour faire le tri sur 150 lignes)

    Pour limiter la recherche, ne pourrions nous pas demander via un textbox dans quelle colonne faire le tri ?
    (sur l'ensemble ou uniquement "entreprise", "travaux", montant "banque")

    tous les cas

    MERCI de passer du temps pour m'aider car comme tu as pu le remarquer je ne suis qu' un débutant "petit joueur".
    cdt
    0
  8. glaieuls29 Messages postés 174 Statut Membre
     
    re,
    je viens de rajouter un autre "application.screenupdating = true" dans le 1er pavé de code et c'est encore mieux.

    .....petit à petit l'oiseau fait son nid lol

    à plus.
    0