Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Userform cerca testo in tutti i fogli

Ultimo Aggiornamento: 26/01/2019 18:16
Post: 2
Registrato il: 21/01/2017
Città: ARTENA
Età: 52
Utente Junior
2016
OFFLINE
24/01/2019 11:42

Buongiorno a tutti e grazie a colui che molto probabilmente riderà sotto i baffi, nel caso li abbia.
Il fatto è il seguente; ho assemblato o meglio scopiazzato una userform la quale cerca un valore in tutti i fogli, restituisce l'indicazione di dove è il valore e ti ci porta sopra.
il fatto è che non ha delle variabili ossia se inserisco bordolese mi da tutte le celle che contengono bordolese, ma se inserisco bordolese 75 (per creare una ricerca più mirata non parte la ricerca.
Altra cosa è che individuata la cella di destinazione vorrei che si evidenziasse (in giallo) non che cambiasse il colore del fondo, per trovarla subito.
Grazie ancore se qualcuno vorrà aiutarmi, dato che sto impazzendo.
allego file alleggerito.
Post: 2.109
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
24/01/2019 13:31

ciao
dov'è bordolese 75 nel tuo documento ?



Domenico
Win 10 - Excel 2016
Post: 2
Registrato il: 21/01/2017
Città: ARTENA
Età: 52
Utente Junior
2016
OFFLINE
24/01/2019 13:50

Ciao, per esempio, la cella B11:

VNSBORDSTDE 750;TS-;MB-;VI- BORDOLESE ECOVA / CC.750 T.SUGH. MB

se io scrivo bordolese lui trova una serie di bordolesi,

se io scrivessi bordolese 75 (in realta CC.750)
lui non trova nulla

cioè non accetta gli spazzi e non è una ricerca intuitiva ma matematica ... mi sono espresso bene?

Post: 2.110
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
24/01/2019 16:25

ciao
si, ti sei espresso bene. Il problema risiede nella modalità di ricerca che la macro adotta, pertanto i tuoi "spazi" non vengono considerati come "qualsiasi cosa ci sia tra bordolese e 75", ma "bordolese spazio 75".

Prova ad utilizzare la seguente modifica:
(per quanto riguarda l'evidenziazione spiega meglio cosa vuoi, non ho capito)
saluti

Private Sub Cerca_Click()

    Dim i As Long
    Dim testo As String
    Dim a As Integer
    Dim x As Long
    Dim y As Long
    Dim uriga As Integer
    Dim ucolonna As Integer
    Dim mTxt As Variant
    Application.ScreenUpdating = False

    ListBox1.Clear
    testo = ""
    mTxt = Split(TextBox1, " ")
    For i = 0 To UBound(mTxt)
        testo = testo & "*" & mTxt(i)
    Next i
    testo = testo & "*"
    a = 0

    For i = 1 To Worksheets.Count

        With Worksheets(i).UsedRange
            uriga = .Rows.Count + .Row - 1
            ucolonna = .Columns.Count + .Column - 1
        End With

        For x = 1 To uriga
            For y = 1 To ucolonna
                If Worksheets(i).Cells(x, y) Like testo Then
                    ListBox1.AddItem Sheets(i).Name
                    ListBox1.List(a, 1) = Sheets(i).Cells(x, y).Row
                    ListBox1.List(a, 2) = Sheets(i).Cells(x, y).Column
                    ListBox1.List(a, 3) = Sheets(i).Cells(x, y).Value
                    a = a + 1
                End If
            Next y
        Next x
    Next i

    Application.ScreenUpdating = True

End Sub



[Modificato da dodo47 24/01/2019 16:27]
Domenico
Win 10 - Excel 2016
Post: 3
Registrato il: 21/01/2017
Città: ARTENA
Età: 52
Utente Junior
2016
OFFLINE
24/01/2019 16:36

Grazie Dodo47 per il tuo aiuto,
ma ho modificato la sub nell'userform e non trova nulla!
ossia il codice è:

Private Sub Cerca_Click()

Dim i As Long
Dim testo As String
Dim a As Integer
Dim x As Long
Dim y As Long
Dim uriga As Integer
Dim ucolonna As Integer
Dim mTxt As Variant
Application.ScreenUpdating = False

ListBox1.Clear
testo = ""
mTxt = Split(TextBox1, " ")
For i = 0 To UBound(mTxt)
testo = testo & "*" & mTxt(i)
Next i
testo = testo & "*"
a = 0

For i = 1 To Worksheets.Count

With Worksheets(i).UsedRange
uriga = .Rows.Count + .Row - 1
ucolonna = .Columns.Count + .Column - 1
End With

For x = 1 To uriga
For y = 1 To ucolonna
If Worksheets(i).Cells(x, y) Like testo Then
ListBox1.AddItem Sheets(i).Name
ListBox1.List(a, 1) = Sheets(i).Cells(x, y).Row
ListBox1.List(a, 2) = Sheets(i).Cells(x, y).Column
ListBox1.List(a, 3) = Sheets(i).Cells(x, y).Value
a = a + 1
End If
Next y
Next x
Next i

Application.ScreenUpdating = True

End Sub

Private Sub CommandButton1_Click()

ListBox1.Clear
TextBox1 = ""
TextBox1.SetFocus

End Sub

Private Sub Fine_Click()

Unload UsrCercaValori

End Sub

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

Dim a As Integer
Dim fog As String
Dim rig As Long
Dim col As Long

a = ListBox1.ListIndex
fog = ListBox1.List(a, 0)
rig = ListBox1.List(a, 1)
col = ListBox1.List(a, 2)
Sheets(fog).Activate
ActiveSheet.Cells(rig, col).Select
Cancel = True
Unload UsrCercaValori


End Sub

Private Sub ListBox2_Click()

End Sub

Private Sub UserForm_Initialize()

ListBox2.ColumnHeads = False
ListBox2.RowSource = ("XFA1:XFD1")

End Sub

-- non mi gira!
dove sbaglio?
Post: 4
Registrato il: 21/01/2017
Città: ARTENA
Età: 52
Utente Junior
2016
OFFLINE
24/01/2019 16:38

per quanto riguarda l'altro aspetto, quando doppio clic sul risultato all'interno della listbox, quindi mi porta nel foglio nella cella da me ricercata, vorrei evidenziarla (ho problemi con la vista). Grazie ancora
Post: 5
Registrato il: 21/01/2017
Città: ARTENA
Età: 52
Utente Junior
2016
OFFLINE
24/01/2019 16:50

Fermi tutti, evidentemente avevo commesso un errore, Funziona!
Grazie Dodo47! se mi risolvi di evidenziare la cella di destinazione io sto a posto... grazie ancora
Post: 2.111
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
24/01/2019 18:33

Re:
linolene, 24/01/2019 16.38:

per quanto riguarda l'altro aspetto, quando doppio clic sul risultato all'interno della listbox, quindi mi porta nel foglio nella cella da me ricercata, vorrei evidenziarla (ho problemi con la vista). Grazie ancora



Si, ma hai detto:
..."vorrei che si evidenziasse (in giallo) non che cambiasse il colore del fondo....

quindi cosa vuoi che avvega?, si deve colorare il testo in giallo?? Ma sarà ancon meno leggibile (a mio avviso)

saluti




[Modificato da dodo47 24/01/2019 18:34]
Domenico
Win 10 - Excel 2016
Post: 6
Registrato il: 21/01/2017
Città: ARTENA
Età: 52
Utente Junior
2016
OFFLINE
24/01/2019 19:03

chiarisco, io ho problemi di vista, quando clicco sulla riga dentro la ListBox vengo dirottato nella cella corrispondente. ora proprio perchè non ci vedo bene mi perdo la cella dove sono stato dirottato, in quanto poco visibile:
cosa si può fare per evidenziare questa cella? o riga!
in modo che subito la riconosco!
Grazie per la pazienza
Post: 2.112
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
24/01/2019 20:12

ciao
tu hai detto di non cambiare il colore di sfondo.

Quindi se escludiamo questo, oppure la bordatura dell'intera riga, non saprei come altro evidenziare la riga/celle.

Se aumentiamo il carattere, si vede meglio ma si rischia che il testo della cella di cui si aumenta il carattere, vada a capo, imbrogliando ancor più la faccenda.

Tieni presente una cosa: se optiamo per il colore di sfondo, prima si devono cancellare tutti i colori che eventualmente esistono nel foglio e poi si evidenzia la sola riga interessata che pertanto sarà l'unica colorata del foglio.

In ultimo si potrebbe rendere lampeggiante la cella....ma nel momento che il lampeggio smette, la perderesti di vista.

Tutto ciò premesso, ti suggerisco di dirmi tu in quale modo vuoi che la cella sia evidenziata (fai delle prove) e, una volta trovato il modo migliore per te, me lo dici e cerchiamo di risolvere.

Cari saluti.



[Modificato da dodo47 24/01/2019 20:20]
Domenico
Win 10 - Excel 2016
Post: 7
Registrato il: 21/01/2017
Città: ARTENA
Età: 52
Utente Junior
2016
OFFLINE
24/01/2019 20:44

eccoci, tu dici la bordatura della riga, attualmente la bordadutura

è solo della cella, se fosse tutta la riga diverrebbe certamente più
visibile.


ma che pensi tu di questa userform?
Post: 2.113
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
25/01/2019 15:41

Ciao
la user e i relativi codici sono ben fatti, poi dipende se uso che ne devi fare è consono alle tue necessità.

Prima di provare a risolvere la faccenda dell'evidenziazione ho necessità di sapere la reale struttura dei tuoi fogli.

Intanto, per facilitare il compito, è opportuno che tu trasformi la tabella del primo foglio in un range normale (quindi eliminare la tabella e lasciare i dati così come sono glia altri fogli).

Poi dovresti specificare se i vari fogli hanno una stessa struttura (cosa che non mi sembra).

Il tutto serve per individuare in ciascun foglio qual è l'ultima riga piena, in quanto, per evidenziare una determinata riga, prima è indispensabile togliere le precedenti bordature.

Spero di essermi spiegato.

saluti


Domenico
Win 10 - Excel 2016
Post: 8
Registrato il: 21/01/2017
Città: ARTENA
Età: 52
Utente Junior
2016
OFFLINE
25/01/2019 21:53

Buonasera Domenico,
il primo foglio è un estratto di vendite dell'anno precedente,
con il quale rispetto a nuovi listini mi baso per i prezzi nuovi,
ho seguito il tuo consiglio, ho tolto la formattazione tabella (mi è costato un casino, mi ha creato un foglio con di 1045600 righe 25 mega, comunque risolto); gl'altri otto fogli, sono tutti listini, fitti fitti ma non grandi. utilizzando il tasto cerca sul primo foglio mi ha risolto una ricerca da brivido. tu dimmi ed io faccio.

Post: 2.114
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
26/01/2019 10:04

ciao
ripeto: abbiamo la necessità di poter rilevare l'ultima riga con valori di ciascun foglio (qualsiasi sia la colonna).

Questo perchè, prima di bordare la riga interessata, bisogna togliere le precedenti bordature.

Comunque, facciamo una prova, vedi se ti sta bene l'allegato: ho apportato diverse modifiche ai codici ed aggiunto un evento sulla selezione dei fogli che cancella le bordature precedenti.

Saluti



Domenico
Win 10 - Excel 2016
Post: 9
Registrato il: 21/01/2017
Città: ARTENA
Età: 52
Utente Junior
2016
OFFLINE
26/01/2019 13:25

Buongiorno Domenico,
se ho capito bene:
la struttura e quella in foto,


L'ultima riga con valore di ciascun foglio sono:


foglio1 riga 1120

foglio2 riga 458

foglio3 riga 255

foglio4 riga 30

foglio5 riga 28

foglio6 riga 490

foglio7 in costruzione (come si fa?)

foglio8 riga 112

foglio9 riga 136

foglio10 riga 24

il file di esempio, immagino come ti aspettavi, non va.
Grazie ancora!
PS. ma vuoi che ti invio il mio file in un luogo sicuro? dati sensibili!

Post: 5.623
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
26/01/2019 15:56

Bordature Celle
Ciao, si potrebbe usare un ciclo Sheets.count per pulire i bordi, per passare tutti i fogli e lanciare

Cells.Borders.LineStyle = xlNone


non ha importanza la lunghezza delle righe, nel caso mentre si passano i fogli si potrebbe anche ricavare la lunghezza delle righe.

Ciao By Sal [SM=x423051]

se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 2.116
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
26/01/2019 16:25

Re:
linolene, 26/01/2019 13.25:


il file di esempio, immagino come ti aspettavi, non va.



No, non me lo aspettavo anche perchè a me funziona perfettamente.

cosa non va?

( x By Sal: è quello che ho messo nel mio codice:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Cells.Borders.LineStyle = xlNone
End Sub
)


[Modificato da dodo47 26/01/2019 16:28]
Domenico
Win 10 - Excel 2016
Post: 10
Registrato il: 21/01/2017
Città: ARTENA
Età: 52
Utente Junior
2016
OFFLINE
26/01/2019 18:16

è incredibile!
il tuo file è giusto la bordatura rossa è a prova di ceco,

ho inserito come da jpg, ma non va!


provo a smanettare, qualcuno dice scacherare!
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 20:23. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com