CiaoCecco,
da anni uso una cartella excel 2003 con 12 fogli che corrispondono ai mesi dell’anno (Mese1, Mese2, Mese3 ecc).
La struttura è uguale per tutti i 12 fogli:
Data Entrate Uscite Annotazioni
In un foglio che ho chiamato “Movimenti”
Ho necessita che al semplice inserimento di una data (es. 15/03) mi elencasse tutti i movimenti avvenuti il 15/03 (quindi dal foglio “Mese3”)
Es.:
DATA
Entrate Uscite Annotazioni
15/03/2016 10,00
Acquisto Cancelleria
15/03/2016 60,00 Buoni pasto Sig. Rossi
15/03/2016 74,50
Marche da Bollo
Ecc.
Ho scandagliando il web per 10 giorni alla ricerca di una soluzione, ma senza risultato.
Come posso risolvere?
Benvenuto alla Community!
Prova qualcosa del genere:
- Fai clic dx sulla linguetta del foglio di interesse
- Seleziona l'opzione Visualizza Codice dal ****
menu contestuale risultante
- Incolla il seguente codice:
'=========>>
Option Explicit
'--------->>
Private Sub Worksheet_Change(ByVal Target As Range)
Dim srcSH As Worksheet
Dim srcRng As Range, destRng As Range
Dim Rng As Range
Dim arrMese As Variant, arrIn As Variant, arrOut() As Variant
Dim vVal As Variant
Dim Res As Variant
Dim i As Long, j As Long, iCtr As Long
Dim UB As Long, UB2 As Long
Dim iRow As Long, jRow As Long
Dim sMsg As String, sTitle As String
Dim iButtons As Long
Const CellaDataDiRicerca As String = "A2" '<<=== Modifica
Const RigaIntestazionReport As Long = 4 '<<=== Modifica
Const NumeroDiColonneDati As Long = 4 ****
Set Rng = Intersect(Me.Range(CellaDataDiRicerca), Target)
If Not Rng Is Nothing Then
On Error GoTo XIT
Application.EnableEvents = False
With Me
jRow = LastRow(Me, .Columns("A:A"), RigaIntestazionReport + 1)
Set destRng = .Range("A" & RigaIntestazionReport + 1). _
Resize(jRow - RigaIntestazionReport, NumeroDiColonneDati)
End With
destRng.ClearContents
vVal = Rng.Value
Select Case True
Case vVal = vbNullString
GoTo XIT
Case Not IsDate(vVal)
Call MsgBox( _
Prompt:=vVal & " non è stata risconosciuto come una data valida!", _
Buttons:=vbCritical, _
Title:="CONTROLLA DATA")
GoTo XIT
End Select
arrMese = Application.GetCustomListContents(3)
Res = arrMese(Month(vVal))
Set srcSH = ThisWorkbook.Sheets(Res)
With srcSH
iRow = LastRow(srcSH, .Columns("A:A"))
Set srcRng = .Range("A1:D" & iRow)
End With
arrIn = srcRng.Value
UB = UBound(arrIn)
UB2 = UBound(arrIn, 2)
ReDim arrOut(1 To UB, 1 To UB2)
For i = 1 To UB
If arrIn(i, 1) = vVal Then
iCtr = iCtr + 1
For j = 1 To UBound(arrIn, 2)
arrOut(iCtr, j) = arrIn(i, j)
Next j
End If
Next i
If CBool(iCtr) Then
destRng.Resize(iCtr, UB2).Value = arrOut
sMsg = iCtr & " record sono stati trovati con la data " _
& Rng.Value
iButtons = vbInformation
sTitle = "REPORT"
Else
sMsg = "Nessun record è stato trovatto con la data " _
& Rng.Value
iButtons = vbCritical
sTitle = "RICERCA VUOTA!"
End If
Call MsgBox( _
Prompt:=sMsg, _
Buttons:=iButtons, _
Title:=sTitle)
End If
XIT:
Application.EnableEvents = True
End Sub
'<<=========
- Menù | Inserisci | Modulo (oppure, **Alt+IM)**per inserire un nuovo modulo di codice
- Nel nuovo modulo vuoto, incolla il seguente codice:
'=========>>
Option Explicit
'--------->>
Public Function LastRow(SH As Worksheet, _
Optional Rng As Range, _
Optional minRow As Long = 1)
If Rng Is Nothing Then
Set Rng = SH.Cells
End If
On Error Resume Next
LastRow = Rng.Find(What:="*", _
after:=Rng.Cells(1), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
On Error GoTo 0
If LastRow < minRow Then
LastRow = minRow
End If
End Function
'<<=========
- Alt+Q per chiudere l'editor di VBA e tornare a Excel
- Salva il file con l’estensione xlsm
Potresti scaricare il mio file di prova Cecco20160529.xlsm a:
https://www.dropbox.com/s/xj8sos86zlg8v1x/Cecco20160529.xlsm?dl=0
Nel mio file di prova ho organizzato i dati sul foglio Movimenti nel modo seguente:
Inserendo o modificando la date di ricerca nella cell A2 avvia il codice per estrarre i dati corrispondenti alla data sul foglio il cui nome corrisponde con l'abbreviazione di tre lettere del mese della data di ricerca immessa nella cella
A2. Quindi, nell'esempio mostrato nello screenshot, i dati sono estratti dal foglio nominato
Mar.
Ho scandagliando il web per 10 giorni alla ricerca di una soluzione, ma senza risultato.
Mentre penso sia altamente lodevole che tu abbia tentato di utilizzare Google per risolvere il problema, ora che ci hai trovato, vorrei suggerire che prima di intraprendere di nuovo su una ricerca così estesa, dovresti prendere in considerazione la possibilità
di postare dettagli del problema qui! In questa Community, troverai molti amici solo troppo contenti di aiutarti.

===
Regards,
Norman
