Créer un formulaire de recherche

Bon,jour à tous, actuellement en stage dans le but de réaliser une base de données, je souhaiterais mettre en place un formulaire de recherche permettant, en tapant le code du produit ou une partie du nom de la matière première, d’afficher toutes les informations du ou des produits recherché(s).
Le mieux serait de pouvoir rechercher selon plusieurs critères mais déjà un seul serait très bien.

J’ai commencé l’ébauche en suivant une vidéo youtube et différents tutoriels malheureusement, j’ai une erreur très souvent une erreur dans mon code.

Voici le fichier d’origine sur lequel j’aimerais implanter le formulaire de recherche :
BDDMP.xlsm (105,8 Ko)

Et voici ce que j’ai déjà fait :
BDDMPT3.xlsm (114,4 Ko)

Ps : La partie emballages n’est pas nécessaire pour la recherche vu le nombre de données, la recherche ne doit porter que sur « Raw Material »

Merci d’avance pour votre aide,
Bien Cordialement

Bonjour

Ci-joint ma proposition

Onglet « Menu » cliques sur le bouton « Rechercher »

Le formulaire s’ouvre avec dans la fenêtre principale l’ensemble des données à l’image de l’onglet « Raw Material »
Dans la fenêtre de recherche saisis le début d’un intitulé (attention de bien respecter la casse)
Cliques sur le bouton « search » une boîte de dialogue demande la lettre de la colonne où la recherche doit être effectuée
Puis OK
Dans la fenêtre principale la liste des données correspondant au critère de recherche à l’image de l’onglet « Product search »
Pour retrouver l’intégralité des données il faut vider la fenêtre de recherche et recliquer sur le bouton « search »

J’ai rajouté une ligne onglet « Raw Material » ligne 2 pour mettre les lettres de colonnes que l’on retrouve dans la fenêtre principale du formulaire ainsi de pouvoir avoir cette information pour la recherche dans une colonne

Ci-joint ton fichier avec ces évolutions

Fais des tests et dis moi

BDDMPT3V2.xlsm (120,9 Ko)

Bonjour à tous
Bonjour FFO
Tu aurais pu faire une boucle pour la copie, vu que les colonnes se suivent

Private Sub cmdSearch_Click()

Dim RowNum As Long
Dim SearchRow As Long
Dim lettrecolonne As String
Dim numcolonne As Long
Dim i As Long
Dim Ws As Worksheet, Wd As Worksheet
  
Set Ws = Sheets("Raw Material")
Set Wd = Sheets("Product search")
RowNum = 2
SearchRow = 2

  If txtKeywords <> "" Then
    lettrecolonne = InputBox("Veuillez saisir la lettre de la colonne de recherche !!!", "Lettre Colonne")
  End If
  If lettrecolonne <> "" And txtKeywords <> "" Then
    numcolonne = Range(lettrecolonne & "1").Column
      If Wd.Range("A2") <> "" Then
        Wd.Range("A2", "Z" & Wd.Range("A65536").End(xlUp).Row).Clear
    End If
    Ws.Activate
  
  Do Until Cells(RowNum, 1).Value = ""
    'If InStr(1, Cells(RowNum, 2).Value, txtKeywords.Value, vbTextCompare) > 0 Then
    If Cells(RowNum, lettrecolonne) Like txtKeywords & "*" Then
      For i = 1 To 26
         Wd.Cells(SearchRow, i).Value = Ws.Cells(RowNum, i).Value
      Next i
    
