Mise en place d'un formulaire de recherche

Bonjour à toutes et à tous,

Je vous explique mon problème, je traite actuellement une base de donnée. Cette dernière est sous la forme d'un tableau avec filtre allant de la colonne A à la colonne AD.

J’ai par exemple dans la colonne A et B qui sont fusionnées le nom en français de mon item et dans la colonne C son nom en anglais.

Dans la colonne D j'ai son ID, etc.

J’ai fait une nouvelle feuille avec un bouton pour ouvrir mon Userform et un autre pour clear mes résultats précédents.

J'ai fait un userform, dans le but de faire une recherche soit par nom (français ou anglais), soit par ID (référencé en listbox dans l'userform) soit par département (qui est ma colonne AC).

J’aimerais que la macro recherche dans toute ma base de donnée une valeur que j'aurais rentré par exemple le nom français et qu'il me copie tous les résultats qu’il aura trouvé par rapport à ma saisie dans une autre feuille. Mais seulement quelque cellule de la ligne complète. (Je cherche à avoir les cellules des colonnes A, C, D, G, P et AC).

J'espère avoir été assez clair dans ma demande, je reste bien évidement disponible pour toutes questions !

Pouvez-vous m'aider car je suis au pied du mur...

Merci d’avance !

Bonjour Clem, bonjour le forum,

En pièce jointe ton fichier modifié. VBA et les cellules fusionnées n'étant pas les meilleurs amis du monde, j'ai commencé par défusionner les colonnes A et B dans les deux onglets, puis par supprimer la colonne B (devenue inutile).

Le recherche se fait via une seule TextBox. Soit tu cliques dans la ListBox1 pour récupérer la ligne cliquée dans l'onglet Recherche Item, soit tu cliques dans le bouton Valider pour récupérer l'intégralité de la Listbox1...

52clem-v01.xlsm (58.15 Ko)

Bonjour à tous

Une autre approche.

Bye !

Bonjour à vous deux,

Je tiens à vous remercier tous les deux pour votre réponse, qui a été rapide et enrichissante pour moi, j'ai pu comprendre votre programmation. Merci beaucoup !

Si je rencontre un souci lors de l'intégration dans ma vraie base de données je vous ferais signe.

Merci beaucoup

Cordialement,

Clem

Bonjour,

Si les réponses apportées ont résolues ton problème n'oublie pas de clore le sujet en cliquant sur le bouton correspondant

Atro a écrit :

Bonjour,

Si les réponses apportées ont résolues ton problème n'oublie pas de clore le sujet en cliquant sur le bouton correspondant

Oups pardon, j'avais complètement oublié de mettre le statut résolu.

Merci

ThauThème a écrit :

Bonjour Clem, bonjour le forum,

En pièce jointe ton fichier modifié. VBA et les cellules fusionnées n'étant pas les meilleurs amis du monde, j'ai commencé par défusionner les colonnes A et B dans les deux onglets, puis par supprimer la colonne B (devenue inutile).

Le recherche se fait via une seule TextBox. Soit tu cliques dans la ListBox1 pour récupérer la ligne cliquée dans l'onglet Recherche Item, soit tu cliques dans le bouton Valider pour récupérer l'intégralité de la Listbox1...

Bonjour Thauthème,

Lors de l'exécution de ma recherche après l'importation du code dans ma vraie base de donnée j'ai une erreur

"Erreur d'éxecution '5': Argument ou appel de procédure incorrect" à cette ligne :

RI.Range("A2").Resize(UBound(TL, 2), UBound(TL, 1)).Value = Application.Transpose(TL)

D’où vient le problème à votre avis ?

Bonjour le fil, bonjour le forum,

Le code que je t'ai propose ne fonctionne qu'après "défusionnage" des colonnes A et B et suppression de la colonne B (comme expliqué !)... As-tu fais cela ?

ThauThème a écrit :

Bonjour le fil, bonjour le forum,

Le code que je t'ai propose ne fonctionne qu'après "défusionnage" des colonnes A et B et suppression de la colonne B (comme expliqué !)... As-tu fais cela ?

Oui j'ai fait cela, j'ai commencé par défusionner la colonne A de la colonne B puis j'ai supprimé la colonne B qui était vide. La colonne B est maintenant la colonne "English" comme sur le fichier que vous m'avez passé.

Re,

Dans les deux premiers onglets ?

ThauThème a écrit :

Re,

Dans les deux premiers onglets ?

Affirmatif Monsieur !

EDIT

