XL 2016 Recherche de partie de mot dans les cellules d'un tableau et extractions des résultats

Lorenzini

XLDnaute Occasionnel
Bonjour,

...même dans le titre, j'ai du mal à m'exprimer ; c'est dire !
Je suis toujours débutant sur VBA ; c'est pourquoi je crie (de nouveau) à l'aiiiiiiiiiiide !!
Le fichier est en pièce jointe pour plus de facilités...
...
Dans le coin supérieur gauche de ma feuille 2 se trouve un bouton (loupe) ''rechercher''.
Un clic sur ce bouton ouvre un petit formulaire qui invite l'utilisateur à taper ce qu'il veut pour le rechercher.
Le truc, euh... y'en a plusieurs en fait :

- Comment faire une recherche ''approximative'' ; je veux dire : si on tape ''pharmacie'' dans l'invite de commande, la validation va lancer la recherche sur le mot EXACT !
Sauf que : quid si j'écris p.ex. : ''phar'' ou ''armac'' (qui est la partie du mot ''pharmacie'') ? ou encore : ''labo'' pour ''laboratoire'' ... et bien : çà ne fonctionne plus. 😞
J'avoue que cela fait maintenant 3 jours que je galère à essayer de tripatouiller des bouts de code par çi par là... sans y arriver. o_O
J'ignore comment on demande gentiment à VBA de rechercher une PARTIE d'un mot dans les cellules de mon tableau. 🤔
Ce fichier va être utilisé par plusieurs personnes. Certaines taperont ''pharma'' ; d'autres ''pharmacie'' ... On est d'accord que dans les 2 cas de figures (pour ne compter que ceux-ci), une bonne recherche doit pouvoir renvoyer chaque cellule CONTENANT ''pharma'' ou ''pharmacie'' ; soit ce qui aura été tapé etc... etc...
...
La deuxième chose que je souhaitais faire (et j'ai presque réussi) ... vous savez, ce fameux ''presque'' qui fait perdre la tête.
pourquoi lorsque j'extrais les résultats de ma recherche sur une feuille spécialement créée pour, la colonne B ne suit pas !?
Je devrais y retrouver les n° CORRESPONDANTS et non les calculs qu'ils me fait car il repart de 20230001 à la numérotation !?
Je ne comprends plus et j'avoue que je suis purement et simplement prêt à jeter l'éponge.
Mes modestes connaissances, bien qu'elles aient été repoussée, restent dépassée, j'en ai peur.

MERCI pour toute l'aide que vous pourrez m'apporter ! :)
 

Pièces jointes

  • Réception_Colis_Joseph2.xlsm
    823.8 KB · Affichages: 6
  • Question_1.jpg
    Question_1.jpg
    267.9 KB · Affichages: 20
  • Question_2.jpg
    Question_2.jpg
    205.9 KB · Affichages: 20

Lorenzini

XLDnaute Occasionnel
Bonjour
Ci joint ma solution

A+ François
Votre code est fantastique et fonctionne à merveille ! encore Merci !
Dans la suite de ces bonnes actions, j'ai eu l'idée de coller un petit bout de code qui me compterait le nombre d'occurences trouvée avec la recherche.
J'ai noté une curiosité, certains résultats ne sont pas bons !?
Du coup, j'ai repensé la chose pour contourner le problème et y apporter une solution correcte.
La solution que j'ai trouvée s'apparente plus à du bricolage qu'à un "vrai" code bien développé digne de ce nom, mais c'est tout ce que je suis capable (pour le moment) de faire avec mes connaissances actuelles.
Comment faire pour compter le nombre d'occurences en VBA (donc, sans passer par la feuille comme je l'ai fait au travers d'une formule NB.SI...) ET surtout, que le résultat renvoyé soit correct ?
 

Pièces jointes

  • Réception_Colis_Joseph2.xlsm
    815 KB · Affichages: 5
  • Code_Occurences 02.jpg
    Code_Occurences 02.jpg
    319.3 KB · Affichages: 24

vgendron

XLDnaute Barbatruc
Hello

