IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Filtrer une listbox sur base de mots saisis dans un textbox [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 246
    Par défaut
    hello,
    Citation Envoyé par NulenExcel77 Voir le message
    Merci jurassik pork, mais ce n'était pas ma demande, ta macro en était très proche.
    D’ailleurs je suis toujours penché dessus afin de trouver et comprendre ou ça pèche :/
    peux-tu essayer le fichier en pièce jointe en tapant pour la recherche :
    SMD 0805,SMD 1206
    Si cela ne fonctionne pas --> Quelle version d'Excel utilises-tu ?

    Ami calmant, J.P
    Fichiers attachés Fichiers attachés

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2013
    Messages : 122
    Par défaut
    Bonjour NulEnExcel77

    Je me demande s'il ne serait pas possible d'exploiter l'idée de Boisgontier Jacques en faisant une saisie avec completion comme il indique dans la discussion suivante : https://www.developpez.net/forums/d1...bobox-activex/

    Cela ajoute une combobox à la textbox
    Cela ne permet pas cependant d'accélérer la saisie sur un mot dans un ordre différent.

    A toutes fins utiles, pour simplifier l'interface utilisateur

  3. #3
    Membre actif
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Octobre 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Octobre 2011
    Messages : 75
    Par défaut
    Bonjour à tous

    Bravo jurassic pork, ça marche bien chez moi.

    fraflt69, j'ai suivi le lien, ça m’agace un peu, j'aurai pas dû ouvrir une discussion inutile du coup, mes mots clés étaient foireux :/
    Mon outil est opérationnel en l'état pour diffusion, je réfléchi peut être à une optimisation, utiliser le double clic pour un résultat ou un autre,
    si vous avez une idée
    Comme tu dis, il est intéressant de se pencher sur l'idée de Boisgontier, moi j'adore ça, il est bon d'avoir plusieurs solution sous le coude.
    j'y retourne

    A plus les pros

    bonne fin de journée

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    J'avais cru comprendre que la recherche devait porter sur plusieurs colonnes. C'est ce qui ressort du code initialement posté. Du coup, si c'est le cas, le fichier de fraflt ne fonctionne pas chez moi

    J'ai adapté la formule du filtre avancé pour ne reprendre que les "mots entiers". La formule ajoute donc un espace avant et après chaque mot cherché, ainsi que en début et en fin de chaque cellule sur lesquelles on recherche la donnée. L'ordre de saisie des mots n'a pas d'importance.

    Nom : 2021-10-20_114057.png
Affichages : 144
Taille : 53,3 Ko

    Si le filtre devait être différent (ajouter ou supprimer des colonnes de recherche, effectuer une recherche ET au lieu d'une recherche OU, ...), il suffirait de modifier la formule du filtre avancé... C'est toute la puissance de cette solution, qui s'appuie sur Excel avant de "faire du VBA".



    L'important ici, c'est de comprendre l'intérêt, pour l'utilisateur Excel, de penser Excel avant de penser VBA!! Es-tu programmeur? Non! Dois-tu développer une solution distribuable "au grand public"? Non! Alors, PENSE EXCEL AVANT de penser VBA. Tu comprendras et surtout, tu MAITRISERAS beaucoup mieux ce que tu mets en place, plutôt que de dépendre de "programmeurs"... Sans cela, tu vas partir sur des solutions "informatiques" toutes plus foireuses les une que les autres, à preuve les 26 messages de cette discussion, avec du code mal torché (un EXIT SUB en tout début de procédure, franchement... ) que tu appliqueras sans rien comprendre et la moindre modification de la structure de ton classeur fera tout péter et t'obligera, dépendant que tu es, à venir demander de l'aide pour recevoir l'emplâtre sur la jambe de bois...

    Une demande telle que la tienne, ça s'analyse un minimum et surtout, surtout!!!, on y répond en se penchant D'ABORD sur la conception du classeur et les outils natifs disponibles, avant que de tenter x solutions de "programmeur" foireuses pour telle ou telle raison.


    Citation Envoyé par jurassic pork Voir le message
    [...]
    Finalement je crois bien que tu te compliques la vie car avec un filtre personnalisé tu fais la même chose qu'avec ta fenêtre et ta macro.[...]
    Si la demande porte bien sur un filtre portant sur plusieurs colonnes, la solution par filtre automatique ne peut pas fonctionner puisque les filtres se complètent sans formuler une alternative.
    Fichiers attachés Fichiers attachés
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre actif
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Octobre 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Octobre 2011
    Messages : 75
    Par défaut
    Bonsoir,

    Je pense que l'on va en rester là sur le sujet, 26 messages, c'est apparemment trop long ....

    Nom : Capture pour forum.png
Affichages : 145
Taille : 2,2 Ko

    Laisse moi en douter, mon pseudo sur un ancien message pour commencer et maintenant cette étalage de ta suprématie
    sur le pov noob que je suis, bravo la pédagogie (pour un formateur)
    Précision, tu excuseras le "exit sub", évidemment ça fait tache, mais il était précédé d'un apostrophe non? et d'un
    "En cours de travaux" aussi, ce n'était pas un fichier finalisé en même temps.Je trouve ça petit de ta part de mettre l'accent sur ces détails.
    La forme m'importe pas, tant que ça marche, j'ai jamais prétendu être programmeur "voici un bout de programme VBA, aidez moi à l’améliorer"
    voilà comment je suis venu à vous . ooooh je vous entends de là, il prend la mouche etc..., mais à un moment, ça commence à bien faire.
    Je demande de l'aide, je ne viens pas sans rien, je viens avec un début de solution qui semble (pour moi en tout cas)
    convenir à mes besoins. Quand on sait pas, on dit "je sais pas" et on laisse répondre ceux qui peuvent aider.
    10 ans que je viens ici, beaucoup m'ont aidés à avancer, mais ça va trop loin.
    Tu imposes tes idées, TA façons de faire, peut être à raison, mais en prenant les gens de haut, profitant de ton statut.
    C'est la "secte XL" ou bien? tu la vend très mal en tout cas

    Ta solution, en passant ne marche pas, désolé, un premier test "1206" et la liste reste vierge, une recherche "0603" idem, pourquoi?
    parce que t'as oublié de préciser au débutant que je suis qu'il fallait formater la colonne A en texte pour garder le "0" du début.
    et pleins d'autres incohérence, bref , très loin de ce que je voulais.

    Une quinzaine de personne doit utiliser cette outils, personne personne personne ne doit pouvoir utiliser le fichier et ses données.
    Seul l'USF sera en avant, à la limite, la feuille sera minimisé et/ou invisible.
    Le pourquoi de l'outil? tu es resté bloqué sur le terme de 'filtre", il y a malheureusement plusieurs personnes qui créent des nouveaux
    composants, et la plupart du temps des doublons.
    Je souhaiterai qu'il sachent en 2 - 3 clics si leur besoin (le composant) existe dans la base, C'EST TOUT, c'est plutôt simple comme demande,
    si la solution ne l'est pas , bah je passerai à autre chose, voilà tout.

    J'ai malgré tout assez d'éléments pour sortir quelque chose (même si c'est une usine à gaz, dsl) mais ça devrait marcher.
    Sinon, on reviendra au bon vieux ctrl-F non?
    Merci fraflt69 et aux autres qui avaient consacré un peu de votre temps et cela sans préjugés.

    Bonne fin de soirée, le noob va se coucher

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Ma grand-mère disait: Fais du bien à un vilain, il te ch**** dans la main.


    Ma solution fonctionne avec 1206, ne t'en déplaise. Serais-tu nul au point de ne pas savoir la tester?

    Nom : 2021-10-21_060425.png
Affichages : 172
Taille : 25,0 Ko

    Elle n'aurait pas fonctionné avec 0603, mais tu as trouvé toi-même comment corriger cela côté Excel => de quoi te plains-tu? Tu as gagné en autonomie plutôt que de dépendre d'une solution à coup de dictionary que tu ne comprends pas et que tu ne maîtrises pas. Mais suis-je bête, tu es probablement une de ces personnes qui veut du tout cuit gratuit et qui se permet de râler sur un mec qui prend du temps pour lui répondre... On croit rêver. Sur un forum, on n'est pas là pour servir le truc tout beau tout nickel ni pour envisager TOUS les cas de figure (ça c'est le rôle de l'utilisateur). Si tu souhaites un truc tout beau tout nickel, tu t'adresses à un spécialiste qui t'enverra une facture toute belle toute nickel.

    Citation Envoyé par NulenExcel77 Voir le message
    [...]
    Je souhaiterai qu'il sachent en 2 - 3 clics si leur besoin (le composant) existe dans la base, C'EST TOUT, c'est plutôt simple comme demande,
    si la solution ne l'est pas , bah je passerai à autre chose, voilà tout.[...]
    Ma solution fait PILE POIL ce que tu demandes! C'est plutôt simple comme solution, non? Et si je te l'ai proposée, c'est parce que tu es RH et pas programmeur (ce n'est pas une injure ni une condescendance) et que ton pseudo (que TU as choisi et dont TU as parlé le premier) me fait penser qu'une solution Excel est meilleure qu'une solution VBA. Ma solution en VBA "pour Excel"
    • fait 10 lignes de code;
    • s'appuie largement sur ce qu'on ferait à la main, le seul truc en VBA là-dedans est la boucle;
    • permet une modification et une adaptation du filtre sans toucher au code.



    A contrario, "ta" solution pêchée sur le net et à laquelle tu ne comprends rien
    • fait +/- 70 lignes;
    • est mal codée;
    • utilise des variables publiques;
    • utilise un Exit Sub;
    • code tout dans la proc événementielle alors que c'est une mauvaise pratique;
    • utilise un dictionary (tu sais ce que c'est? Ce n'est même pas du VBA);
    • utilise un tableau en VBA à deux dimensions (tu sais manipuler?);
    • utilise deux boucles imbriquées (Tu connais?);
    • n'utilise pas la déclaration explicite des variables, ce qui risque fort de te jouer des tours.



    Tu sauras maintenir cette solution "VBA" et la faire évoluer? J'en doute fortement... après, quand je vois une cochonnerie pareille, je comprends que certains programmeurs disent que "VBA, c'est de la merde, c'est du langage d'amateur"... Quelle misère.

    Il n'y a pas de honte à ne pas connaître et à être nul en Excel, pour reprendre TON pseudo, mai s'entêter dans une solution non maîtrisée me semble déraisonnable.

    Tu parles de pédagogie? Ah oui c'est vrai, j'oubliais que la pédagogie, ça consistait à caresser les gens dans le sens du poil et à les encourager à poursuivre avec leurs solutions foireuses. Et lorsque je parlais de "programmeurs", je ne parlais pas de toi, mais d'une façon générale, pour insister sur le fait que justement, parce que tu n'es pas programmeur, tu as intérêt selon moi à te tourner vers des solutions "Excel" qui seront plus faciles à adapter et à maintenir.

    Ici, tu n'utilises pas les tableaux structurés alors que ça s'impose. C'est l'outil de stockage de données dans Excel et il est aberrant de s'en priver. Il serait donc pour moi aberrant de ne pas signaler qu'il faut utiliser les outils adaptés à ton besoin. Manifestement, tu préfères rester dans ton ignorance crasse de l'outil et dans la nullité de tes connaissances en Excel (Depuis tes questions de 2012 sur le forum, tu n'as pas progressé, manifestement, et en 2015, tu cherchais déjà une solution genre usf, en vb.net). Perso, ça ne m'empêchera pas de dormir. Bon amusement avec ton petit outil utilisable par 15 personnes.


    Pour le reste de ta diatribe, je n'ai vraiment pas de temps à perdre avec quelqu'un comme toi. Je continuerai à proposer mes solutions parce que je les pense meilleures, et comme dit dans ma signature, elles ne sont pas meilleures parce qu'elles sont les miennes, elles sont les miennes parce qu'elles sont meilleures.

    Continue à bien t'amuser sur les forums avec ton beau code tout beau qui ne marche pas, même si je te donne raison de vouloir en rester là. Même en VBA pur, 25 messages pour un problème aussi trivial, il y a vraiment de l'abus. Si tu préfères des solutions qui ne fonctionnent pas et auxquelles tu ne comprends rien, que tu ne maîtrises pas et que tu ne sauras pas faire évoluer, mais qui "collent" à ton code plutôt qu'une solution fonctionnelle mais qui gratte un peu ton ego, grand bien te fasse.

    Au passage, un RH qui, de son propre aveu est nul en Excel, qui doit résoudre les problèmes Excel pour 15 personnes dans sa boite, ça me laisse pantois. La prochaine fois que je vois que tu poses une question, je m'abstiendrai et je te laisserai mariner dans ton jus.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2013
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2013
    Messages : 122
    Par défaut
    Bonjour NulenExcel77

    j'ai fait une régression en introduisant une nouvelle fonction pour gérer les recherches avec des mots inversés: méa culpa
    J'aurais du mieux tester.
    Plutôt que de critiquer du code, il faut voir le besoin utilisateur, et pour produire un code robuste je dirai que le demandeur devrait l'assortir d'un plan de test et d'un jeu de tests le plus complet. C'est ce qu'un service informatique est en droit de demander d'une spécification.
    En conclusion, ce n'est pas le moment de baisser les bras, persévérons sauf si une recherche par CTRL+F suffit
    Fichiers attachés Fichiers attachés

  8. #8
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 246
    Par défaut
    hello
    Citation Envoyé par Pierre Fauconnier Voir le message
    Ma solution fonctionne avec 1206, ne t'en déplaise. Serais-tu nul au point de ne pas savoir la tester?
    Nom : 2021-10-21_060425.png
Affichages : 172
Taille : 25,0 Ko
    Pierre, je ne voudrais pas remuer le couteau dans la plaie mais chez moi cela ne fonctionne pas non plus :
    Nom : NulEnExcelFitreAvancé.png
Affichages : 124
Taille : 9,2 Ko
    mode opératoire : j'ouvre ton classeur, je clique sur le bouton USF, je rentre 1206 dans la textbox et je tape {ENTER} . Version d'Excel : Famille et Etudiants 2019.
    Quand cela ne fonctionne pas chez quelqu'un il faut se demander pourquoi par exemple :
    1 - Mauvais mode opératoire ?
    2 - Version d'Excel différente ?
    3 - Configuration différente (options, addons etc...) ?

    En ce qui concerne la demande de NulEnExcel :
    Une quinzaine de personne doit utiliser cette outils, personne personne personne ne doit pouvoir utiliser le fichier et ses données.
    Seul l'USF sera en avant, à la limite, la feuille sera minimisé et/ou invisible.
    on pourrait utiliser un autre classeur pour accéder au classeur avec les données par relation (connexion) . Dans ce cas on pourrait utiliser un filtre ou un filtre avancé mais aussi une textbox sans être directement dans le fichier de données .

    Ami calmant, J.P

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut JP

    Citation Envoyé par jurassic pork Voir le message
    [...]
    Quand cela ne fonctionne pas chez quelqu'un il faut se demander pourquoi[...]
    si ça ne fonctionne pas chez 2 personnes, je veux bien investiguer. Je ne le fais pas si ça ne fonctionne chez une personne qui m'engueule.


    Citation Envoyé par jurassic pork Voir le message
    [...]
    En ce qui concerne la demande de NulEnExcel :

    on pourrait utiliser un autre classeur pour accéder au classeur avec les données par relation (connexion)[...]
    On pourrait même probablement utiliser Power Query avec une requête sur le classeur source et la saisie des mots-clé dans une cellule. Du coup, il n'y aurait plus de VBA. En fait, comme souvent, si on avait eu la demande mieux formulée au départ, on aurait probablement moins pataugé.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    fraflt,

    Lorsque je critique du code, je ne critique pas le programmeur, je critique juste le code.

    Je pense que lorsque l'on donne une solution, on doit l'adapter au besoin du demandeur, mais aussi à son niveau, et il n'y a aucune critique ou aucune condescendance de ma part dans cette phrase. Je préfère donner au demandeur une solution qu'il maîtrise ou à tout le moins qu'il peut comprendre qu'un truc purement informatique qui le rend dépendant à la moindre modification du fichier.

    Par contre, je pense que, même si la demande initiale n'est pas complètement formulée et est affinée par la suite, il y a des bonnes pratiques qui, elles, ne dépendent pas de lacunes dans le cahier des charges. Les variables publiques, le Exit Sub, l'absence de "Option Explicit" et le codage applicatif dans la proc évènementielle ne font pas partie de mes bonnes pratiques. Une solution "pur VBA" alors qu'on est en Excel ne fait pas non plus partie de mes bonnes pratiques, le dictionnaire que l'on jette en pâture en late binding à des gens qui ne le maîtrisent pas ne sont pas non plus une bonne pratique pédagogique (puisque le môssieur il parle de pédagogie).

    Je pense qu'il est cohérent de le dire sur un forum technique. Si quelqu'un n'est pas d'accord avec moi et veut argumenter, c'est tout bénéf pour le lecteur (le demandeur ou n'importe quel lecteur de la discussion).

    Il est hélas plus facile pour le demandeur de dénigrer une solution qui fonctionne (et qui a été donnée depuis longtemps) sur le simple fait qu'un 0 se perd à gauche que d'essayer de comprendre que cette solution lui a été proposée pour lui simplifier la vie.


    La solution par filtre avancé que je propose pourrait même se passer de userform et autre truc VBA, le demandeur pouvant simplement saisir les mots dans une cellule Excel, séparés par des virgules comme dans la demande initiale, les données apparaissant alors sous les intitulés dans une feuille Excel. Ca permettra tout autant les verrouillages sur la DB et ça permettra probablement une meilleure lisibilité du résultat que dans un listbox.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Recherche()
      Dim Words
      Dim i As Long
     
      If Not Range("t_Mots").ListObject.DataBodyRange Is Nothing Then Range("t_Mots").ListObject.DataBodyRange.Delete
      Words = Split(Range("recherche").Value, ",")
      If UBound(Words) <> -1 Then
        For i = 0 To UBound(Words)
          Range("t_mots")(i + 1).Value = Words(i)
        Next
      End If
      Feuil1.Range("m1:T" & Feuil1.Range("m1048576").End(xlUp).Row).AdvancedFilter xlFilterCopy, Range("Critère"), Range("résultat")
    End Sub
    Nom : 2021-10-21_103520.png
