LISTE DEROULANTE dans MACRO avec msgbox

Bonjour,

J'ai recupéré cette macro et l'ai accordée à ma sauce.

A son activation, une fenetre de recherche s'ouvre en me demandant "MOT à rechercher"; je dois ensuite ecrire le mot que je desire trouver.

Je souhaiterais pourvoir insérer une liste deroulante à la place du champ vide. Est-ce possible? Si oui est-ce compliqué?

voici la macro:

Dim Str_Plage As String

Dim Cel As Range

Dim Feuil As Worksheet

Dim Str_critère As String

Dim X As Byte

Str_Plage = "A3:H9999"

Str_critère = InputBox("MOT à rechercher ?")

Set Feuil = Sheets("ACHAT")

For Each Cel In Feuil.Range(Str_Plage)

If UCase(Cel) Like "*" & UCase(Str_critère) & "*" Then

Feuil.Activate

Cel.Activate

X = MsgBox("Mot """ & Str_critère & """ trouvé :" & Chr(13) & _

"cellule : " & Cel.Address(0, 0) & Chr(13) & Chr(13) & _

"STOPPER LA RECHERCHE ?" & Chr(13), vbDefaultButton2 + _

vbQuestion + vbYesNo, "MOT TROUVÉ")

Select Case X

Case 6

Feuil.Activate

Cel.Activate

Exit Sub

Case 2

Exit Sub

Case Else

End Select

End If

Next Cel

MsgBox ("pas trouvé")

End Sub

Bonjour clsmh38,

Il faut que tu passes par un userform. Un exemple en fichier joint :

3'068exemple-clsmh38.zip (10.53 Ko)

bonsoir vba-new,

merci pour ta réponse.

ne connaissant pas du tout les userform, je me suis débrouillé pour appliquer ton exemple à mon cas, donc jusque là ok.

par contre pour la suite je voudrais conserver les fonctions de ma macro initiale à savoir: si le mot recherché existe, activer la cellule avec possibilité "suivant" ou "close" dans boite de dialogue et si il n'existe pas : "pas trouvé" . Le pb est que je ne sais pas si il faut et/ou si on peut integrer ça au userform ou vice versa.

Re,

Oui ça doit pouvoir se faire.

Concernant ton code, si je peux me permettre, j'utiliserais plutôt les méthodes Find et Findnext.

Voici un code tiré de l'aide VBA d'Excel :

With Worksheets(1).Range("a1:a500")
    Set c = .Find(2, lookin:=xlValues)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
            c.Value = 5
            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
End With

Tu peux peut-être l'adapter ?

rebonjour,

je pensais rajouter un bouton de recherche sous la fenetre deroulante dans le userform mais je sais pas comment faire pour rechercher la valeur affichée dans la combobox. voici mon code:

Private Sub Chercher_Click()

QUELLE LA VARIABLE DU USERFORM A RAPPELER ????

End Sub

Private Sub ComboBox1_Change()

End Sub

Private Sub UserForm_Initialize()

Dim dico As Object, cel As Range

Set dico = CreateObject("scripting.dictionary")

For Each cel In Range("LISTE!$BX$4:$BX$104")

If Not dico.Exists(cel.Value) And cel.Value <> "" Then dico.Add cel.Value, cel.Value

Next cel

Me.ComboBox1.List = dico.items

End Sub

Bonjour clsmh38,

La variable que tu dois rappeler est Combobox1.Value

Rechercher des sujets similaires à "liste deroulante macro msgbox"