la réponse est "simple": tu ne comptes pas la meme chose dans les deux cas

ta formule utilise nb.si tu comptes le nombres de cellules qui contiennent le contenu de A1

alors qu'avec le bout de code ajouté
Application.WorksheetFunction.Count(TableauRech)
ca compte le nombre de valeurs
la traduction de Nb.si c'est la fonction countif
Nb = Application.WorksheetFunction.CountIf(TableauRech, Range("A1"))

perso, quand je veux inscrire une formule dans une cellule excel je passe toujours par
formule="=laformule"
range("A2").formula=formule

dans ton cas ca donnerait:
formule = "=countif(B5:H1000,""*""&A1&""*"")"
Range("A2").Formula = formule
 

Lorenzini

XLDnaute Occasionnel
Hello

la réponse est "simple": tu ne comptes pas la meme chose dans les deux cas

ta formule utilise nb.si tu comptes le nombres de cellules qui contiennent le contenu de A1

alors qu'avec le bout de code ajouté
Application.WorksheetFunction.Count(TableauRech)
ca compte le nombre de valeurs
la traduction de Nb.si c'est la fonction countif


perso, quand je veux inscrire une formule dans une cellule excel je passe toujours par
formule="=laformule"
range("A2").formula=formule

dans ton cas ca donnerait:
ok okéy...
et bien... j'ai encore appris un truc ☺️
C'est aussi une façon de faire... j'apprends j'apprends...
Merci vgendron !
 

Lorenzini

XLDnaute Occasionnel
par rapport à ma méthode pour les formules; LE truc à ne pas oublier
c'est que VBA est ANGLAIS: il faut donc ecrire les fonctions en anglais
et connaitre la subtilité
le ; devient ,
le " devient ""
et j'apprends encore un truc : je savais que VBA est anglais et qu'il faut tout traduire, mais j'ignorais que c'est de là que venait le fait d'écrire 2x les "...
 

vgendron

XLDnaute Barbatruc
Je suis en train de regarder ton code
il y a un truc bizarre. dans ta recherche
si tu tapes juste une lettre "D" par exemple...
puisque cette lettre apparait sur plusieurs colonnes d'une meme ligne.. la ligne sera recopiée plusieurs fois dans la feuille "Recherche"

à mon avis.. ce n'est pas vraiment ce que tu veux
 

Lorenzini

XLDnaute Occasionnel
en PJ une autre proposition en utilisant les tables structurées
oui, j'apprécie effectivement ta solution.
J'aime beaucoup cette idée de 1 ligne sur 2 est colorée en bleu ; cela "allège" la lecture du tableau.
Je n'ai qu'une chose à demander (j'ignore comment faire) : dans le tableau recherche, j'aurais souhaité que seules les en-têtes de colonnes apparaissent en couleurs... orange...bleue...verte...etc... or ici, dans la solution que tu proposes (et qui est très bien 👌 ), le tableau "recopie" les couleurs partout.
Est-ce possible de ne garder les couleurs que pour les titres, je veux dire les en-têtes de colonne ? car alors ce serait parfait !
 

Lorenzini

XLDnaute Occasionnel
C'est justement un truc que j'ai noté et que je ne comprend pas...
normalement, les couleurs ne devraient pas etre recopiées..
...j'aime beaucoup cette structure ; c'est propre, c'est net ... je vois des noms définis... c'est bien autrement fait par rapport à mes solutions d"amateurs !
J'apprécie ! ☺️
Je continue à chercher si je trouve un truc à bricoler pour les couleurs des en-têtes qui ne devraient pas se recopier...
Merci encore !
 

vgendron

XLDnaute Barbatruc
voila, j'ai trouvé

j'en ai profité pour commenter le code pour apporter quelques explications

et un peu de lecture si ca t'interresse


 

Pièces jointes

  • Réception_Colis_Joseph2 Version Table.xlsm
    800.6 KB · Affichages: 10

Discussions similaires

Statistiques des forums

Discussions
313 283
Messages
2 096 811
Membres
106 751
dernier inscrit
Souleymani