Aide VBA
Diane
-
Patrice33740 Messages postés 8930 Statut Membre -
Patrice33740 Messages postés 8930 Statut Membre -
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:
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
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 !
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 !
Un petit tuto pour commencer :
https://www.000webhost.com/migrate?static=true
ou
https://silkyroad.developpez.com/VBA/ControlesUserForm/