Formulaire de recherche 2
Bonjour le Forum,
J'ai récupéré un code sur le Net pour faire un formulaire de recherche sur 2 critères et j'aimerai l'adapter pour 3 critères. Ce code permet la recherche dans la Feuil1, ma recherche doit s'effectuer dans ma Feuil3 et il n'y a pas d'indication de type "Sheet" pour m'aider à bidouiller le code.
Après plusieurs modifications, je suis toujours dans l'impasse. Lors de l'exécution, le message : "Erreur d'exécution "1004", la méthode Select de la classe Range à échoué.
Voici le code d'origine :
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")
' 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 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
Critere1 = "*"
If RechercheC1.Value <> "" Then Critere1 = RechercheC1.Value
Critere2 = "*"
If RechercheC2.Value <> "" Then Critere2 = RechercheC2.Value
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 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
Avec le fichier d'origine, avec un double clic sur une ligne lance un formulaire reprenant les données dans des TextBox, (le mien est nommé UserForm4) et je souhaiterai conserver cette possibilité pour ajouter des données dans les cellules des colonnes "I et J" de la ligne concernée.
Merci de votre aide.
Licaon
PS: je dois présenter ce projet pour le 04/04/11, je n'ai plus beaucoup de temps car je travaille ce WE.
Bonjour
Un essai
Pour la recherche tu ne peux pas effacer la date donc pour le moment la date n'est pas prise en compte
A voir ce que tu veux
Edit : Mauvais fichier
Bonsoir et merci Banzaï64,
C'est exactement ce qu'il me fallait.
Concernant la prise en compte de la date, est-ce en attente ou cela risque d'apporter des désordres sur le fichier ?
Une autre petite question, est-ce que je peux COUPER/COLLER les données de la Feuil1 "Formulaire" pour les ranger dans la Feuil4 "Données"sans avoir d'incidence ? Cette feuille sera masquée par la suite.
A te lire,
Licaon
Bonsoir
Pour la date : Avoir un checkbox qui indique si on tient compte de la date
Peut-être d'autre méthode mais actuellement en panne
Alors pour copier dans la pages "données" il faut les copier après les (surtout pas en dessous des) colonnes qui servent à alimenter les ListBox et ComboBox
Bonne nuit
Apperçu d'un bug sur le fichier : Variable non initialisée
Bonsoir Banzaï, bonsoir le Forum.
Ça fonctionne super, je vais pouvoir présenter ce projet lundi.
Pour la recherche par date, à force de test, je pense que si cela est un plus dans la recherche, il est possible de pouvoir s'en passer. Je reviendrais avec un autre post si nécessaire.
Encore merci de toute l'aide apportée pour finaliser ce projet.
A te lire lors d'un autre souci.
Licaon