'        Worksheets("Product Search").Cells(SearchRow, 1).Value = Cells(RowNum, 1).Value
'        Worksheets("Product Search").Cells(SearchRow, 2).Value = Cells(RowNum, 2).Value
'        Worksheets("Product Search").Cells(SearchRow, 3).Value = Cells(RowNum, 3).Value
'        Worksheets("Product Search").Cells(SearchRow, 4).Value = Cells(RowNum, 4).Value
'        Worksheets("Product Search").Cells(SearchRow, 5).Value = Cells(RowNum, 5).Value
'        Worksheets("Product Search").Cells(SearchRow, 6).Value = Cells(RowNum, 6).Value
'        Worksheets("Product Search").Cells(SearchRow, 7).Value = Cells(RowNum, 7).Value
'        Worksheets("Product Search").Cells(SearchRow, 8).Value = Cells(RowNum, 8).Value
'        Worksheets("Product Search").Cells(SearchRow, 9).Value = Cells(RowNum, 9).Value
'        Worksheets("Product Search").Cells(SearchRow, 10).Value = Cells(RowNum, 10).Value
'        Worksheets("Product Search").Cells(SearchRow, 11).Value = Cells(RowNum, 11).Value
'        Worksheets("Product Search").Cells(SearchRow, 12).Value = Cells(RowNum, 12).Value
'        Worksheets("Product Search").Cells(SearchRow, 13).Value = Cells(RowNum, 13).Value
'        Worksheets("Product Search").Cells(SearchRow, 14).Value = Cells(RowNum, 14).Value
'        Worksheets("Product Search").Cells(SearchRow, 15).Value = Cells(RowNum, 15).Value
'        Worksheets("Product Search").Cells(SearchRow, 16).Value = Cells(RowNum, 16).Value
'        Worksheets("Product Search").Cells(SearchRow, 17).Value = Cells(RowNum, 17).Value
'        Worksheets("Product Search").Cells(SearchRow, 18).Value = Cells(RowNum, 18).Value
'        Worksheets("Product Search").Cells(SearchRow, 19).Value = Cells(RowNum, 19).Value
'        Worksheets("Product Search").Cells(SearchRow, 20).Value = Cells(RowNum, 20).Value
'        Worksheets("Product Search").Cells(SearchRow, 21).Value = Cells(RowNum, 21).Value
'        Worksheets("Product Search").Cells(SearchRow, 22).Value = Cells(RowNum, 22).Value
'        Worksheets("Product Search").Cells(SearchRow, 23).Value = Cells(RowNum, 23).Value
'        Worksheets("Product Search").Cells(SearchRow, 24).Value = Cells(RowNum, 24).Value
'        Worksheets("Product Search").Cells(SearchRow, 25).Value = Cells(RowNum, 25).Value
'        Worksheets("Product Search").Cells(SearchRow, 26).Value = Cells(RowNum, 26).Value
        SearchRow = SearchRow + 1
    End If
      RowNum = RowNum + 1
  Loop

  If SearchRow = 2 Then
      MsgBox "No products were found that match your search criteria"
      Exit Sub
  End If
Else
  txtKeywords = ""
End If
'lstSearchResults.RowSource = "SearchResults"
Call Userform_Initialize

End Sub

Merci à vous deux pour les réponses, c’est principalement ce que je recherche, je vais travailler la mise en forme de l’userform que ce soit plus esthétique !

Deuxième question, je ne sais pas si c’est possible, mais j’aimerais que le choix de la colonne où chercher se fasse au départ, c’est à dire soit avec une liste déroulante avec 3 options : « raw material », « Code Produit » et « supplier » par exemple. Le but étant que ce soit plus « intuitif » pour l’utilisateur final.

Aussi, est-ce possible de pas devoir respecter la casse ? Dans le même but de rendre plus simple l’utilisation du formulaire.

Merci encore pour vos réponses rapides, ça m’aide beaucoup

Bonjour Mimimathy
Tu as raison mais j’ai pour principe de ne pas modifier au mieux que je puisse faire les réalisations déjà en place juste à les adapter au besoin recherché
Pour la meilleur compréhension du demandeur il est de mon point de mieux de se raccrocher sur ce qui l’a fait que de lui proposer un autre montage avec une autre approche qu’il aura plus de mal à appréhender donc moins formateur pour lui
J’essaie au maximum de répondre à son besoin de la manière la plus compréhensible pour lui et donc de rester dans sa démarche

Merci pour ta remarque

Re,
Oui, tu as peut-être raison

Voilà le classeur avec ses demandes
BDDMPT3V2.xlsm (115,8 Ko)

1 « J'aime »

Précision :

une liste déroulante avec 3 options : « raw material », « Code Produit » et « supplier »

Onglet « Menu » ?

Formulaire ?

Merci de me dire

Encore merci, la réponse de Mimimathy correspond très bien à ce que je recherche, je voyais plus une liste déroulante à côté de search avec les différentes catégories, mais l’option bouton me plaît bien !

Un grand merci à vous deux, je reviendrais vers vous si je constate un autre soucis mais normalement c’est bon, il n’y a que de la mise en forme à faire maintenant

