Condividi:        

cerca nomi

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Re: cerca nomi

Postdi trittico69 » 07/07/12 15:36

Codice: Seleziona tutto
Private Sub CommandButton1_Click()
'vedi http://www.pc-facile.com/forum/viewtopic.php?f=26&t=95607
'opzione ricerca per parola PIU' CONVERSIONE LETTERE
'CheckBox3 per eventuale riepilogo su Form2; vedi modifiche marcate >>
 '
Dim I As Long
'>>
NextUB = UBound(myListREs, 2) + 1
ReDim Preserve myListREs(1 To 5, 1 To NextUB)

'
If myPrimo Is Nothing Then myCellFound = 0: Set myCorr = Nothing
'
RAvvia:
userform1.Caption = "CERCA in cella"
TextBox1.SetFocus
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1.Text)
'
myArea = "AB3:AB100, A3:B2000"
If Not myCorr Is Nothing Then GoTo CkCmt
myFlag = 0
For Each myCell In ActiveSheet.Range(myArea)
If myCell.Value <> "" Then
    If CheckBox2.Value And ComPar(ChrConv(myCell.Value), (TextBox1.Text)) Then myFlag = True
    If CheckBox2.Value = False And Len(UCase(ChrConv(myCell.Value))) > Len(Replace(UCase(ChrConv(myCell.Value)), Trim(UCase(ChrConv(TextBox1.Text))), "")) Then myFlag = True
aaa = myCell.Value
    If myFlag = True Then
        CellFound = CellFound + 1
        myFlag = 0
        If CellFound > myCellFound Then
            Set myPrimo = myCell: myK1 = 0
            myCellFound = myCellFound + 1
            userform1.Caption = "TROVATO in cella"
            myCell.Select
'>>
            If Me.CheckBox3 = True Then CompilaLR1 (Selection.Row)
            Exit Sub
        End If
    End If
End If
Next myCell

GoTo CkCmt

'
CkCmt:
Set myCorr = ActiveCell
userform1.Caption = "CERCA in commento"
If myPrimo Is Nothing Then Set myPrimo = ActiveCell
If myCorr Is Nothing Then Set myCorr = Range("A1")
'myK1 = 0
For I = myK1 + 1 To ActiveSheet.Comments.Count
    Set Kmt = ActiveSheet.Comments(I)
    If Not Application.Intersect(Kmt.Parent, Range(myArea)) Is Nothing Then
        myFlag = 0
        If CheckBox2.Value = True And ComPar(ChrConv(Kmt.Text), ChrConv(TextBox1.Text)) Then myFlag = True
        If CheckBox2.Value = False And Len(UCase(ChrConv(Kmt.Text))) > Len(Replace(UCase(ChrConv(Kmt.Text)), Trim(UCase(ChrConv(TextBox1.Text))), "")) Then myFlag = True
        If myFlag = True Then
            myK1 = I: Kmt.Parent.Select
            userform1.Caption = "TROVATO in commento"
'>>
            If Me.CheckBox3 = True Then CompilaLR1 (Selection.Row)
            Exit Sub
        End If
    End If
Next
'
FineKmt:
userform1.Caption = "------> FINE RICERCA"
'>>
If myListI > 0 Then
    ReDim Preserve myListREs(1 To 5, 1 To myListI)
    UserForm2.Show
End If
Set myPrimo = Nothing ': GoTo RAvvia

End Sub
Non mi compare la userfrom2 spuntando checkbox3
il codice lo modificato come sopra..forse sbaglio..
trittico69
Utente Senior
 
Post: 497
Iscritto il: 16/08/09 18:41

Sponsor
 

Re: cerca nomi

Postdi Anthony47 » 08/07/12 01:14

Humm.... Nella mia implementazione la seconda userform compare DOPO la normale visualizzazione di ogni valore trovato; cioe' e' un riepilogo dopo che si e' eseguita la normale ricerca.
Tu cosa ti aspettavi, invece?

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: cerca nomi

Postdi trittico69 » 08/07/12 08:42

nel momento che scrivo il nome da cercare, spunto la casella e premo enter mi deve copmarire la userfrom2 con all'interno tutti i nominativi che contengono quella paola cercata compreso le due celle successive
trittico69
Utente Senior
 
Post: 497
Iscritto il: 16/08/09 18:41

Re: cerca nomi