Affichages : 135
Taille : 16,0 Ko
    Fichiers attachés Fichiers attachés
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  11. #11
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Merci JP

    Comme ça ne fonctionnait pas non plus chez toi, j'ai investigué

    Pour le 1206 qui ne va pas, le problème vient peut-être de ma version 365... Mea culpa, en 365, on n'a plus besoin de valider en matricielle...

    En "non 365", il faut aller valider la formule de critère en matricielle (CTRL+SHIFT+ENTER) et voir si ça fonctionne. Si quelqu'un veut bien tester ^^


    Au passage, je remarque que dans la colonne a_Description, il y a systématiquement un espace à la fin de la chaine. Ce serait bien que les données soient nettoyées avant utilisation.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  12. #12
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 246
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Merci JP
    Comme ça ne fonctionnait pas non plus chez toi, j'ai investigué
    Pour le 1206 qui ne va pas, le problème vient de ma version 365... Mea culpa, en 365, on n'a plus besoin de valider en matricielle...
    En "non 365", il faut aller valider la formule de critère en matricielle (CTRL+SHIFT+ENTER) et ça devrait fonctionner. Si quelqu'un veut bien tester ^^
    Au passage, je remarque que dans la colonne a_Description, il y a systématiquement un espace à la fin de la chaine. Ce serait bien que les données soient nettoyées avant utilisation.
    Je crois bien qu'avec ma version d'Excel la formule matricielle est déjà validée :
    Nom : PierreFiltreAvancé.png
