Retourner dans une ListBox en fonction recherches cumulatives [Résolu]

F60lebaladinverni 54 Messages postés samedi 28 janvier 2017Date d'inscription 11 janvier 2018 Dernière intervention - 9 janv. 2018 à 16:34 - Dernière réponse : F60lebaladinverni 54 Messages postés samedi 28 janvier 2017Date d'inscription 11 janvier 2018 Dernière intervention
- 11 janv. 2018 à 06:36
Bonjour à tous,

Je sèche la dessus ...
J'ai un tableau de ce style :

DOSSIER SIGNATAIRE CHEF DE MISSION CLOTURE etc ....

Je souhaite créer un UserForm avec plusieurs zones de recherche (je ne sais pas encore combien j'en aurai) :
TextBox_signataire
TextBox_chef_de_mission
TextBox_cloture
CheckBox_rapport_fait => dans ce cas, les lignes sont surlignées
CheckBox_rapport_envoyé => idem

et une ListBox qui affiche les résultats en fonction de ce que je recherche dans les TextBox

EXEMPLE : je veux afficher tous les dossiers pour lesquels le signataire est "XX", le chef de mission est "SS", la date de cloture est "AVRIL", et ainsi de suite
Comment faire ? ....

Merci à tous pour votre aide

Je n'ai pas encore de fichier Excel disponible, mais si besoin je peux en faire un vite fait
Afficher la suite 

7 réponses

Répondre au sujet
Passionofdream 760 Messages postés mardi 21 juillet 2015Date d'inscription 11 janvier 2018 Dernière intervention - 9 janv. 2018 à 18:44
0
Utile
Bonsoir,

Effectivement un petit fichier serait le bienvenu et l'envoyer sur cjoint.com et joindre le lien obtenu à ton prochain message. N'oublies pas d'y ajouter des explications et des exemples du résultat attendu

1) Tu vas dans http://cjoint.com/
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien
en bleu souligné ; tu le sélectionnes et tu fais "Copier"
5) Tu reviens dans ta discussion sur CCM, et dans ton message de réponse
tu fais "Coller"
Commenter la réponse de Passionofdream
F60lebaladinverni 54 Messages postés samedi 28 janvier 2017Date d'inscription 11 janvier 2018 Dernière intervention - Modifié par F60lebaladinverni le 9/01/2018 à 22:23
0
Utile
5
Bonsoir Passionofdream,

Merci pour ta réponse

Ci-joint un fichier pour illustrer mon cas :
https://www.cjoint.com/c/HAjvnYHK6tG

Je peux combiner les recherches avec les combobox, par contre en rajoutant la checkbox j'ai une erreur

Le critère checkbox correspond à : "sélectionner les lignes surlignées en jaune"

L'erreur provient du sub : unserform_initialize
ligne : "call initcheck(RechercheC3, "B")" => En réalité je ne sais pas quoi écrire ...
Sans cette ligne, le code fonctionne correctement, mais uniquement avec les 2 premiers critères

Merci
Passionofdream 760 Messages postés mardi 21 juillet 2015Date d'inscription 11 janvier 2018 Dernière intervention - 10 janv. 2018 à 11:29
Si j'ai bien compris tu veux quand tu coches checkbox que les résultats des sélections 1 et 2 apparaissent surlignés en jaune sur la feuille de données.
F60lebaladinverni 54 Messages postés samedi 28 janvier 2017Date d'inscription 11 janvier 2018 Dernière intervention - 10 janv. 2018 à 12:11
Pas tout à fait..
Je veux, en cochant la checkbox avoir en retour dans ma listbox les lignes du tableau qui sont surlignees en jaune
F60lebaladinverni 54 Messages postés samedi 28 janvier 2017Date d'inscription 11 janvier 2018 Dernière intervention - 10 janv. 2018 à 20:02
J'AI TROUVE !!!!! :) :) :)
Il suffisait d'enlever "Call" devant l'initialisation de ma checkbox et de dire que c'est égal à ma colonne A par exemple.
Voici le code complet :

