Cautare in list

Informatii despre cum se utilizeaza Microsoft Excel 2003. Calcule, Formule, Functii, Tabele pivot, Analiza datelor, etc
Dr. Cloud
Mesaje: 3327
Membru din: Mar Oct 02, 2012 11:19 am

Re: Cautare in list

Mesaj de Dr. Cloud » Vin Apr 02, 2010 11:57 am

Lucian a creat lista in Sheet1 (cea cu fundal Galben).
In codul macro a facut referire la acel range: For Each oneCell In Range(Range("d1"), Range("d10")
Poti sa iti faci o lista separata, dar va trebui sa intrii in VBE si sa modific range-ul.

Avatar utilizator
cristi_lazarro
Mesaje: 841
Membru din: Mie Noi 04, 2009 5:57 pm

Re: Cautare in list

Mesaj de cristi_lazarro » Vin Apr 02, 2010 12:09 pm

pai lista mea tre sa fie undeva ascunsa iar eu trebuie sa o pot apela in ce pagina vreau. si acel macro sa ma ajute sa introduc mai rapid o valoare din lista, fara a o cauta eu la pozitia corespunzatoare ci, sa o caute in fct de prima litera.

eu nu inteleg unde imi creez acea lista ascunsa

:(

Dr.Windows
Moderator
Moderator
Mesaje: 4570
Membru din: Vin Iul 31, 2009 7:32 am

Re: Cautare in list

Mesaj de Dr.Windows » Vin Apr 02, 2010 12:26 pm

Lista o pui unde vrei tu.. .chiar si intr-o foaie ascunsa... si atunci exact ca si in cazul "Data Validation" pentru liste din alte foi trebuie folosit un NamedRange.

Astfel in codul VBA poate fi inlocuita linia

Cod: Selectaţi tot

For Each oneCell In Range(Range("d1"), Range("d10").End(xlUp))
cu asta:

Cod: Selectaţi tot

For Each oneCell In Range("rngOptiuni")
Si cum spuneam aceasta FORMA de "cautare incrementala" poate fi folosita pentru a DUBLA un Data Validation nu pentru inlocuirea lui...

costel.vascan
Mesaje: 190
Membru din: Mar Mar 23, 2010 7:02 pm

Re: Cautare in list

Mesaj de costel.vascan » Mie Iun 23, 2010 8:25 pm

Utilizez aceasta "Cautare Incrementala" si este super ok.

Va rog, daca este posibil, sa dezvoltati un pic codul VBA pentru a putea face si urmatorul lucru:

La momentul cand esti, de exemplu, pozitionat pe o celula din range-ul "Destinatie1" sa se incarce cu CTRL I lista din range-ul "Sursa1", cand esti pe o celula din "Destinatie2" sa se incarce lista din "Sursa2" s.a.m.d.

Multumesc!

Cu respect,

Dr.Windows
Moderator
Moderator
Mesaje: 4570
Membru din: Vin Iul 31, 2009 7:32 am

Re: Cautare in list

Mesaj de Dr.Windows » Mie Iun 23, 2010 10:15 pm

"Pronto!"... sau "Presto!"?... :lol:

Ia vezi daca fisierul atasat este ok... nu este un cod foarte optimizat, dar cred ca important este in primul rand sa-si faca treaba... ;)

Acum la combinatia "magica" CTRL+I, codul mai intai face "detactarea" daca in celula respectiva exista Data Validation de tip Lista si apoi incarca datele din range-ul definit acolo - indiferent daca este "named range" dau definit prin "referinte" (de ex. $A$1:$A$10) - cum de altfel am si lasat in zona "albastra" din exemplul atasat sa ia doar 2 randuri din cele 3 ale range-ului...

Daca in celula nu este definita Data Validation de tip List codul iese fara sa mai faca nimic...

Iar modificarile au fost "minore":

- cea mai mare parte a fost "introducerea detectiei pentru Data Validation":

Cod: Selectaţi tot

Sub IncrementalSearch()
    Set myCollection = New Collection
    'detectare mod "data validation"
    nDVType = 0
    On Error Resume Next
    nDVType = ActiveCell.Validation.Type
    On Error GoTo 0
    If nDVType = 3 Then  '3=List
        cRange = Mid(ActiveCell.Validation.Formula1, 2, Len(ActiveCell.Validation.Formula1))
        If Len(cRange) > 0 Then
            LoadList (cRange)
        Else
            myCollection.Add Item:="Celula nu foloseste data validation", key:="Celula nu foloseste data validation"
        End If
    Else
        Exit Sub
    End If
    
    UserForm1.TextBox1.Value = ""
    UserForm1.Label1.Caption = ""
    UserForm1.TextBox1.SetFocus
    UserForm1.Show
End Sub
dupa cum se vede doar putin in partea de inceput pentru a detecta "rangeul" si apoi modificarea functiei LoadList pentru a incarca datele din range-ul trimis ca parametru:

Cod: Selectaţi tot

Sub LoadList(ByVal cDVRange As String)
    Dim oneCell As Range
    Dim oneString As Variant
     
    For Each oneCell In Range(cDVRange)
        On Error Resume Next
            myCollection.Add Item:=oneCell.Value, key:=oneCell.Value
        On Error GoTo 0
    Next oneCell
     
    With UserForm1.ListBox1
        For Each oneString In myCollection
            .AddItem oneString
        Next oneString
    End With

End Sub
Asa ca acum cred ca ai o "cautare incrementala" suficient de generica... si sper sa foloseasca si altora...
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

costel.vascan
Mesaje: 190
Membru din: Mar Mar 23, 2010 7:02 pm

Re: Cautare in list

Mesaj de costel.vascan » Vin Iun 25, 2010 1:09 pm

E parfum!

Multumesc frumos!

Cu respect,

Dr.Windows
Moderator
Moderator
Mesaje: 4570
Membru din: Vin Iul 31, 2009 7:32 am

Re: Cautare in list

Mesaj de Dr.Windows » Vin Iun 25, 2010 3:55 pm

Si ca sa fie si mai frumos... iata si aceeasi versiune de fisier de mai sus (aproape) dar "ridicata" la rangul de "add-in" - adica o data adaugata in lista de Add-in-uri Excel functioneaza in ORICE foaie Excel (testata pe Excel 2003/2007).

Fata de "versiunea" anterioara apar mici imbunatatiri:
- selectia din lista (si returnarea valorii in celula activa) se poate face si cu click dublu pe elementele din lista
- valoarea selectata se returneaza si daca este ceva selectat in lista si se apasa butonul Exit

AVTERTIZARE: Pentru ca foloseste combinatia CTRL+I se va pierde functionalitatea de formatare font "Italic" folosind tastatura... asa ca daca vreti fonturi italice folosind CTRL+I nu uitati sa dezactivati acest add-in.
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

adof
Mesaje: 466
Membru din: Mie Iul 14, 2010 12:42 pm
Localitate: Sibiu

Re: Cautare in list

Mesaj de adof » Mar Aug 17, 2010 10:33 pm

sal
cum se adauga in lista de ad-in ?

mrlpls
Moderator
Moderator
Mesaje: 404
Membru din: Mie Dec 08, 2010 10:50 pm

Re: Cautare in list

Mesaj de mrlpls » Mar Mar 15, 2011 11:50 am

după ce dezarhivezi fişierul de mai sus, deschizi un fişier excel, din meniul "instrumente" alegi opţiunea "Programe de completare", se deschide fereastra "Componente incluse la cerere", apeşi tab-ul "Răsfoire" selectezi din locaţia unde ai dezarhivat mai devreme şi apoi OK.

Adică Tools - Add-Ins şi din meniul care apare apeşi pe Browse şi cauţi add-inul dorit.
Ultima oară modificat Mar Mar 15, 2011 12:03 pm de către Anonymous, modificat 1 dată în total.
Motiv: Adaugare text pentru versiunea în EN

gelu.raducanu
Mesaje: 7
Membru din: Joi Sep 23, 2010 12:53 pm

Re: Cautare in list

Mesaj de gelu.raducanu » Lun Aug 29, 2011 8:40 pm

Buna seara.

Atasez fisierul IncrementalSearch in care am modificat un pic lista.
Ce trebuie sa modific in cod asa incat cautarea sa fie si mai generala; adica daca dau cautare dupa ANA, sa imi apara ori de cate ori exista in lista ANA(eu am pus de doua ori) si sa imi arate si alta combinatie de litere in care ANA apare nu neaparat la inceputul cuvantului(de ex:MAMA ANA).

Multumesc frumos.
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

Scrie răspuns

Înapoi la “Intrebari despre Excel 2003”