Recherche valeur sur feuille avec textbox et renvoi valeur avec listbox [Résolu]

Messages postés
45
Date d'inscription
jeudi 3 juillet 2008
Dernière intervention
16 novembre 2012
- - Dernière réponse : ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 14 déc. 2012 à 21:53
Bonjour le Forum,
Grace à ce petit morceau de code, je parviens à rechercher une valeur dans une feuille à l'aide d'un TextBox. Les valeurs trouvées sont renvoyée dans une ListBox. Lorsque je 2 clic dans celle-ci, le code me renvoie à ma feuille de calcul sur la valeur concernée.
Tout fonctionne, seulement, dans ma listBox, apparait la valeur de ma feuille (ci-dessous : Data) et l'adresse de la ligne et colonne de la valeur. Je n'arrive pas à m'en débarrasser... Pourriez-vous m'aider ?
Sincère remerciements


[1] Option Explicit
[2] Option Compare Text

[3] Const Sign As String = "RECHERCHES"

'ICI C'est la mise en place initialisation
[1] Private Sub UserForm_Initialize()
'pour la date du jour sur l'userform
'list box1
[2] With ListBox1
'5 colonnes
[3] .ColumnCount = 5
'largeur des colonnes
[4] .ColumnWidths = "80;80;80;80"
[5] End With
[6] Me.CommandButton1.Default = True

[7] End With

[8] End Sub

'ICI C'est le Moteur de Recherche
[1] Private Sub CommandButton1_Click()
' plage et c variable de ranger, placer

[2] Dim Plage As Range, C As Range
[3] Dim T As String, Firstaddress As String
[4] Dim x As Integer
'Efface la listbox
[5] ListBox1.Clear
'T = textbox1 de l'userform
[6] T = Me.TextBox1
'textbox vide, arret macro
[7] If T = "" Then Exit Sub
[8] With Sheets("Data")
[9] Set Plage = Application.Intersect(.UsedRange.Cells, .Range(.Cells(1, 1), .Cells(.Rows.Count, .Columns.Count)))
[10] End With
[11] Set C = Plage.Find(T, LookIn:=xlValues, LookAt:=xlPart)
[12] If Not C Is Nothing Then Firstaddress = C.Address
[13] Do
[14] With ListBox1
[15] .AddItem ("Data")
[16] For x = 2 To 8
[17] .List(.ListCount - 1, x - 1) = Cells(C.Row, x).Text
[18] Next x
[19] .List(.ListCount - 1, 8) = C.Address(False, False)
[20] End With
[21] Set C = Plage.FindNext(C)
[22] Loop While Not C Is Nothing And C.Address <> Firstaddress
[23] End If
[24] If ListBox1.ListCount = 0 Then
[25] MsgBox "Le Texte " & T & " n'a pas été trouvé" & vbLf & "Faites un essai sur une partie du nom", vbCritical, Sign
[26] End If

[27] End Sub

'ICI C'est la sélection au Double Click & Sortie du UserForm
[1] Private Sub ListBox1_dblClick(ByVal Cancel As MSForms.ReturnBoolean)
[2] With ListBox1
[3] Application.Goto Sheets(.Text).Range(.List(.ListIndex, 8))
[4] End With
[5] Unload Me
[6] End Sub



Thierry
Afficher la suite 

Votre réponse

12 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
3
Merci
Et lorsque tu reviendras avec du code présenté comme il se doit :
Evite de nous montrer de telles fort curieuses "fantaisies" :

.ColumnCount = 5  'donc 5 colonnes)
 .ColumnWidths = "80;80;80;80" ' tu n'en dimensionnes ici que 4
....

 With ListBox1
  .AddItem ("Data") ' donc en colonne 1
   For x = 2 To 8
     .List(.ListCount - 1, x - 1) = Cells(C.Row, x).Text ' donc en colonne x-1 (= par colonne 7 si x = 8)
   Next x
   .List(.ListCount - 1, 8) = C.Address(False, False) ' donc en colonne 8
 End With


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ

Merci ucfoutu 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
3
Merci
Il ne te vient pas à l'idée que cette mise en forme répond tout bêtement au même principe que celui de toutes les autres mises en forme, telles que dans la presque totalité de tous les logiciels ?
Sélectionne ton code (indenté, s'il te plait). Clique alors sur cette icône !



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ

Merci ucfoutu 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
3
Merci
Bien
Ce code marchera bien si :
1) Listbox2.ColumnCount = 8
2) tu écris :
If C.Offset(0, -1) = ListBox1.list(Lisbox1.listindex) Then