j'ai apparemment solutionné l'erreur (enfin je ne pense pas), j'ai ajouté sans faire exprès du à une faute de frappe un caractère dans la ligne que j'ai enlevé du coup

Private Sub UserForm_Initialize() 'à l'intialisation de l'UserForm2

Maintenant j'ai une autre erreur ^^

Erreur d'éxecution ' 13' : Incompatibilité de type :

If K > 1 Then 'condition : si K est supérieur à un (au moins une occurrence trouvée)
    If K = 2 Then ReDim Preserve TL(1 To 6, 1 To 2) 'si K=2 (une seule occurrence trouvée), redimensionne TL pour permettre l'affichage en ligne
    Me.ListBox1.List = Application.Transpose(TL) 'alimente la Listbox1 avec le tableau L transposé

l'erreur est à cette ligne ci :

Me.ListBox1.List = Application.Transpose(TL) 'alimente la Listbox1 avec le tableau L transposé 

Cette erreur intervient au moment ou j'écris dans la textbox de recherche

Re,

Le code fonctionne dans le fichier exemple que tu as fourni. Renvoie le bon fichier que je puisse comprendre...

Re,

Le fichier ou j'ai importé le code contient des données sensibles je ne pourrais donc pas vous le passer, je vais vous donner le code contenu dans l'userform.

j'ai juste changé le nom de l'onglet dans la ligne :

Set RI = Sheets("Research") 'définit l'onglet RI

Car mon onglet s'appelle "Research" voilà c'est tout ce que j'ai fais

J'ai déja un premier userform est-ce que le problème viendrait-il de là ?

Re,

J'ai pris le fichier Clem_v01.xlsm. J'ai renommé l'onglet Recherche item en Research. J'ai remplacé la ligne de code :

Set RI = Sheets("Recherche item") 'définit l'onglet RI

par :

Set RI = Sheets("Research") 'définit l'onglet RI

et tout fonctionne !...

Anonymiser des données sur Excel prend moins d'une minute. Je n'ai pas besoins des données mais de la structure !... Mais si tu ne veux pas faire d'effort je ne peux plus rien pour toi...

Re,

La structure est exactement la même que celui du fichier Clem_v01.xlsm . La ligne 1 est la même (Français, English, item ID, ...), c'est le contenu des cellules (à partir de A2) qui est différent car elles contiennent des données confidentielles. Le fichier Clem_v01.xlsm est une version anonyme de ma base de données justement.

Dans mon fichier ou j'ai importé le code, j'ai déjà un Userform (appelé UserForm1) qui a déjà une application bien définit et dans le code contenu dans UserForm1 il y a un userform_initialize() comme dans votre code.

Est-ce que il y aurait un problème de conflit entre les deux UserForm, c'est à dire UserForm1 et UserForm2 (là ou se situe votre code) ?

J’ai 2 module indépendant aussi, le 1er est en rapport à l'UserForm1 et le 2ème est en rapport à l'UserForm2.

Sachant que quand j'ai créé le deuxième UserForm je n'ai pas fait de copier collé du 1er pour éviter tout conflit.

Re,

Non il n'y a pas de liaison entre les deux. Chaque UserForm a son propre module et l'initialisation de l'un ne peut en aucun agir sur l'initialisation de l'autre sauf si le code le spécifie.

Pourquoi t'acharner à ne pas anonymiser ton fichier avec les deux UserForms et le renvoyer ?...

Alors la je sèche...

Comment je peux l'anonymiser s'il vous plaît ?

Re,

Tu sélectionnes les données sensibles, tu tapes "blabla" et tu valides par [Ctrl]+[Entrée], tu enregistres sous pour garder l'original et tu envoies la copie !... On n'a pas non plus besoin de toutes les lignes. Un poignée suffit...

Avant que je vous passe mon fichier,

j'ai remarqué qu'il n'y avait que la touche j et w qui fonctionnent dans la case rechercher est-ce normal ?

Je n'ai pas toucher au code pourtant, serait-ce du au contenu des mes cellules ?

EDIT : Est-ce qu'il y a une limite de caractère a afficher par ligne dans la listbox lors de l'affichage ? Car dans la colonne avis je peux avoir un certains nombre de mots assez importants (par exemple 50 mots)

Re,

La Listbox n'affichera que les lignes dont certaines colonnes (ne souviens plus lesquelles) contiennent le texte édité dans la TextBox1. Ça sert à quoi que je commente tous les codes ?

Pfff ! Qu'est-ce qu'on perd comme temps !... Si tu ne fais pas d'effort, je laisse tomber.

Rechercher des sujets similaires à "mise place formulaire recherche"