help: recherche de valeurs, plusieurs demandes Merci d'avance je suis perdue.

sylvhydre

XLDnaute Nouveau
Bonjour à tous et merci de consacrer votre temps à lire ma bafouille,
j'ai pu voir sur différents sites des réponses à mes questions mais je n'arrive jamais à les adapter.. pff

Le but est de faciliter l'usage à l'utilisateur de la base pour qu'il trouve rapidement les informations qu'il cherche.
J'ai créée une feuille menu, et une feuille base.
1.Menu
2.Base

A. Sur mon menu j'aimerai que l'utilisateur puisse taper une suite de 8 à 14 caractère dans une case, et qu'en cliquant sur un joli bouton on lui affiche toutes les lignes de ma base comportant cette suite, en sachant qu'il peut y avoir des doublons et que j'aimerai qu'ils s'affichent.

B.Dans une autre case j'aimerai que ce soit un menu déroulant ou une saisie semi automatique pour recherche cette fois ci le nom d'un titulaire contenue dans une unique colonne et en cliquant HOP ça afficher les lignes correspondantes dans ma base.

C.en cliquant sur une liste déroulante composé de 5 valeur la personne n'est d'affiché sur la base que ce qui concerne la valeur sélectionnée.

D.en cliquant sur un bouton la personne n'est d'afficher que ce qui concerne le "groupe de marchandise associé" qui est repéré dans ma base par différents codes.
c'est une recherche multicritères, exemple je veux les lignes concernant les fournitures de bureau et les mobilier de bureau s'affichent en même temps.
mais les groupes de marchandises sont aux nombre de 5 ou 6 codes différents.

Voilà si vous faites une indigestion je comprendrais.
Merci par avance pour ceux qui contribueraient à ma requête.
syl
 

Modeste

XLDnaute Barbatruc
Re : help: recherche de valeurs, plusieurs demandes Merci d'avance je suis perdue.

re-bonjour,

retour, dès lors, au milieu de mon message #12
c'est-à-dire ??? en colorant les cellules concernées, en masquant les autres lignes ?
Si on "reste" dans la feuille Base, toutes les lignes sont affichées ... tu veux masquer les autres lignes, comme dans le cas d'un filtre automatique ?? Mais si c'est ça quand et comment décides-tu de ré-afficher les lignes masquées ?

J'avoue avoir un peu de mal à te comprendre ... Mais peut-être y a-t-il quelqu'un d'autre qui y voit plus clair !?
 

sylvhydre

XLDnaute Nouveau
Re : help: recherche de valeurs, plusieurs demandes Merci d'avance je suis perdue.

bonjourrrrr ;-)
le résultat resterait afficher sur la base en masquant les autres lignes.

il pourrait par exemple y avoir un bouton de retour au menu qui réinitialiserait la base affichant de nouveau la totalité des données sur la base.
OU bien un contrôle qui à chaque activation du menu réinitialiserait la base.

En même temps si tu trouves un moyen pour avoir sur la feuille dîte "résultat" la ligne d'entête je pense que ça résoudrait pas mal de choses.

Sinon pour ton info j'ai réussi comme une grande fille à adapter ta macro à d'autres données ;-)
Marssi par avance.
syl
 

Modeste

XLDnaute Barbatruc
Re : help: recherche de valeurs, plusieurs demandes Merci d'avance je suis perdue.

Bonjour syl :)

En même temps si tu trouves un moyen pour avoir sur la feuille dîte "résultat" la ligne d'entête je pense que ça résoudrait pas mal de choses.
Je pense que ce serait moins "risqué" et ce n'est vraiment pas compliqué: j'ai copié-collé les titres de Base vers Résultats ... et modifié la macro pour qu'elle n'efface pas la 1ère ligne.
J'en ai profité pour corriger un oubli de ma part: éviter que la procédure evenementielle "ComboBox1_Change()" ne s'exécute quand on efface le dernier nom sélectionné.
Sinon pour ton info j'ai réussi comme une grande fille à adapter ta macro à d'autres données
Bravo! ... Après, il ne te restera plus qu'à consulter les messages des vrais maîtres ès-vba, pour apprendre à programmer comme une "pro" :rolleyes:

Ci-dessous le code (à peine) modifié:
VB:
Private Sub Worksheet_Activate() 'à chaque activation de cette feuille
Set titulaires = CreateObject("scripting.dictionary") 'créer une liste des titulaires
For Each c In Sheets("base").Range("O2:O" & Sheets("base").Range("O65000").End(xlUp).Row)
    If Not titulaires.exists(c.Value) Then titulaires.Item(c.Value) = c.Value
Next c
ComboBox1.List = Application.Transpose(titulaires.items) 'afficher les titulaires dans la combobox
ComboBox1.ListIndex = -1
End Sub
 
Private Sub ComboBox1_Change()
If ComboBox1.Text = "" Then Exit Sub '*** ajouté pour éviter un événement quand ComboBox1.ListIndex = -1
Sheets("Résultat").Range("A2:Z100").Clear 'N'effacer qu'à partir de la ligne 2
For Each c In Sheets("base").Range("O2:O" & Sheets("base").Range("O65000").End(xlUp).Row)
    If c = ComboBox1.Text Then c.EntireRow.Copy _
        Sheets("Résultat").Range("A" & Sheets("Résultat").Range("A65000").End(xlUp).Row + 1)
Next c
Sheets("Résultat").Activate
End Sub
 

Discussions similaires

Réponses
8
Affichages
333

Statistiques des forums

Discussions
312 352
Messages
2 087 538
Membres
103 582
dernier inscrit
didinex