Affichages : 119
Taille : 20,6 Ko

    Par contre ce qui est louche c'est que quand je fais la recherche j'obtiens la ligne d'entête :
    Nom : NulEnExcelFitreAvancé.png
Affichages : 132
Taille : 9,2 Ko

  13. #13
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Oui, ta formule est matricielle.

    Il faudrait essayer en mettant la ligne qui contient 1206 en première ligne des données et voir si la formule passe à VRAI.

    A priori, je n'utilise rien de spécifique à la 365, vu le tag de version de NulEnExcel77, et le filtre avancé n'a pas été modifié par les concepteurs d'Excel depuis des années.

    Peut-être aussi mettre la colonne du tableau t_Mots en texte, même si, à première vue, je pense que cela ne doit rien changer.

    Vu les hésitations sur les espaces, il faudrait peut-être modifier la ligne dans la boucle For pour supprimer les espaces éventuels de la saisie, parce que si l'utilisateur saisit un espace après la virgule, par exemple, ça va moins bien marcher => Range("t_mots")(i + 1).Value = Trim(Words(i))
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  14. #14
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 246
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Il faudrait essayer en mettant la ligne qui contient 1206 en première ligne des données et voir si la formule passe à VRAI.
    Effectivement si je remplace le 0603 par un 1206 sur la première ligne des données critère passe à vrai mais j'obtiens en résultat toutes les lignes :
    Nom : PierreFiltreAvancé2.png
