• Initiateur de la discussion Initiateur de la discussion YannC.
  • 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 !

YannC.

XLDnaute Occasionnel
Bonjour à tous,

Je reviens vers vous avec cette question :

Sur ma feuille excel, je sais faire une recherche d'un numero quelqu'il soit, ce qui me donne les noms des personnes qui ont ce numero.

Ceci grace à cette formule :
=SI(L$2>0;SI(ESTERREUR(RECHERCHEH(L$2;M4:CY4;1;FAUX)=VRAI);" ";RECHERCHEH(L$2;M4:CY4;1;FAUX));" ")

En 'L2' je met le numero que je recherche, et 'M4:CY4' est ma zone de recherche pour une ligne.

Cette formule est copier pour toute les lignes qui comportent des noms, et ainsi je retrouve l'info recherché facilement.


Mais maintenant je voudrait faire la meme chose en VBA(Mais je n'y connais pas grand chose). J'ai creer l'userform, mais je ne sais pas comment faire pour la recherche du numero qui me renverait les noms dans la listebox.

Voila, si il y en a qui peuvent m'aider, j'en serais vraiment heureux.

Merci
 

Pièces jointes

Re : Recherche diverse

Bonjour SergiO et Skoobi et merci de votre aide.

C'est exactement se que je voulais faire. Et excuse moi Skoobi, mais j'aime bien la méthode de SergiO qui est automatique, lorsque l'on met un numéro.

Par contre pour revenir sur le fichier de SergiO, Comment faire si je veux le faire à partir du feuille nommé liste, et non à partir de la feuille 1.

J'ai bien essayé ceci : Derlig = Sheets("Liste").Range("B65536").End(xlUp).Row

Mais il marque erreur. Donc si vous pouviez m'éclairer. Merci beaucoup encore de votre aide.

Je precice que j'appelerais cette fonction à partir d'un User et non à partir de la feuille.
 
Dernière édition:
Re : Recherche diverse

Bonjour, j'ai essaye plusieurs mèthode dont celle ci qui me parait la plus exacte :
Private Sub TextBox1_Change()



ListBox1.Clear
If TextBox1.Value = "" Then Exit Sub
Derlig = Sheets("Liste").Range("B65536").End(xlUp).Row
For L = 3 To Derlig
C = ""
On Error Resume Next
C = Sheets("Liste").Range(Cells(L, 13), Cells(L, 103)).Find(TextBox1, , , xlWhole).Column
If C <> "" Then ListBox1.AddItem Cells(L, 2)

Next L


End Sub

Et pourtant cela ne fonctionne toujours pas sur une autre feuille que la feuille 1
 
Re : Recherche diverse

Re,

essaye comme ceci:

Private Sub TextBox1_Change()



ListBox1.Clear
If TextBox1.Value = "" Then Exit Sub
With Sheets("Liste")
Derlig = .Range("B65536").End(xlUp).Row
For L = 3 To Derlig
C = ""
On Error Resume Next
C = .Range(.Cells(L, 13), .Cells(L, 103)).Find(TextBox1, , , xlWhole).Column
If C <> "" Then ListBox1.AddItem .Cells(L, 2)

Next L

End with
End Sub


N'oublie pas les points "."

Au fait, si tu mets mon code dans "TextBox1_Change()", cela sera aussi automatique 😉.
Mon code génère en plus un message si aucune personne n'est trouvée.
 
Re : Recherche diverse

Bonjour à tous,

Me revoila et merci Skoobi pour ton message,

Mais j'ai une erreur lors de l'integration de se code à mon fichier perso. Et je ne comprend pas pourquoi :

A la ligne
Set C = .Find(Val(TextBox10.Value), LookIn:=xlValues, lookat:=xlWhole)
il me marque 'Variable non défini'???

Voici le reste du code. Mais ce que je ne saisie pas, c'est sur un classeur vierge il fonctionne, et sur mon classeur perso rien à faire.

Private Sub TextBox10_Change()


ListBox1.Clear
If TextBox10.Value = "" Then Exit Sub

With Sheets("liste").Range("O3:CY" & [B2].End(xlDown).Row)
Set C = .Find(Val(TextBox10.Value), LookIn:=xlValues, lookat:=xlWhole)
If Not C Is Nothing Then
FirstADdress = C.Address
Do
ListBox1.AddItem Sheets("liste").Range("B" & C.Row).Value
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> FirstADdress
Else: MsgBox "Pas de nom trouvé.", vbExclamation, "Recherche nom"
End If
End With

End Sub

Merci à ce qui peuvent m'aider
 
Dernière édition:
Re : Recherche diverse

Merci encore Skoobi , tu m'en apprend plein.

Mais j'ai encore un probleme, le code ne marque plus d'erreur, mais il ne me trouve plus les numero. je pense qu'il doit me manquer un lien vers ma feuille 'liste' mais je ne sais pas ou. si tu peux m'aider, merci beaucoup

Private Sub TextBox10_Change()
Dim C As Range
Dim FirstADdress As String


ListBox2.Clear
If TextBox10.Value = "" Then Exit Sub

With Sheets("liste")
With .Range("O3:CY" & [B2].End(xlDown).Row)
Set C = .Find(Val(TextBox10.Value), LookIn:=xlValues, lookat:=xlWhole)
If Not C Is Nothing Then
FirstADdress = C.Address
Do
ListBox2.AddItem Sheets("liste").Range("B" & C.Row).Value
Set C = .FindNext(C)
Loop While Not C Is Nothing And C.Address <> FirstADdress
Else: MsgBox "Pas de nom trouvé.", vbExclamation, "Recherche nom"
End If
End With
End With



End Sub
 
- 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

Discussions similaires

Réponses
26
Affichages
2 K
L
Réponses
8
Affichages
2 K
lilibloom
L
Retour