Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Userform recherchev

  • Initiateur de la discussion Initiateur de la discussion nherambo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

N

nherambo

Guest
Bonjour, j'ai besoin de votre aide.

Je n'arrive pas à faire une recherchev dans mon userform. Ayant plusieurs fois le même nombre, je voudrais dans le UserForm, entrer manuellement le "Number". A la suite de cela, la liste déroulante "Correspondance" me donnerait uniquement les correspondances correspondantes. Je n'ai donc plus qu'à choisir la correspondance que je veux pour avoir l'équivalent dans la combobox "Equivalent".


Plus clairement, si je saisis le number 4, je voudrais que dans ma combobox "Correspondance", j'ai le choix entre E, F, ou G. En sélectionnant G, je verrais apparaitre automatiquement "x19" dans la Combobox "Equivalent".

Merci par avance pour votre aide précieuse !

Nherambo
 

Pièces jointes

Re : Userform recherchev

Re tous,
Je l'ai adapté et ça fonctionne bien. Si je comprends bien, tu as mis la fonction Find pour "remplacer" VLookup en quelque sorte ?
 
Re : Userform recherchev

Par contre pour le coup je bloque vraiment pour renvoyer la valeur "equivalent". J'ai du mal avec la fonction "VLookup" avec deux critères Combobox sous VBA
 

Pièces jointes

Re : Userform recherchev

Bonjour,
voici le code adapté a ce que tu cherches:
Code:
Private Sub correspondance_Enter()
Call tri_combo_2
End Sub

Private Sub equivalence_Enter()
Call tri_combo_3
End Sub

Private Sub Number_Change()
Maligne = Sheets("Sheet1").Range("A3000").End(xlUp).Row + 1
Sheets("Sheet1").Range("A" & Maligne) = Me.number
End Sub
Private Sub UserForm_Initialize()
Call tri_combo_1
End Sub
Sub tri_combo_1()
Application.ScreenUpdating = False
With Sheets("Sheet1")
drligne = .[A:B].Find("*", , , , 1, 2).Row
Set dico = CreateObject("Scripting.Dictionary")
For Each c In .Range("a2:a" & drligne)
If Not dico.exists(c.Value) And c.Value <> "" Then dico.Add c.Value, c.Value
Next c
End With
a = dico.Keys
With UserForm1
For K = 0 To dico.Count - 1
.number.AddItem a(K)
Next
End With
Application.ScreenUpdating = True
End Sub
Sub tri_combo_2()
UserForm1.correspondance.Clear
With Sheets("Sheet1")
drligne = .[A:C].Find("*", , , , 1, 2).Row
Set dico = CreateObject("Scripting.Dictionary")
For Each c In .Range("C2:C" & drligne)
If Sheets("Sheet1").Cells(c.Row, "A").Text = UserForm1.number.Text Then
If Not dico.exists(c.Value) And c.Value <> "" Then dico.Add c.Value, c.Value
End If
Next c
End With
a = dico.Keys
With UserForm1
For K = 0 To dico.Count - 1
.correspondance.AddItem a(K)
Next
End With
Set dico = Nothing
End Sub
Sub tri_combo_3()
UserForm1.equivalence.Clear
With Sheets("Sheet1")
drligne = .[A:C].Find("*", , , , 1, 2).Row
Set dico = CreateObject("Scripting.Dictionary")
For Each c In .Range("B2:B" & drligne)
If Sheets("Sheet1").Cells(c.Row, "C").Text = UserForm1.correspondance.Text Then
If Not dico.exists(c.Value) And c.Value <> "" Then dico.Add c.Value, c.Value
End If
Next c
End With
a = dico.Keys
With UserForm1
For K = 0 To dico.Count - 1
.equivalence.AddItem a(K)
Next
End With
Set dico = Nothing
End Sub
pour le classeur que tu as mis en copy
j'utilise rarement Vlookup
A+
 
Re : Userform recherchev

Bonjour,
Est-ce que tu sais s'il est possible d'avoir le résultat directement si on remplace la Combobox Equivalence par une simple TextBox ?
 
Re : Userform recherchev

Re,
si tu es sur qu'il n'y a qu'un seul résultat on peux mettre le résultat simplement dans un textbox il n'y a aucun inconvénient.
 
Dernière édition:
Re : Userform recherchev

Re,
Oui, le résultat est unique. Parce qu'en conservant le code et en remplaçant la ComboBox par une TextBox j'ai un message d'erreur "Sub or Function not defined".
 
Re : Userform recherchev

Bonsoir,

Normal que tu as une erreur si tu remplaces uniquement la combobox par un textbox.
Pour ajouter une valeur a une combobox tu dois utiliser soit une méthode ajout d'item (additem) ou rowsource etc..
lorsque tu utilise un textbox tu dois mettre textbox.text ou textbox.value.
ce sont des propriétés du control
Essai et dis moi si tu y arrives.
A+
 
Re : Userform recherchev

C'est bon j'y suis arrivé. Merci pour tes conseils. J'ai un nouveau problème sur lequel je bloque.

J'ai repris le même modèle en modifiant les données dans les feuilles. Sauf que je n'arrive pas à faire la même chose que précédemment sur plusieurs feuilles. Sur la Feuille1, les nombres sont uniques.

Je voudrais rechercher le nombre entré dans "Number" dans la feuille2 pour renvoyer dans la combobox correspondance, les différentes correspondances possibles pour ce numéro. Sauf que je bloque étant donné que c'est sur deux feuilles et ma combobox reste désespéremment vide.

Tu arriveras sans doute à expliquer mon erreur. Merci
 

Pièces jointes

Re : Userform recherchev

Bonjour,
le problème se situe sur cette ligne de code:
Code:
If Sheets("Sheet2").Cells(c.Row, "A").Text = UserForm1.number.Text Then
je te laisse chercher un peu,
Quelle torture ...
A +
 
Re : Userform recherchev

Bonjour,
I got it ! Merci pour la torture, ça me fait progresser

Code:
If Sheets("Sheet2").Cells(c.Row, "B").Text = UserForm1.number.Text Then

Merci
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
324
Réponses
4
Affichages
253
Réponses
3
Affichages
423
Réponses
3
Affichages
562
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…