Fonction recherche avec code VBA

Fermé
mckoy1 Messages postés 14 Date d'inscription mercredi 24 septembre 2014 Statut Membre Dernière intervention 19 octobre 2014 - 24 sept. 2014 à 14:56
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 - 26 sept. 2014 à 07:59
Bonjour,


je suis membre d'une association de près de 500 membres; j'ai conçu un fichier excel qui contient des informations précises de chaque membre, une base de données en quelque sorte. je souhaiterais concevoir une interface pour faciliter la recherche de membres. les données sont dans la feuil2, alors j'ai créé un bouton de commande dans la feuil1 pour que lorsqu'on clique dessus un userform s'affiche, contenant des textbox pour la recherche et une zone pour afficher le résultat.
j'ai avancé jusqu'à ce niveau. le souci est que je ne sais plus comment éditer le code de recherche pour que tout fonctionne. pour illustrer j'ai fais un petit fichier en guise d'exemple (voir images)
merci de m'aider
A voir également:

11 réponses

cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
24 sept. 2014 à 16:47
Bonjour,

Mettre ceci:

Option Explicit
Private Sub CommandButton1_Click()
WorkbookFind
End Sub
Sub WorkbookFind()
Dim myValue, What, Response As String
Dim found, FirstAddress
myValue = InputBox("Entrez le nom à rechercher", "Recherche", "Monnom")
What = myValue
  If What = "" Then Exit Sub
  Feuil2.Activate
    Set found = Feuil2.Cells.Find(What)
    If Not found Is Nothing Then
      FirstAddress = found.Address
      Do
        found.Activate
       UserForm1.TextBox1.Text = ActiveCell.Value
       Response = MsgBox("Continuer ?", vbYesNo + vbQuestion)
        If Response = vbNo Then Exit Sub
        Set found = Cells.FindNext(After:=ActiveCell)
        If found.Address = FirstAddress Then Exit Do
      Loop
    End If
 MsgBox "Recherche terminée !"
End Sub


A adapter!
0
mckoy1 Messages postés 14 Date d'inscription mercredi 24 septembre 2014 Statut Membre Dernière intervention 19 octobre 2014
24 sept. 2014 à 20:17
Merci, je vais essayé et te faire signe
0
mckoy1 Messages postés 14 Date d'inscription mercredi 24 septembre 2014 Statut Membre Dernière intervention 19 octobre 2014
24 sept. 2014 à 20:33
Merci pour le code. Je l'ai testé ça marche super bien. mais le souci est que la recherche me ramène sur la feuille2, alors que je voudrais l'afficher dans un formulaire sans quitter la feuil1. Voici ce que donne l'Userform. Merci.
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
24 sept. 2014 à 20:52
Pour revenir sur la feuille1:

Sheets("Feuil1").Select

Pour travailler sur la feuille avec l'UserForm

Allez dans les propriétés de l'UserForm

Mettre la propriété ShowModal à False
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mckoy1 Messages postés 14 Date d'inscription mercredi 24 septembre 2014 Statut Membre Dernière intervention 19 octobre 2014
24 sept. 2014 à 21:05
Je mets Sheets("Feuil1").Select dans quelle partie du code. je risque de tout mélanger. S'il te plait reédite le code complet pour moi. Merci d'avance
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
24 sept. 2014 à 21:41
Tu peux le mettre là:

Private Sub CommandButton1_Click()
WorkbookFind
Sheets("Feuil1").Select 
End Sub


Ou là:

Sub WorkbookFind()
Dim myValue, What, Response As String
Dim found, FirstAddress
myValue = InputBox("Entrez le nom à rechercher", "Recherche", "Monnom")
What = myValue
  If What = "" Then Exit Sub
  Feuil2.Activate
    Set found = Feuil2.Cells.Find(What)
    If Not found Is Nothing Then
      FirstAddress = found.Address
      Do
        found.Activate
       UserForm1.TextBox1.Text = ActiveCell.Value
       Response = MsgBox("Continuer ?", vbYesNo + vbQuestion)
        If Response = vbNo Then Exit Sub
        Set found = Cells.FindNext(After:=ActiveCell)
        If found.Address = FirstAddress Then Exit Do
      Loop
    End If
 MsgBox "Recherche terminée !"
Sheets("Feuil1").Select 
End Sub


Tu peux aussi supprimer les messages si tu veux.
0
mckoy1 Messages postés 14 Date d'inscription mercredi 24 septembre 2014 Statut Membre Dernière intervention 19 octobre 2014
24 sept. 2014 à 22:00
ok merci
0
mckoy1 Messages postés 14 Date d'inscription mercredi 24 septembre 2014 Statut Membre Dernière intervention 19 octobre 2014
Modifié par mckoy1 le 25/09/2014 à 14:28
Bonjour,
Je crois que je n'ai pas été assez explicite
J'ai pensé à concevoir un fichier excel qui se présente comme suis:

-L'interface à la feuil1
-Les données des membres à la feuil2
-Les cotisations à la feuil3

Voilà mon souhait:
_Créer sur l'interface à la feuil1 un bouton de commande qui ouvre un userform de recherche des membres de la feuil2 (ok à ce stade)

_Dans le formulaire des options de recherche par nom et par numéro de membre avec bouton VALIDER (ok)
_Le résultat de la recherche doit s'afficher directement dans l'userform (blocage)
_Je précise que la recherche ne doit pas ouvrir la feuil2, mais tirer les infos du membre recherché et les afficher dans l'userform sans quitter l'interface.

C'est à ce stade que je suis bloqué car je m'y connais pas en code VBA; je ne sais pas quel code éditer pour que tout fonctionne. Merci pour votre aide.
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
25 sept. 2014 à 15:02
Mettre un UserForm avec un TextBox pour saisir le nom recherché et un Label pour l'afficher.

Voici le code:

Private Sub CommandButton1_Click()
WorkbookFind
Sheets("Feuil1").Select
End Sub
Sub WorkbookFind()
Dim What, Response As String
Dim found, FirstAddress
What = UserForm1.TextBox1.Text
  If What = "" Then Exit Sub
  Feuil2.Activate
    Set found = Feuil2.Cells.Find(What)
    If Not found Is Nothing Then
      FirstAddress = found.Address
      Do
        found.Activate
       UserForm1.Label1.Caption = ActiveCell.Value
      ' Response = MsgBox("Continuer ?", vbYesNo + vbQuestion)
       ' If Response = vbNo Then Exit Sub
        Set found = Cells.FindNext(After:=ActiveCell)
        If found.Address = FirstAddress Then Exit Do
      Loop
    End If
 'MsgBox "Recherche terminée !"
End Sub


IMPORTANT

Pour travailler sur la feuille avec l'UserForm

Allez dans les propriétés de l'UserForm

Mettre la propriété ShowModal à False
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
25 sept. 2014 à 15:07
Voici un exemple:

http://cjoint.com/data3/3IzpjOEIRkm.htm
0
mckoy1 Messages postés 14 Date d'inscription mercredi 24 septembre 2014 Statut Membre Dernière intervention 19 octobre 2014
25 sept. 2014 à 20:57
L'exemple marche bien, mais je ne sais pas comment l'adapter à mon fichier. Je voudrais t'envoyer le fichier pour que tu puisse y jeter un coup d'oeil, mais je sais pas comment joindre les fichiers.
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
26 sept. 2014 à 07:59
Comme je l'ai fait ici:

https://www.cjoint.com/

Ensuite poster le lien

Mettre une copie du classeur en ayant supprimé les données confidentielles. Les remplacer par des données anonymes pour la compréhension.
0