Vba macro excel recherche et userform
Chriscam8786
Messages postés
19
Date d'inscription
Statut
Membre
Dernière intervention
-
gbinforme Messages postés 14946 Date d'inscription Statut Contributeur Dernière intervention -
gbinforme Messages postés 14946 Date d'inscription Statut Contributeur Dernière intervention -
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
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:
- Excel vba recherche multicritère
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
17 réponses
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.
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