Recherche valeur sur feuille avec textbox et renvoi valeur avec listbox

Résolu
thibaultanguy Messages postés 45 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 16 novembre 2012 - 30 sept. 2012 à 10:45
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur 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

12 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
30 sept. 2012 à 11:40
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
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
1 oct. 2012 à 11:21
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
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
1 oct. 2012 à 18:14
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
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
30 sept. 2012 à 11:02
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
thibaultanguy Messages postés 45 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 16 novembre 2012
30 sept. 2012 à 16:01
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...
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
30 sept. 2012 à 19:26
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
30 sept. 2012 à 19:29
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
0
thibaultanguy Messages postés 45 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 16 novembre 2012
1 oct. 2012 à 11:12




En cliquant sur cet icône, voici ce qu'il m'affiche : code=vb /code...
Pas très avancé avec cela.
0
thibaultanguy Messages postés 45 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 16 novembre 2012
1 oct. 2012 à 14:04
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
0
thibaultanguy Messages postés 45 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 16 novembre 2012
1 oct. 2012 à 18:21
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
0
boudibiam Messages postés 3 Date d'inscription dimanche 22 janvier 2006 Statut Membre Dernière intervention 14 décembre 2012
14 déc. 2012 à 21:37
boudibiam
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
14 déc. 2012 à 21:53
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.
0
Rejoignez-nous