Condividi:        

Search matricole

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

Search matricole

Postdi zanatta77 » 24/06/13 21:59

Ciao.
Sto cercando di creare una cartella di lavoro con Excel con all'interno 13 fogli e un Form.
Il primo foglio denominato INDICE i restanti 12 fogli sono i mesi dell'anno denominati (gennaio,febbraio,marzo,ecc.ecc), il Form denominato Viacard
Nel primo Foglio "INDICE" all'interno del Range("B12") viene scritta una matricola, quello che vorrei facesse è semplicemente controllare se esiste all'interno dei 12fogli sopra descritti nella medesima posizione che va da Range("G6") al Range("G300") la matricola inserita in caso positivo avvenga Viacard.show in caso negativo un MsgBox"Matricola non inserita nel database".
Nel caso rintracciasse la matricola inserita una sola volta per tutti e dodici i fogli dovrebbe copiare il contenuto dei seguenti Range da ("B") a ("Q") all'interno del Form.
Esempio; se la matricola inserita fosse 98789 in INDICE.Range("B12") e in gennaio.Range("G13") si rilevasse la presenza della matricola 98789, prima di tutto deve avvenire l'uscita del Form Viacard con al suo interno riportato tutto il contenuto di gennaio.Range("B13"As Range "Q13"). Se la matricola inserita fosse presente in più fogli deve avvenire sempre la stessa cosa in base dove viene rintracciata, quindi con all'interno del Form più righe che riportano i dati.

Non riesco a capire cosa mettere nel Form come controllo per riportarmi i dati da "B" a "Q" una Label,casella di testo, riepilogo o cosa???
Inserisco all'interno del code quello che sono riuscito ad abbozzare finora,giusto per dare un idea di cosa vorrei fare.
Grazie
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("B12") = gennaio.Range("G6") Then
    Viacard.Show
Else If Range("B12") = ("") Then
    MsgBox"Prego inserisca una matricola per avere lo storico"
    End If
End Sub












Windows 7 e office 2010
Windows 8
Office 2010
Avatar utente
zanatta77
Utente Senior
 
Post: 127
Iscritto il: 01/12/12 16:12

Sponsor
 

Re: Search matricole

Postdi scossa » 24/06/13 22:20

zanatta77 ha scritto:Ciao.
Sto cercando di creare una cartella di lavoro con Excel con all'interno 13 fogli e un Form.


Tu hai già il file pronto, non puoi pretendere che noi, per aiutarti, si debba realizzarne uno ex-novo sulla base della tua sommaria descrizione, col rischio di fraintendere le tue necessità.
Quindi se alleghi il tuo file, privo di dati sensibili, sarà più facile ottenere un aiuto.
Bye!
scossa

Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)
Avatar utente
scossa
Utente Senior
 
Post: 427
Iscritto il: 01/04/12 16:40
Località: Provincia di Verona

Re: Search matricole

Postdi zanatta77 » 25/06/13 06:21

Inserisco come gentilmente suggerito l'URL del file in questione
http://www.filedropper.com/prototipo
Grazie

Windows 7 e Office 2010
Windows 8
Office 2010
Avatar utente
zanatta77
Utente Senior
 
Post: 127
Iscritto il: 01/12/12 16:12

Re: Search matricole

Postdi Flash30005 » 25/06/13 09:29

Secondo me ti stai complicando la vita
perché potresti dedicare un foglio nuovo chiamato ad esempio Report nel quale inserire i dati filtrati
comunque una macro che compila il form da te desiderato potrebbe essere questa
Codice: Seleziona tutto
Public RR, FF, Tr As Integer
Private Sub Worksheet_Change(ByVal Target As Range)
Tr = 0
ContaM = 1
For FF = 1 To Worksheets.Count
    If Worksheets(FF).Name <> "INDICE" Then
        For RR = 6 To Worksheets(FF).Range("G" & Rows.Count).End(xlUp).Row
            If Worksheets("INDICE").Range("B12") = Worksheets(FF).Range("G" & RR) Then
                Tr = 1
Select Case Worksheets(FF).Name
Case "GENNAIO"
Gennaio
Case "FEBBRAIO"
Febbraio
Case "MARZO"
Marzo
Case "APRILE"
Aprile
Case "MAGGIO"
Maggio
Case "GIUGNO"
Giugno
Case "LUGLIO"
Luglio
Case "AGOSTO"
Agosto
Case "SETTEMBRE"
Settembre
Case "OTTOBRE"
Ottobre
Case "NOVEMBRE"
Novembre
Case "DICEMBRE"
Dicembre
End Select
            End If
        Next RR
    End If
Next FF
    If Tr = 1 Then Viacard.Show
End Sub

Sub Gennaio()
Viacard.TextBox1 = Worksheets(FF).Name
Viacard.TextBox2 = Worksheets(FF).Range("B" & RR).Value
Viacard.TextBox3 = Worksheets(FF).Range("C" & RR).Value
Viacard.TextBox4 = Worksheets(FF).Range("D" & RR).Value
Viacard.TextBox5 = Worksheets(FF).Range("E" & RR).Value
Viacard.TextBox6 = Worksheets(FF).Range("F" & RR).Value
Viacard.TextBox7 = Worksheets(FF).Range("G" & RR).Value
Viacard.TextBox8 = Worksheets(FF).Range("H" & RR).Value
Viacard.TextBox9 = Worksheets(FF).Range("I" & RR).Value
Viacard.TextBox10 = Worksheets(FF).Range("J" & RR).Value
Viacard.TextBox11 = Worksheets(FF).Range("K" & RR).Value
Viacard.TextBox12 = Worksheets(FF).Range("L" & RR).Value
Viacard.TextBox13 = Worksheets(FF).Range("M" & RR).Value
Viacard.TextBox14 = Worksheets(FF).Range("N" & RR).Value
Viacard.TextBox15 = Worksheets(FF).Range("O" & RR).Value
Viacard.TextBox16 = Worksheets(FF).Range("P" & RR).Value
Viacard.TextBox17 = Worksheets(FF).Range("Q" & RR).Value
End Sub
Sub Febbraio()

