Recherche dans listbox

Bonjour à tous,

Je viens vers vous les forumeurs de bonne volonté pour m'aider à résoudre ce petit problème de fonction recherche en VBA dans un USF.

Pour cela je vous joints le fichier.

Merci de votre aide

Amicalement

Noel

27classeur1.zip (14.51 Ko)

Bonjour Noel

Ton fichier en retour qui fonctionnera aussi sur MAC que sous Windows

Amicalement

67classeur1-v2.zip (20.54 Ko)

Re

Bonjour Dan,

Merci Dan cela fonctionne très bien.

je pense que je vais rajouter des boutons.

Le code qui dans le textbox1 je le mettrai dans le bouton.

J'aurai certainement des questions encore à poser.

@+ cher ami

Amicalement

Noel

PS : Il faudra que tu m'explique plus longuement les variantes que je n'utilise pas beaucoup.

Bonjour à tous,

Bonjour Dan,

Je t'ai certainement répondu trop vite. Effectivement ça fonctionne sur le fichier joint; Mais quand j'ai voulu l'adapter j'ai un souci; La listbox.clear efface effectivement la liste mais quand je rentre le texte de recherche, il me donne pas la liste des comptes. La listbox reste vierge. J'ai vérifié par plusieurs méthodes toujours rien.

J'ai du même effacer tous les codes des autres SUB et même enlevé dans Initialize tous les codes sauf bien entendu le code que tu m'as fourni toujours pareil.

Si tu pouvais me dire le pourquoi.

Merci d'avance

Amicalement

Noel


Re Dan,

J'ai oublié de te fournir le code

Private Sub CommandButton1_Click()
Dim c
Dim premcel As String
Dim cel As Range
ListBox3.Clear
With Sheets("PLANCOMPTABLE").Range("a1:a" & Sheets("PLANCOMPTABLE").Range("A" & Rows.Count).End(xlUp).Row)
    Set cel = .Find(TextBox34, LookIn:=xlValues)
    If Not cel Is Nothing Then
        premcel = cel.Address
        Do
            ListBox3.AddItem cel
            Set cel = .FindNext(cel)
        Loop While Not cel Is Nothing And cel.Address <> premcel
    End If
End With
End Sub

@+

Re

La TextBox34 est bien la textbox de recherche ??

A te relire

re

oui

re

Attention que tu dois enregistrer ton fichier avant de faire des tests lorsque tu modifies le code. Sinon VBA reste sur l'ancien

Essaie comme ceci et veille à enregistrer le fichier avant test

Private Sub CommandButton1_Click()
Dim c
Dim premcel As String
Dim cel As Range
ListBox3.Clear
With Sheets("PLANCOMPTABLE").Range("a1:a" & Sheets("PLANCOMPTABLE").Range("A" & Sheets("PLANCOMPTABLE").Rows.Count).End(xlUp).Row)
    Set cel = .Find(TextBox34, LookIn:=xlValues)
    If Not cel Is Nothing Then
        premcel = cel.Address
        Do
            ListBox3.AddItem cel
            Set cel = .FindNext(cel)
        Loop While Not cel Is Nothing And cel.Address <> premcel
    End If
End With
End Sub
Private Sub UserForm_Initialize()
'Dan 29/07/14
Dim i As Integer
With Sheets("PLANCOMPTABLE")
For i = 1 To .Range("A" & .Rows.Count).End(xlUp).Row
    ListBox3.AddItem .Range("A" & i)
Next
End With
End Sub

Amicalement

Bonjour Dan,

Rien n' a changé.

Ton code initialize la structure a changé mais pas le contenu.

Faut'il pensé que parce que j'utilise dans une multipage, je pense que non.

J'ai essayé de supprimer le multipages c'est du pareil au même.

Alors penses-tu qu'on peut avoir une solution?

Merci de ton aide

Amicalement

Noel

Mon cher Dan,

Je crois avoir trouvé le pourquoi.

Quand je tape 2 chifres il me sélectionne le texte commençant par les 2 premières lettres. Bien sûre exp si je tape 61 il me donnera la list qui commence par 61 mais également la phrase qui contient 61.

Pour cela peux-tu avoir une solution pour que quand je tape les 2 preières lettres il me donne que le lignes qui commence par le 2 premières lettre.

Merci d'avance

Amicalement

Noel

re

Ok Noel, je vois ton souci.

Dans un de tes précédents messages tu disais ne pas avoir la liste des comptes. J'ai donc cru que tu n'avais rien dans ta liste.

En fait tu as quelque chose dans ta liste mais là tu ne veux que la liste des comptes qui commence par le chiffre que tu mets dans ta textbox recherche.

Je vais modifier le code en ce sens

Amicalement

Re,

effectivement j'avais rien dans la list car je passais par un bouton.

Quand j'avais rentré les 3 premières lettre et qu je cliquais sur le bouton, il ne m'affichait pas la liste . J'ai enlevé le bouton et au fur à mesure que je rentrai lettre par lettre jusqu'à la deuxième lettre il me fourni la liste demandée mais à la frappe de la 3ème lettre la listbox se vide.