Postdi Anthony47 » 08/07/12 11:09

Evvai con la modifica della modifica della...
Sostituisci TUTTA la CommandButton1_Click con questa:
Codice: Seleziona tutto
Private Sub CommandButton1_Click()
'vedi http://www.pc-facile.com/forum/viewtopic.php?f=26&t=95607
'opzione ricerca per parola PIU' CONVERSIONE LETTERE
'CheckBox3 per eventuale riepilogo su Form2; vedi modifiche marcate >>
'Se ckeckbox3, subito userform2 di riepilogo 08-07-2012 V.12
'
Dim I As Long
'>>
ReGo:
NextUB = UBound(myListREs, 2) + 1
ReDim Preserve myListREs(1 To 5, 1 To NextUB)
'
If myPrimo Is Nothing Then myCellFound = 0: Set myCorr = Nothing
'
RAvvia:
userform1.Caption = "CERCA in cella"
TextBox1.SetFocus
TextBox1.SelStart = 0
TextBox1.SelLength = Len(TextBox1.Text)
'
myArea = "AB3:AB100, A3:B2000"
If Not myCorr Is Nothing Then GoTo CkCmt
myFlag = 0
For Each myCell In ActiveSheet.Range(myArea)
If myCell.Value <> "" Then
    If CheckBox2.Value And ComPar(ChrConv(myCell.Value), TextBox1.Text) Then myFlag = True
    If CheckBox2.Value = False And Len(UCase(ChrConv(myCell.Value))) > Len(Replace(UCase(ChrConv(myCell.Value)), Trim(UCase(ChrConv(TextBox1.Text))), "")) Then myFlag = True
aaa = myCell.Value
    If myFlag = True Then
        CellFound = CellFound + 1
        myFlag = 0
        If CellFound > myCellFound Then
            Set myPrimo = myCell: myK1 = 0
            myCellFound = myCellFound + 1
            userform1.Caption = "TROVATO in cella"
            myCell.Select
'>>
            If Me.CheckBox3 = True Then CompilaLR1 (Selection.Row)
            '>>>>
            If Me.CheckBox3 = False Then
                Exit Sub
            Else
                NextUB = UBound(myListREs, 2) + 1
                ReDim Preserve myListREs(1 To 5, 1 To NextUB)
            End If
            '<<<<
        End If
    End If
End If
Next myCell

GoTo CkCmt

'
CkCmt:
Set myCorr = ActiveCell
userform1.Caption = "CERCA in commento"
If myPrimo Is Nothing Then Set myPrimo = ActiveCell
If myCorr Is Nothing Then Set myCorr = Range("A1")
'myK1 = 0
For I = myK1 + 1 To ActiveSheet.Comments.Count
    Set kmt = ActiveSheet.Comments(I)
    If Not Application.Intersect(kmt.Parent, Range(myArea)) Is Nothing Then
        myFlag = 0
        If CheckBox2.Value = True And ComPar(ChrConv(Replace(kmt.Text, Chr(10), Chr(32))), ChrConv(TextBox1.Text)) Then myFlag = True
        If CheckBox2.Value = False And Len(UCase(ChrConv(kmt.Text))) > Len(Replace(UCase(ChrConv(kmt.Text)), Trim(UCase(ChrConv(TextBox1.Text))), "")) Then myFlag = True
        If myFlag = True Then
            myK1 = I: kmt.Parent.Select
            userform1.Caption = "TROVATO in commento"
'>>
            If Me.CheckBox3 = True Then CompilaLR1 (Selection.Row)
            '>>>>
            If Me.CheckBox3 = False Then
                Exit Sub
            Else
                NextUB = UBound(myListREs, 2) + 1
                ReDim Preserve myListREs(1 To 5, 1 To NextUB)
            End If
            '<<<<
        End If
    End If
Next
'
FineKmt:
userform1.Caption = "------> FINE RICERCA"
'>>
If myListI > 0 Then
'    ReDim Preserve myListREs(1 To 5, 1 To myListI)
    UserForm2.Show
End If
Set myPrimo = Nothing ': GoTo RAvvia
ReDim myListREs(1 To 5, 1 To 1): myListI = 0
End Sub


Ciao...
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: cerca nomi

Postdi trittico69 » 08/07/12 21:50

