Vb recherche par box avec 2 conditions

Résolu
julsof Messages postés 13 Statut Membre -  
julsof Messages postés 13 Statut Membre -
Bonjour,

je suis débutant en vb (vraiment) et j'essaie de trouver une solution pour faire une recherche sur une feuille excel, en inscrivant 2 conditions.
Je m'explique :
j'ai créer une macro qui ouvre une box me demandant un critère de recherche, ensuite je fais apparaitre la réponse dans plusieurs cellules. Pas de problème avec ça.
Par contre j'aimerai avoir une macro qui ouvre une première box me demandant le premier critere de recherche (par ex : le prenom) puis une deuxième box enchainée qui me demanderai un deuxième critère de recherche (par ex : le nom).
En fait je voudrais solutionné ce problème :
si 2 personnes de ma base ont le même nom, lorsque j'effectue ma macro de recherche, la réponse renvoyée est la première personne de la liste avec le nom recherché, alors j'amerais pouvoir faire une recherche plus approfondie, ou alors que je puisse choisir parmi les résultas de même nom.

J'espère me faire comprendre, sinon dites le moi.
voici un bout de mon (pauvre code).

Sub recherche_client()

Dim recherche_client As String

recherche_client = InputBox("Entrez une information client: ", "recherche client")
Sheets("Clients").Select
Cells.Find(What:=recherche_client, After:=ActiveCell, LookIn:=x1Values, LookAt:= _
x1Part, SearchOrder:=x1ByRows, SearchDirection:=x1Next, MatchCase:=False _
, SearchFormat:=False).Activate
End Sub
Configuration: Windows XP
Internet Explorer 7.0
excel 2003

3 réponses

  1. Ivan-hoe Messages postés 433 Date d'inscription   Statut Membre Dernière intervention   310
     
    Bonjour julsof,
    le plus simple serait sans doute de créer un formulaire avec 2 listes déroulantes, la seconde se mettant à jour en fonction de la première.
    Mais puisque tu as commencé avec une InputBox et une méthode Find, continuons dans ce sens.
    Repartant de ton code, j'ai simplement ajouté quelques sécurités (dans le cas où on annule l'InputBox ou si la recherche ne donne rien) ; puis, si la recherche du nom renvoie plusieurs lignes, une deuxième boîte demande de préciser le prénom, en rappelant dans l'intitulé la liste des prénoms trouvés.

    Attention : le code ci-dessous marche si tes noms sont en colonne A et les prénoms en colonne B. Sinon, il faut apporter des petites modifications à la macro. De plus, ce n'est pas très adapté si tu as des dizaines de noms identiques.

    Sub recherche_client()
        Dim recherche_client As String
        Dim Cellule As Range, ListeCellules As Range
        Dim ListeNoms As String, Adresse1 As String
    
        Sheets("Clients").Select
    
    SAISIE_NOM:
        recherche_client = InputBox("Entrez le nom du client: ", "recherche client")
        If recherche_client = Empty Then Exit Sub
        
        Set Cellule = Columns("A").Find _
                      (What:=recherche_client, LookIn:=xlValues, LookAt:=xlPart)
        
        If Cellule Is Nothing Then
            MsgBox "Aucune réponse pour " & recherche_client
            GoTo SAISIE_NOM
        End If
    
        Adresse1 = Cellule.Address
        Set ListeCellules = Cellule.Offset(0, 1)
        
        Do
            ListeNoms = ListeNoms & Chr(10) & _
                        Cellule.Value & ", " & Cellule.Offset(0, 1).Value
            Set Cellule = Columns("A").FindNext(Cellule)
            Set ListeCellules = Union(ListeCellules, Cellule.Offset(0, 1))
        Loop Until Cellule Is Nothing Or Cellule.Address = Adresse1
       
    SAISIE_PRENOM:
        If ListeCellules.Count > 1 Then
            recherche_client = InputBox("Précisez le prénom : " & Chr(10) & ListeNoms)
            If recherche_client = Empty Then Exit Sub
            Set Cellule = ListeCellules.Find _
                        (What:=recherche_client, LookIn:=xlValues, LookAt:=xlPart)
    
            If Cellule Is Nothing Then
                MsgBox "Aucune réponse pour " & recherche_client
                GoTo SAISIE_PRENOM
            End If
        End If
        
        Cellule.EntireRow.Select
        
    End Sub

    N'hésite pas à consulter l'aide VBA ; c'est là que j'ai trouvé tout ce qu'il fallait pour ta macro.
    I.
    1
  2. julsof Messages postés 13 Statut Membre 1
     
    Merci beaucoup de ta réponse.
    Je vais me pencher sur le sujet dès maintenant.
    Désolé pour la question qui va suivre mais ou se trouve l'aide VBA (comme je le disais je suis vraiment novice dans le VBA et dans les forums, en fait c'est ma première inscription.
    En tous cas merci beaucoup pour ton aide.
    0
  3. julsof Messages postés 13 Statut Membre 1
     
    Re bonjour Ivan-hoe,

    j'ai essayé d'intégrer le code et tout est exactement comme je le souhaitais.
    Je te remercie encore pour ton aide précieuse
    0