Affichages : 125
Taille : 41,1 Ko

    Nom : PierreFiltreAvancé3.png
Affichages : 133
Taille : 14,8 Ko
    Nom : PierreFiltreAvancé4.png
Affichages : 118
Taille : 3,0 Ko

  15. #15
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Faudra investiguer, parce qu'en 365, ça fonctionne...

    Je suppose que tu valides la formule en simple formule (F2 puis ENTER), ça ne fonctionne pas mieux ^^
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  16. #16
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 246
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Je suppose que tu valides la formule en simple formule (F2 puis ENTER), ça ne fonctionne pas mieux ^^
    En simple formule cela a l'air de fonctionner :
    Nom : PierreFiltreAvancé5.png
Affichages : 119
Taille : 10,6 Ko

    [EDIT] oops cela ne fonctionne que pour 1206 ( en fait pas pour tous les nombres qui commencent par 0 (0603 0805)
    Comme le disait NulEnExcel :
    Il fallait formater la colonne A en texte pour garder le "0" du début.

  17. #17
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Et avec le tableau t_mots passé au format texte, tout fonctionne?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  18. #18
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 246
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Et avec le tableau t_mots passé au format texte, tout fonctionne?
    oui sauf que critère est à faux si la recherche n'est pas sur la première ligne de données (c'est peut-être normal vue la formule) et cela ne fonctionne que pour une expression ( pas de prise en compte de ce qui est après une virgule)

  19. #19
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    oui sauf que critère est à faux si la recherche n'est pas sur la première ligne de données (c'est peut-être normal vue la formule) et cela ne fonctionne que pour une expression ( pas de prise en compte de ce qui est après une virgule)
    Le critère à FAUX, c'est le fonctionnement normal du filtre avancé, parce que dans cette cellule-là, ce qui est évalué, c'est la première ligne de données. Si cette ligne ne valide pas le critère, alors la valeur est à FAUX. Mais le mécanisme du filtre avancé fait qu'Excel évalue cette formule pour chaque ligne de la table de données, d'où l'importance des références relatives et absolues.

    Pour ce qui est du problème de la recherche sur le premier mot, je pense me souvenir qu'en effet, Excel 365 ne gère pas les matricielles comme les autres versions et donc, qu'un problème pourrait survenir.

    Je vais investiguer de ce côté. Sur ma version en tout cas, la recherche multi-critères fonctionne:

    Nom : 2021-10-21_141924.png