@+

Noel

Salut Noël, Salut Dan,

J’arrive bien tard dans la discussion, bien que je la suive depuis le début.

J’avais un code qui correspondait à peu près au besoin de Noël, mais j’ai mis un peu de temps à le transformer.

Maintenant Dan tu dis que tu allais s’en occuper et peut-être que tu as déjà passé du temps sur ce nouveau code ?? J’espère alors que tu ne sois pas fâché que je propose quand même ma solution. Il est bien entendu que si tu en as également une, elle m’intéresserait au plus haut point (tout comme j’ai pris note de ton code pour rechercher n’importe quelle chaine).

Cordialement.

22noel.zip (23.42 Ko)

Bonjour Yvouille

J'ai ouvert le fichier, c'est bien ce que je voulais.

Je vais essayer de le transposer dans mon projet et je vous tiens au courant toi et Dan

Merci

Amicalement

Noel

Re,

Yvouille,

J'ai testé ton code en l'appliquant dans mon projet, il ne fonctionne pas pour le moment.

Je vais me pencher un peu plus dessus pour voir ce qui ne va pas

Je te joints mon fichier reconcocté que je dois installer dans le projet

Ce code à l'état actuel fonctionne dans ce bout de projet mais quand je l'installe dans le mien il ne fonctionnepas

Tu verras que j'ai changé Textbox1 en textbo34 et listbox1 listbox3

Je ne vois rien pour le moment qui pourrait ne pas le faire fonctionner.

Merci de ton aide

Amicalement

Noel


Re,

Yvouille,

Ca fonctionne parfaitement j'ai trouvé où se situé le problème.

C'est ma listbox avait la partie du haut qui était camouflé. C'est pour cela que quand je frappait la 3ème lettre le r&résultat était caché.

Merci beaucoup à vous deux

Amicalement

Noel

15noel.zip (27.80 Ko)

La seule chose que je vois qui ne fonctionne pas est le report de la ligne choisie dans ton TextBox2 ('Texte trouvé').

Mais tu n'as pas modifié le code ci-dessous

Private Sub ListBox1_Click()
TextBox2 = ListBox1
'Unload Me
End Sub

en

Private Sub ListBox3_Click()
TextBox2 = ListBox3
'Unload Me
End Sub

Est-ce la solution ?

Amicalement.

NB : Ne vaudrait-il pas mieux fournir tout de suite le bon fichier avec les bonnes dénominations ?

Re

Celui là c'est pas grave car sur mon projet j'ai pris soin de le faire

Merci

Aicalement

Noel

Re

Yvouille : Pas de soucis

Noel, Comme j'avais cherché pourrais-tu essayer toutefois ce code afin que je vois si cela convenait également

Private Sub CommandButton1_Click()
Dim c
Dim premcel As String
Dim cel As Range
ListBox3.Clear
With Sheets("PLANCOMPTABLE").Range("a1:a" & Sheets("PLANCOMPTABLE").Range("A" & Sheets("PLANCOMPTABLE").Rows.Count).End(xlUp).Row)
    Set cel = .Find(TextBox34, LookIn:=xlValues)
    If Not cel Is Nothing Then
        premcel = cel.Address
        Do
            If Left(cel, Len(TextBox34)) = TextBox34 Then ListBox3.AddItem cel
            Set cel = .FindNext(cel)
        Loop While Not cel Is Nothing And cel.Address <> premcel
    End If
End With
End Sub

Juste un truc, parfois dans ton message tu parles de chiffres 61 puis de lettre.

Le premier code prenait directement les chiffres ou lettres que tu mettais dans la Texbox34 et te renvoyais la liste des comptes qui contenaient

Le deuxième code ici ne prend en compte que ce que tu vas mettre dans ta textbox34 et te renverra la liste dont les comptes commencent par ce que tu as mis dans la texbox34. Donc si tu met 61 tu auras la liste des comptes commençant par 61

Amicalement

Bonjour Dan,

Je pense que tu as déjà repris ton travail.

Effectivement ce code fonctionne également comme celui de Yvouille.

Le tien il est plus court mais cela me donne le même résultat après essai.

@+

Amicalement

Noel

Bonjour,

Je serais intéressé à tester le nouveau code de Dan, mais je ne comprends plus très bien ; celui-ci est maintenant lié au CommandButton1, donc est-ce que le UserForm a changé ?

Noël, pourrais-tu nous fournir un fichier exemple sur lequel ce nouveau code fonctionne ?

Cordialement.

Bonjour mon cher Yvouille,

Bien sure moi j'ai adapté à mon projet et voilà ce que cela donne.

Attention j'ai supprimé le bouton, j'ai mis le code sur le textbox1

@+

Amicalement

Noel

16classeur1-v2.zip (21.01 Ko)
Rechercher des sujets similaires à "recherche listbox"