la user from due adesso compare ma compare vuota...
nella userfrom2 ho messo una casella di riepilogo ho fatto bene?
trittico69
Utente Senior
 
Post: 497
Iscritto il: 16/08/09 18:41

Re: cerca nomi

Postdi Anthony47 » 08/07/12 23:40

Si, la casella di riepilogo (listbox) e' l' oggetto che serve.

Prova sul file originale modificato da me (mi sono rassegnato a inviarlo :D )

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: cerca nomi

Postdi trittico69 » 09/07/12 08:00

ok ho usato la versione 2 anche se non ho capito la diferenza tra le due ma ho capito perchè non mi funzionava mancava il modulo5...ma non mi sembra che mi avevi detto di crearlo...comunque grazie credo che abbiamo finito...lo provo a lavoro per un po di giorni e se c'è qulcosa che non va ,ma non credo, ti ricontatto.
trittico69
Utente Senior
 
Post: 497
Iscritto il: 16/08/09 18:41

Re: cerca nomi

Postdi trittico69 » 09/07/12 08:38

nel foglio usciti cerca solo nala colonna A dovrebbe cercare anche nelle colonne E-I-J mentre nel foglio archivio va bene
trittico69
Utente Senior
 
Post: 497
Iscritto il: 16/08/09 18:41

Re: cerca nomi

Postdi Anthony47 » 09/07/12 13:48

Modulo5 non c' entra con la soluzione, e' una macro che mi serviva per un test e la puoi cancellare.