Affichages : 138
Taille : 23,4 Ko
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  20. #20
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 246
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    je pense me souvenir qu'en effet, Excel 365 ne gère pas les matricielles comme les autres versions et donc, qu'un problème pourrait survenir.
    Finalement je me demande si le problème rencontré avec la formule matricielle n' est pas lié à cela :
    La formule matricielle dynamique :

    Présentement et avec la dernière mise à jour d’Excel 365, l'utilisation de la formule matricielle est devenue très facile :
    Renvoi de plusieurs résultats



    • Sélectionnez uniquement la cellule C2.
    • Insérez la formule suivante : =A2:A6*B2:B6
    • Tapez seulement Entrée pour valider votre formule matricielle. Excel s’occupera du reste.
    avant Excel 365 cela n'existait pas : The perpetual Excel 2019 license will not have dynamic arrays included.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/06/2014, 00h47
  2. Filtrer une Listbox en fonction d'informations saisies par l'utilisateur
    Par navorinco dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 23/05/2009, 17h30
  3. Comment remplir une ListBox sur Delphi 5
    Par bleuprogrammeur dans le forum Delphi
    Réponses: 3
    Dernier message: 10/06/2007, 21h06
  4. Remplir listbox sur base d'une autre listbox
    Par jujujulien dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 18/05/2007, 08h46
  5. Récupérer le nom d'une db sur base de la connexion.
    Par Empty_body dans le forum JDBC
    Réponses: 2
    Dernier message: 06/04/2007, 14h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo