Aide VBA

Fermé
Diane - 24 mars 2011 à 15:55
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 25 mars 2011 à 09:30
Bonjour,

je suis débutante en VBA et je souhaiterai que quelqu'un m'aide pour finaliser mon fichier.
J'ai créer sur mon classeur EXCEL, feuil1 appelée "code_produits", un bouton "RECHERCHER" mon but est de rechercher rapidement par mot clef (sur feuil2) une ligne de ma liste (feuil1) et de me la surligner en jaune.
Quand je clique sur rechercher, une boite de dialogue s'ouvre ou je saisie mon mot mais j'aimerai avoir une saisie semi automatique d'après une liste de mots clefs qui se trouveraient sur la feuille 2.
C'est pas facile à expliquer!
Voici mon code VBA du bouton RECHERCHER:

Private Sub Rechercher_Click()
Range("E3:E116").Select
    Selection.Interior.ColorIndex = xlNone
Marecherche = InputBox("Saisir le nom à rechercher", "Recherche")
If Marecherche = "" Then Exit Sub
       With ActiveSheet.Cells
        Set C = .Find(Marecherche, LookIn:=xlValues)
         If Not C Is Nothing Then
            firstAddress = C.Address
                    Do
            C.Select
               With Selection.Interior
        .ColorIndex = 6 'Couleur jaune
        .Pattern = xlSolid
    End With
                rep = MsgBox("Recherche suivante", vbYesNo, "Recherche")
                If rep = vbNo Then Exit Sub
                                Set C = .FindNext(C)
                If C Is Nothing Then
                    Adresse_encours = 0
                Else
                    Adresse_encours = C.Address
                End If
                      Loop While Not (C Is Nothing) And (Adresse_encours <> firstAddress)
               End If
    MsgBox "Texte non trouvé ou recherche terminée ou essayez une autre orthographe", vbInformation, "Recherche" 
    End With
End Sub


1 réponse

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 778
24 mars 2011 à 16:38
Bonjour,

Au lieu d'utiliser InputBox, il faudrait utiliser un formulaire (UserForm) avec une Liste déroulante (Combobox) et un bouton Quitter (ou Annuler).

Il s'agit là d'un autre volet du VBA, qui favorise la programmation évènementielle au lieu d'une simple programmation séquentielle.

C'est souvent plus simple, dans ce cas, il suffit alors d'utiliser les évènements :
- Initialize du UserForm pour remplir la liste déroulante.
- Change du Combobox pour lancer la recherche, pas besoin de poser de questions.

Bon courage !
0
merci beaucoup de ta réponse mais là, je nage un peu!!! Oh oui du courage il m'en faudra!! Merci
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 778
Modifié par Patrice33740 le 25/03/2011 à 09:43
0