et que tu le mets dans l'évènement click de Listbox1
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ

Merci ucfoutu 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Bonjour,
Tu as pourtant lu (et validé) mon message du jeudi 17 novembre 2011 à 18:58:25 dans cette discussion récente : Tapez le texte de l'url ici.
Je ne poserai personnellement un regard sur ton code que lorsque tu nous l'auras présenté indenté et entre balises code.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
45
Date d'inscription
jeudi 3 juillet 2008
Dernière intervention
16 novembre 2012
0
Merci
Ha, ucfoutu, quel grincheux !!! mais devant la connaissance et la MEMOIRE, je m'incline...
Je pensais pourtant avoir progressé depuis nov 2011! Je pensais avoir présenté ce morceau de code indenté...à ma façon je sais, car je ne sais pas comment le faire autrement. Ma foi, merci tout de même pour l'explication, du moins la CORRECTION verbale!!
Salut ucfoutu, sans rencune aucune...
Commenter la réponse de thibaultanguy
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Grincheuix ?
Non, ami, plutôt irrité.
Quant à savoir comment présenter ton code : tu plaisantes ? cela t'a été précisé dans la discussion dont je t'ai donné le lien ! Non ?

Tu seras mieux accueilli lorsque tu reviendras :
- en observant cette discipline
- en corrigeant les "étrangetés" pointées du doigt.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
vendredi 18 novembre 2011 à 21:38:52
acive
.
..tu utilises les balises quand tu nous envoie du code suffit (troisième icône à partir de droite)


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
45
Date d'inscription
jeudi 3 juillet 2008
Dernière intervention
16 novembre 2012
0
Merci




En cliquant sur cet icône, voici ce qu'il m'affiche : code=vb /code...
Pas très avancé avec cela.
Commenter la réponse de thibaultanguy
Messages postés
45
Date d'inscription
jeudi 3 juillet 2008
Dernière intervention
16 novembre 2012
0
Merci
j'vais encore fâcher mon ami ucfoutu! et comme cela, est ce que cela te convient avec cet exemple? Pas commode tout de même l'ancien, voir un peu rustre...mais de bons conseils tout de même...

Private Sub ListBox1_Change()
  i = 0
  Me.ListBox2.Clear
  Set f = Sheets("Data")
  For Each C In f.Range("B3:B" & f.[B65000].End(xlUp).Row)
    If C.Offset(0, -1) = Me.ListBox1 Then
      Me.ListBox2.AddItem
      Me.ListBox2.List(i, 0) = C.Value
      Me.ListBox2.List(i, 1) = C.Offset(0, 1).Value
      Me.ListBox2.List(i, 2) = C.Offset(0, 2).Value
      Me.ListBox2.List(i, 3) = C.Offset(0, 3).Value
      Me.ListBox2.List(i, 4) = C.Offset(0, 4).Value
      Me.ListBox2.List(i, 5) = C.Offset(0, 5).Value
      Me.ListBox2.List(i, 6) = C.Row
      i = i + 1
    End If
  Next C
End Sub
Commenter la réponse de thibaultanguy
Messages postés
45
Date d'inscription
jeudi 3 juillet 2008
Dernière intervention
16 novembre 2012
0
Merci
Merci UCfoutu,

Je vais reprendre l'ensemble de mon code et assimiler chaque étape en me servant de tous les outils mis à ma disposition. Il est vrai que faire appel au forum fait gagner du temps mais on perd parfois en compréhension...
Longue vie à toi l'Ancien, et encore merci !


eric
Commenter la réponse de thibaultanguy
Messages postés
3
Date d'inscription
dimanche 22 janvier 2006
Dernière intervention
14 décembre 2012
0
Merci
boudibiam
Commenter la réponse de boudibiam
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Aurais-tu des problèmes d'affirmation de ta personnalité, boudibiam ?
Ce que tu fais ici ressemble à ce que ferait un taggeur, juste pour dire qu'il est passé par là (et qu'on le voie).
Il doit bien y avoir un bac à sable pas trop loin ! Vas-y donc !



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.