End Sub
Sub Marzo()

End Sub
Sub Aprile()

End Sub
Sub Maggio()

End Sub
Sub Giugno()

End Sub
Sub Luglio()

End Sub
Sub Agosto()

End Sub
Sub Settembre()

End Sub
Sub Ottobre()

End Sub
Sub Novembre()

End Sub
Sub Dicembre()

End Sub


Gli altri mesi sono da compilare copiando Gennaio e cambiando il numero indicativo del TextBox (che purtroppo non è adatto a lavorare con le variabili)

Allego questo file con il form riportante le 204 caselle testo

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Search matricole

Postdi zanatta77 » 25/06/13 18:58

Ciao Flash
E' esattamente quello che volevo.
Uniche migliorie da fare sono le seguenti; ho visto che tu hai dedicato una sola riga per mese di TextBox, ma nel mio caso la matricola nell'arco del/i mese/i potrebbe essere scritta più volte, in quanto trattasi di viacard a scalare con un tot. di credito, quindi mi occorrerebbero tante righe quante le volte che viene rintracciata la matricola.
Esempio, se nell'arco del mese di maggio è stata scritta 14 vote nel form dovrebbe riportarmi tutti i 14 movimenti della viacard.
Simultaneamente deve controllare in tutti e docici i mesi la presenza in "B12" della matricola inserita e riportare il tutto nel Form, quindi ipoteticamente potremmo aver bisogno anche di 200 righe a disposizione per scrivere tutti i movimenti.
Penso che i TextBox non vadano bene per un lavoro simile, ci vorrebbe qualcosa che si crei in base al riscontro delle matricole rintracciate, in quanto potrebbero essere poche come potrebbero essere tante, deve farmi lo storico delle matricole desiderate.
Windows 8
Office 2010
Avatar utente
zanatta77
Utente Senior
 
Post: 127
Iscritto il: 01/12/12 16:12

Re: Search matricole

Postdi Flash30005 » 25/06/13 22:13

Ripeto: secondo me, devi abbandonare l'idea del Form e devi abbracciare il consiglio di un foglio aggiuntivo nel quale riporterai (lo farà la macro) tutti i record che ci saranno per ogni mese e per tutti i mesi.
Se sei d'accordo dai una conferma

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Search matricole

Postdi zanatta77 » 26/06/13 06:23

Ok abbandoniamo il Form, per il Foglio aggiuntivo da creare è possibile crearlo solo avendo esito positivo di rintracciare una o più matricole, riportando il tutto come detto, in caso contrario che esca un MsgBox del tipo "Questa matricola non risulta inserita" e quindi con esito negativo nessun nuovo foglio.
Grazie ciao
Windows 8
Office 2010
Avatar utente
zanatta77
Utente Senior
 
Post: 127
Iscritto il: 01/12/12 16:12

Re: Search matricole

Postdi Flash30005 » 26/06/13 09:29

Ok allora aggiungi un foglio di lavoro e lo denomini "REPORT" (tutto maiuscolo)
nel vba del foglio indice (dove avevi la precedente macro) elimini tutto il codice preesistente e lo sostituisci con questo
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$B$12" Then Exit Sub
Compila
End Sub

in un modulo invece incolli questo codice
Codice: Seleziona tutto
Sub Compila()
Tr = 0
Worksheets("Report").Cells.Clear
For FF = 1 To Worksheets.Count
    If Worksheets(FF).Name <> "INDICE" And Worksheets(FF).Name <> "REPORT" Then
        For RR = 6 To Worksheets(FF).Range("G" & Rows.Count).End(xlUp).Row
            If Worksheets("INDICE").Range("B12") = Worksheets(FF).Range("G" & RR) Then
                Tr = Tr + 1
                If Tr = 1 Then
                Sheets(FF).Range("B4:Q5").Copy Destination:=Sheets("Report").Range("B1")
                Sheets("Report").Range("A2").Value = "MESE"
                End If
                Worksheets("Report").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Value = Worksheets(FF).Name
                Sheets(FF).Range("B" & RR & ":Q" & RR).Copy Destination:=Worksheets("Report").Cells(Rows.Count, 2).End(xlUp).Offset(1, 0)
            End If
        Next RR
    End If
Next FF
    If Tr > 0 Then
Worksheets("Report").Select
    Else
    MsgBox "Matricola inesistente"
    End If
End Sub


Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Search matricole

Postdi zanatta77 » 26/06/13 16:16

Grazie mille va benissimo
Sto provando a leggere qualche manuale di VIUAL BASIC ma la vedo dura...
Windows 8
Office 2010
Avatar utente
zanatta77
Utente Senior
 
Post: 127
Iscritto il: 01/12/12 16:12


Torna a Applicazioni Office Windows


Topic correlati a "Search matricole":


Chi c’è in linea

Visitano il forum: Nessuno e 48 ospiti