Textbox intuitive

Résolu
max77maxou Messages postés 7 Statut Membre -  
max77maxou Messages postés 7 Statut Membre -
Bonjour,
je fais appel aux plus compétent que moi,
voila mon soucis,
dans un userform, il y a :
textbox3 = client
textbox4 = materiel
listbox1 = liste de materiel
listbox2 = liste de client

si je clique sur un nom ds la listbox2, celui ci se met ds le textbox3
si je clique sur un materiel ds la listbox1, celui ci se met ds le textbox4
jusque la tout va bien

mais ce que je n'arrive pas, c'est que je souhaite taper la premier lettre du nom ds le textbox3, "textbox intuitive" , et que ds la listbox2 se filtre automatiquement au fur et a mesure de taper les lettres, et idem pour le textbox4 - listbox1

j'ai trouver beaucoup de code a ce sujet, mais en les appliquant cela ne fonctionne pas

merci a tous ceux qui pourrons m'aider
Max

10 réponses

  1. Utilisateur anonyme
     
    Bonjour, VBA c'est pas mon fort, mais pourquoi ne pas utiliser des combobox?
    0
  2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    comme ceci:

    Option Explicit
    Dim a, d1, tmp, c
    Private Sub UserForm_Initialize()
      a = Range("A1:A195").Value 'remplir la listbox
      Me.ListBox1.List = a
    End Sub
    Private Sub TextBox1_Change()
       Set d1 = CreateObject("Scripting.Dictionary")
       Me.ListBox1.Clear
       tmp = UCase(Me.TextBox1) & "*"
       For Each c In a
         If UCase(c) Like tmp Then d1(c) = ""
      Next c
      Me.ListBox1.List = d1.keys
    End Sub

    0
  3. max77maxou Messages postés 7 Statut Membre
     
    merci a ceux qui ont repondu,

    slt cs_Le Pivert,
    j'ai mis le code que tu as ecri, et qd je tape une lettre ds le textbox3, j'ai une erreur, "erreur de compilation, Projet ou bibliotheque introuvable", ds private sub textbox3_change, le "d1" me pose probleme
    0
  4. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Voici un exemple:

    http://www.cjoint.com/c/FBvr74sERZQ
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. max77maxou Messages postés 7 Statut Membre
     
    oui c'est tout a fais ca,
    sauf que sur mon classeur cela ne fonctionne pas,
    pour info :
    un classeur avec plusieur feuille
    sur l'userform que je veux que sa sois comme ca, est sur une feuille nommer "ANNEXE", ou se trouve en colonne A les noms de client, en colonne B le materiel,

    et qd je met ce code, cela ne fonctionne pas, toujour cette erreur de compilation
    0
    1. max77maxou Messages postés 7 Statut Membre
       
      une petite modif : je me suis tromper sur le code et sur ma reponse, car je disais que le"d1" me posais probleme, en faite c'est "dl" et non "d1", donc j'ai modifier, mais maintenant j'ai toujour ce probleme d'erreur mais c'est "UCase" dans la ligne :
      tmp = UCase (me.textbox3) & "*"
      0
  7. max77maxou Messages postés 7 Statut Membre
     
    je me suis renseigner sur ce fameux"UCase", donc c'est "Retourne une chaîne ou un caractère contenant la chaîne spécifiée convertie en majuscules.", le faite qu'il me posais probleme je l'ai retirer de mon code, ce qui fonctionne, youpi, ms un autre probleme se pose encore,
    comme je l'avais stipuler :
    textbox3 = client
    textbox4 = materiel
    listbox2 = liste de client
    listbox1 = liste de materiel

    en ouvrant mon userform, textbox3 et textbox4 sont vide, ok
    listbox2 est alimenter en client
    listbox1 est alimenter en materiel
    si je tape une lettre correspondante a un nom ma listbox2 se vide, et si je reviens en arriere la liste reviens ma c'est la liste de materiel,

    donc a l'ouverture de l'userform tout va bien, ms une fois la lettre taper ds le textbox3, les deux listbox et textbox sont indentique
    0
  8. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Tout est dans le remplissage des listBox.
    voici un exemple avec 2 listBox, avec les données dans 2 feuilles différentes. A toi de l'adapter à tes feuilles:

    http://www.cjoint.com/c/FBwfTYu8b3Q
    0
  9. max77maxou Messages postés 7 Statut Membre
     
    Bonjour à tous
    Mon problème de listbox et textbox identique est régler en faite fallait simplement dans userform initialise mettre : a= range("A2:A195").value et a1=("B2:B195").value
    Par contre après toute ces modif tout fonctionne c'est cool mais après l'avoir mis sur le pc a mon boulot j'ai une erreur 70 permission refuser donc je vais me pencher sur la question
    0
  10. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Si tu as des problèmes, voici une seconde approche. Se servir d'une seule listbox et d'un seul textbox pour afficher 2 listes à l'aide d'un CheckBox:

    http://www.cjoint.com/c/FBxkM3Un1RQ
    0
  11. max77maxou Messages postés 7 Statut Membre
     
    Bonjour a tous,
    oui cs_Le Pivert, effectivement cette méthode est bien aussi, ms finalement, tous va bien, j'avais le soucis du message d'erreur 70, et j'ai simplement copier le ficher de ma clé USB sur mon pc du boulot et cela fonctionne,
    en tout cas je te remercie
    et je met le code complet pour aider et intéresser d'autre personne

    Option Explicit
    Dim a, a1, d1, tmp, c
    
    Private Sub ListBox1_Click()
    If UserForm3.ListBox1.ListIndex = -1 Then Exit Sub
    TextBox4 = ListBox1.Value
    End Sub
    
    Private Sub ListBox2_Click()
    If UserForm3.ListBox2.ListIndex = -1 Then Exit Sub
    TextBox3 = ListBox2.Value
    End Sub
    
    Private Sub TextBox3_Change()
       Set d1 = CreateObject("Scripting.Dictionary")
       Me.ListBox2.Clear
       tmp = (Me.TextBox3) & "*"
       For Each c In a
         If (c) Like tmp Then d1(c) = ""
      Next c
      Me.ListBox2.List = d1.keys
      
    End Sub
    
    Private Sub TextBox4_Change()
       Set d1 = CreateObject("Scripting.Dictionary")
       Me.ListBox1.Clear
       tmp = (Me.TextBox4) & "*"
       For Each c In a1
         If (c) Like tmp Then d1(c) = ""
      Next c
      Me.ListBox1.List = d1.keys
    End Sub
    
    Private Sub UserForm_Initialize()
      a = Range("A2:A500").Value 'remplir la listbox
      Me.ListBox2.List = a
     a1 = Range("B2:B500").Value 'remplir la listbox
      Me.ListBox1.List = a1
    End Sub
    0