Vba macro excel recherche et userform

Fermé
Chriscam8786 Messages postés 19 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 18 mars 2008 - 25 févr. 2008 à 16:47
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 1 juil. 2009 à 21:38
Bonjour,

Je poursuis mon travail sur un système de suivi assez audacieux (pour ce qui me concerne) et voici un point qui me bloque :

Je cherche à permettre à l'utilisateur d'établir une recherche à un ou plusieurs critères combinés depuis un userform et à en restituer le résultat dans un formulaire (ou un autre userform).

Essayons d'illustrer mes propos...

=> supposons ces 4 critères dans le userform de recherche : Nom - Prénom - Age - Profession
=> l'utilisateur recherche les "Dupont" ayant "35ans" (critères combinés)
=> une fois le bouton "Rechercher" activé, la macro procède à cette recherche dans la feuille contenant les données et
=> ouvre un formulaire (ou un userform peu importe finalement) avec le résultat, c'est à dire la ligne complète des informations correspondantes à la recherche mise en forme dans ce formulaire.

En outre, j'aime semble-t-il me compliquer la vie, il doit être possible d'avoir une échapatoire en cas de réponses multiples (plusieurs Dupont agés de 35 ans...) ; dans ce cas, un formulaire multiple peut-il s'envisager?

Enfin, désolé je suis pénible, peut-on imaginer un système permettant une recherche assistée (par exemple, en recherchant les "Dupont" dont on ignore si la dernière lettre est un "D" ou un "T" on pourrait rechercher les "Dupon%")

Je vous remercie d'ores et déjà de toute votre aide et des pistes qui pourraient m'aider à réaliser ce projet fou.

Chris
A voir également:

17 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 712
14 mars 2008 à 09:55
bonjour

Tu as effectivement une syntaxe incorrecte.
Si j'ai compris ta modification, je te propose ceci avec décalage des instructions pour bien voir le début et la fin des boucles, des if et autres.
Option Explicit

Public Sub chercher(rech, c) 'recherche d'une chaine
Dim sel As Object
Dim valide As Boolean
Dim i As Integer
Dim l As Long
Dim n As Integer
l = 2: n = 0
SuiviActivite.ListBox1.Clear
With Sheets("BaseDeDonnées")
If rech = "" Then Exit Sub
Do
    Set sel = .Cells.Find(What:=rech, after:=.Cells(l, c), _
        LookIn:=xlValues, LookAt:=xlPart, _
        SearchOrder:=xlByColumns, _
        SearchDirection:=xlNext, MatchCase:=False)
    If sel Is Nothing Then Exit Do
    If sel.Column <> c Then Exit Do
    If sel.Row <= l Then Exit Do
    l = sel.Row
    valide = True
    For Each ctrl In SuiviActivite.Controls
        If TypeOf ctrl Is MSForms.TextBox _
            Or TypeOf ctrl Is MSForms.ComboBox Then
            If ctrl.Value <> "" _
            And InStr(1, LCase(.Cells(l, i).Value), LCase(ctrl.Value)) = 0 Then valide = False
        End If
    Next ctrl
    If valide Then
        SuiviActivite.ListBox1.AddItem _
            (.Cells(l, 1).Value & " " & _
            .Cells(l, 2).Value & " " & _
            .Cells(l, 3).Value & " " & _
            .Cells(l, 4).Value & " " & _
            .Cells(l, 5).Value & " " & _
            .Cells(l, 6).Value & " " & _
            .Cells(l, 7).Value & " " & _
            .Cells(l, 8).Value & " " & _
            .Cells(l, 9).Value & " " & _
            .Cells(l, 10).Value & " " & _
            .Cells(l, 11).Value & " " & _
            .Cells(l, 12).Value & " " & _
            .Cells(l, 13).Value & " " & _
            .Cells(l, 14).Value & " " & _
            .Cells(l, 15).Value & " " & _
            .Cells(l, 16).Value)
        SuiviActivite.ListBox1.List(n, 2) = sel.Row
        n = n + 1
    End If
Loop
End With
End Sub

1