Edit : Juste une dernière question, je souhaitais ajouter un bouton rechercher par code fournisseur, cependant dans le code j’ai un if colonne A et Else colonne B. Je ne peux pas mettre 2 Else, comment puis-je ajouter cette troisème option ?

Je reviens vers vous, j’ai également un soucis, outre l’ajout de la 3ème catégorie :

J’aimerais pouvoir visualiser toutes les informations de chaque colonne, si possible en hauteur.

Par exemple, pour la colonne Quality requirement on ne peut voir que le début des informations et non toutes les infos. Avez-vous une idée de comment faire pour afficher ces informations, si possible en colonne ? Ou sinon, est-il possible d’ajouter une possibilité de double clic sur la ligne qui, soit dirigerait vers la ligne du produit dans « Raw Material » afin de pouvoir visualiser les infos soit ouvrirait les informations du produit en grand afin de voir toutes les informations ?

Je ne sais pas si c’est très clair ou possible, mais c’est pour rendre exploitable les colonnes « Incoterms », « Collection », « Quality Requirement » et « Storage Location »

Merci à vous

BaseDeDonneesMP.xlsm (115,5 Ko)

Re,
Reprend le classeur de mon dernier post

Re,

« Collection » n’existe pas
et pour être plus clair, je n’ai rien compris à la demande.
Pour un stagiaire,… soit la personne a qui tu rend des comptes profite de toi, ou alors c’est toi qui … ? :face_with_raised_eyebrow:

Je me suis surement mal exprimé, je vous joins des photos en espérant que ce soit plus clair. Pour collection je voulais dire connection, j’ai écrit trop vite désolé.

Je suis stagiaire, l’objectif premier était de faire la base de données et ensuite d’améliorer la présentation, ce que j’essaye de faire, je veux juste que ce soit bien fait et vous m’avez déjà bien aidé.

Voici les photos, la situation initiale :


Où l’on ne peut pas voir complétement les informations ; cela vaut pour plusieurs colonnes

J’aimerais que cela soit affiché comme cela, si c’est possible bien sûr :

J’ai déjà modifié la taille des cellules en largeur, mais je ne sais pas le faire en hauteur.

Si ce n’est pas possible, j’aimerais pouvoir, en cliquant sur la ligne, être redirigé sur la ligne de la feuille de la base de données afin de pouvoir voir les informations complétement.

Désolé pour l’incompréhension, j’espère que c’est plus clair

C’est exactement ça, je vous remercie

Re,

A tester
BDDMPT3V2.xlsm (116,9 Ko)

1 « J'aime »

Bonjour, c’est ce qu’il me fallait, merci beaucoup !

Bonjour, je reviens vers vous pour chercher une dernière amélioration :

Mon tuteur aimerait pouvoir également effectuer la recherche dans la feuille Emballages.

Le problème c’est qu’après avoir longuement étudié le code que vous m’avez fourni et qui marche parfaitement, je ne vois pas comment inclure une seconde feuille pour la recherche.
J’ai pensé à faire 2 possibilités avec un If… Then ; où lorsque l’on clique sur le bouton Search un MsgBox demande à l’utilisateur s’il souhaite rechercher un emballages ou un produit et dans ce cas executer l’une ou l’autre partie du code.

Je ne sais pas si c’est possible et je ne vois pas comment l’incorporer, auriez vous une piste ? Je sais que vous m’avez déjà beaucoup aidé, mais après plusieurs heures de recherches, je cale…

BaseDeDonneesMPTests.xlsm (207,4 Ko)

Merci encore pour votre aide,
Bonne journée

Bonjour,

A tester
BaseDeDonneesMPTests V2.xlsm (211,8 Ko)

1 « J'aime »

Bonjour, c’est parfait un grand grand merci à vous c’est tout à fait ce que je voyais !

Re-bonjour, dernier petit soucis, après test ,lorsque je recherche un produit ou un emballage, les catégories ne s’affichent plus (Product Code, Product Name etc.)

Savez-vous d’où cela peut provenir ? Merci

Re,

As-tu modifié quelques chose de mon classeur fourni ?

Test comme ceci
BaseDeDonneesMPTests V2.xlsm (212,9 Ko)

1 « J'aime »