Private Sub ListBoxLocataire_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
ligSelect = ListBoxLocataire.Column(7, ListBoxLocataire.ListIndex)

usfAffichage.Show
End Sub

Private Sub RechercheC2_Change()
' Rechercher les données en fonction des critères sélectionnés
Call Rechercher
End Sub


Private Sub UserForm_Initialize()
Range("A2").Select

' Initialiser les listes des critères
Call InitCombo(RechercheC1, "A")
Call InitCombo(RechercheC2, "B")
RechercheC3.Value = Range("A:A").Value

' Rechercher les données en fonction des critères sélectionnés
Call Rechercher
End Sub

Private Sub RechercheC1_Change()
' Rechercher les données en fonction des critères sélectionnés
Call Rechercher
End Sub

Private Sub RechercheC3_Change()
' Rechercher les données en fonction des critères sélectionnés
Call Rechercher
End Sub


Private Sub Rechercher()
' Rechercher les données en fonction des critères 1 et 2
Dim rCel As Range
Dim lgLig As Long
Dim lgLigDeb As Long

Dim Critere1 As String
Dim Critere2 As String
Dim Critere3 As String

Critere1 = "*"
If RechercheC1.Value <> "" Then Critere1 = RechercheC1.Value
Critere2 = "*"
If RechercheC2.Value <> "" Then Critere2 = RechercheC2.Value
Critere3 = "*"
If RechercheC3 = True Then Critere3 = 65535

ListBoxLocataire.Clear

' Boucle de la 2me à la dernière ligne de la feuille Feuil1
For lgLigDeb = 2 To Range("A" & Cells.Rows.Count).End(xlUp).Row
If Range("A" & lgLigDeb).Value Like Critere1 And Range("B" & lgLigDeb).Value Like Critere2 And Range("A" & lgLigDeb).Font.Color Like Critere3 Then
With ListBoxLocataire
.AddItem Range("A" & lgLigDeb).Value
.List(.ListCount - 1, 1) = Range("B" & lgLigDeb).Value
.List(.ListCount - 1, 2) = Range("C" & lgLigDeb).Value
.List(.ListCount - 1, 3) = Range("D" & lgLigDeb).Value
.List(.ListCount - 1, 4) = Range("E" & lgLigDeb).Value
.List(.ListCount - 1, 5) = Range("F" & lgLigDeb).Value
.List(.ListCount - 1, 6) = Range("G" & lgLigDeb).Value
.List(.ListCount - 1, 7) = lgLigDeb

lgLig = lgLig + 1
End With
End If
Next lgLigDeb
End Sub

Private Sub InitCombo(LCombo As Object, nomCol As String)
Dim lig As Long
Dim nbElement As Integer
Dim trouveElm As Boolean

LCombo.Clear

' Boucle de la ligne 2 à la dernière ligne dans la colonne nomCol
For lig = 2 To Range(nomCol & Cells.Rows.Count).End(xlUp).Row
trouveElm = False

' Vérifier que l'élément à ajouter dans la liste n'existe pas déjà
For nbElement = 0 To LCombo.ListCount - 1
' L'élément est déjà présent dans la liste, sortie de la boucle
If LCombo.List(nbElement) = Range(nomCol & lig).Value Then
trouveElm = True
Exit For
End If
Next nbElement

' Elément non trouvé dans la liste, l'ajouter
If trouveElm = False Then LCombo.AddItem Range(nomCol & lig).Value
Next lig
End Sub
Passionofdream 760 Messages postés mardi 21 juillet 2015Date d'inscription 11 janvier 2018 Dernière intervention - 11 janv. 2018 à 01:31
Donc résolu tout seul.
Bravo

Mettre en résolu svp
Cordialement
F60lebaladinverni 54 Messages postés samedi 28 janvier 2017Date d'inscription 11 janvier 2018 Dernière intervention - 11 janv. 2018 à 06:36
Oui, merci :)
Je fais ça
Commenter la réponse de F60lebaladinverni