Versione2 seleziona sul foglio la ricerca che viene selezionata nella listbox di userform2 (e' una cosa che non avevi chiesto); Versione1 non lo fa.

nel foglio usciti cerca solo nala colonna A dovrebbe cercare anche nelle colonne E-I-J mentre nel foglio archivio va bene
In ambedue i fogli la ricerca e' effettuata negli intervalli AB3:AB100 e A3:B2000; sulla userform2 vengono visualizzate le colonne
-su Archivio: "A", "B", "C", "D" oppure "AB", "AC", "AD"
-su Usciti: "A", "E", "H", "I", "J" oppure "AB", "AC", "AD"
Fare la ricerca in E-I-J non mi sembra fosse mai stato richiesto; mi sono perso qualcosa?

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: cerca nomi

Postdi trittico69 » 09/07/12 18:53

scusami hai ragione era una modifica fatta da me solo che poi non c'èra più ovviamente ma adesso ho risolto.
trittico69
Utente Senior
 
Post: 497
Iscritto il: 16/08/09 18:41

Re: cerca nomi

Postdi trittico69 » 09/07/12 19:36

comunque ho notato che la ricerca dei nomi è un po rallentata in confronto a prima si può fare qualcosa o deve rimanere così?
trittico69
Utente Senior
 
Post: 497
Iscritto il: 16/08/09 18:41

Re: cerca nomi

Postdi Anthony47 » 10/07/12 00:27

Immagino che la ricerca sia rallentata quando chiedi di avere il riepilogo su userform2, perche' deve cercare tutte le occorrenze...
Un piccolo miglioramento potrai averlo inserendo ScreenUpdating = False/True nella Sub CommandButton1_Click.
-Aggiungere in testa:
Codice: Seleziona tutto
Dim I As Long   'Esistente
If Me.CheckBox3 = True Then Application.ScreenUpdating = False '<<AGGIUNGERE

-aggiungere verso la fine
Codice: Seleziona tutto
userform1.Caption = "------> FINE RICERCA"   'Esistente
Application.ScreenUpdating = True    '<<AGGIUNGERE


Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: cerca nomi

Postdi trittico69 » 10/07/12 07:27

no la ricerca è rallentata cercando semplicemente il nome con userfrom1
trittico69
Utente Senior
 
Post: 497
Iscritto il: 16/08/09 18:41

Re: cerca nomi

Postdi Anthony47 » 11/07/12 00:51

Ho popolato tutta l' area usata dalla ricerca (AB3:AB100, A3:B2000) con valori randomici (ogni cella con 4 parole scelte da un elenco di 30).
La ricerca senza il checkbox3 richiede un battito di ciglia; la ricerca con checkbox3 richiede 7 secondi restituendo quasi 500 risultati.

Tu hai tempi decisamente diversi?
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: cerca nomi

Postdi trittico69 » 11/07/12 08:04

allora forse è il mio pc un po lento...se digito una parola corta ad esempio "A" e clicco enter più volte velocemente la ricerca è velocissima ma se digito ad esempio tre lettere allora va un po lento ma pazienza se non si può fare nulla arrancio così...poi volevo dirti a volte capita che se scrivo una parola e batto enter la userfrom sparisce e va a mettersi dietro il foglio excel si può risolvere? e poi a volte ho notato che salta delle parole cercate a volte le vede e a volte no ma capita di rado....può essere?
trittico69
Utente Senior
 
Post: 497
Iscritto il: 16/08/09 18:41

Re: cerca nomi

Postdi trittico69 » 15/07/12 22:15

anthoni non mi rispondi più?
trittico69
Utente Senior
 
Post: 497
Iscritto il: 16/08/09 18:41

Re: cerca nomi

Postdi Anthony47 » 18/07/12 01:42

Non "ti" ho abbandonato, ho solo trascurato per parecchi giorni tutto il forum per per impegni superiori legati alle mia vacanze :D
Dopo la tua segnalazione ho inserito all' interno delle celle AB3:AB100 e A3:B2000 200 volte la stringa "pippo uno due trecentotrenta"; cercando successivamente una sottostringa o una parola di questa stringa ottengo sistematicamente un insieme di 200 celle; se hai risultati "ballerini" e' possibile che hai dei dati che sono diversi da quelli che sembrano.
Se non ne vieni fuori prova a pubblicare un file dove ottieni dati inesatti.

In quanto alla velocita' direi che per come si e' sviluppata la macro e' gia' un miracolo che funziona, certamente cercare le voci in fondo all' elenco e' piu' lento che non cercarle in testa...

Per la form che va in secondo piano non sono riuscito a replicare il fenomeno, enter continua a cercare il valore successivo anche dopo un migliaio di battute.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: cerca nomi

Postdi trittico69 » 15/06/17 12:12

Option Explicit
Public sh1 As Worksheet, sh2 As Worksheet, x As Long, y As Long, z As Long
salve , riprendo il discorso dopo tempo...il codice sopra all'improvviso mi da errore irrimediabile.
forse perchè l'amministratore del pc mi avrà messo un excel di diversa versione?
trittico69
Utente Senior
 
Post: 497
Iscritto il: 16/08/09 18:41

Re: cerca nomi

Postdi Anthony47 » 16/06/17 19:01

Scusa, tu ti aspetti che noi ci spulciamo le 56 risposte precedenti per cercare di farci un'idea del contesto in cui qualcosa di non descritto e' successo e quindi sparare una soluzione? :evil:

Per cominciare elenca il codice completo della macro di cui stiamo parlando, fai uno screenshot dell'errore che ti succede (e pubblicalo), descrivi quale e' il tuo attuale ambiente operativo (Sistema Operativo, Aggiornamento di Office, se versione 32 o 64 bit.
Per le istruzioni su come allegare una immagine:
viewtopic.php?f=26&t=103893&p=605488#p605488

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: cerca nomi

Postdi trittico69 » 18/06/17 13:08

Mi esce microsoft visual basic,applications editing, errore di compilazione-errore di automazione-errore irreparabile.
Versione excel 2013
Windows 7 32bit
Mi evidenzia solo
sh1 As Worksheet
e nella tabella a sinistra “proprietà modulo mi evidenzia “name-archivio”
Clliccando sulo punto interrogative mi esce:
Automation error (Error 440)
office 365 dev account
When you access Automation objects, specific types of errors can occur. This error has the following possible causes and solutions:
• An error occurred while executing a method or getting or setting aproperty of anobject variable. The error was reported by the application that created the object.
Check the properties of the Err object to determine the source and nature of the error. Also try using the On Error Resume Next statement immediately before the accessing statement, and then check for errors immediately following the accessing statement.
• The Office add-in that you are trying to use has been disabled by your System Administrator.
For additional information, select the item in question and press F1 (in Windows) or HELP (on the Macintosh).

se vuoi ti allego anche il codice completo ma è lunghissimo
ciao e scusa se sono partito in quarta.
trittico69
Utente Senior
 
Post: 497
Iscritto il: 16/08/09 18:41

PrecedenteProssimo

Torna a Applicazioni Office Windows


Topic correlati a "cerca nomi":


Chi c’è in linea

Visitano il forum: Nessuno e 43 ospiti