Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Ciao Vito,
io non posso inserire il modulo nell'altro file.
Io dovrei copiare i dati presenti nel file x dello sheet Componenti_Anelli ed incollare la seleziona multipla nel file y sheet PROGETTI_EMESSI.
In assenza di file di esempio, prova qualcosa del genere:
'=========>>
Option Explicit
'--------->>
Public Sub NEW_PROGETTI_ANELLI()
Dim srcWB As Workbook, destWB As Workbook
Dim SrcSH As Worksheet, destSH As Worksheet, destSH2 As Worksheet
Dim srcRng As Range, destRng As Range
Dim Res1 As Variant, Res2 As Variant
Const sFileFonte As String = "Pippo.xlsx"
Const sFoglioDati As String = "Componenti_Anelli"
Const sFoglioDestinazione As String = "PROGETTI_EMESSI"
Const sFoglioDestinazione2 As String = "ANELLI_POC_OA"
Const sMsg As String = "ISERISICI DATA "
Const sMsg2 As String = "PER I NUOVI PROGETTI" _
& "EMESSI DD/MM/YYYY"
Const sColonneSorgente As String = "A:Z"
Set srcWB = Workbooks(sFileFonte)
Set destWB = ThisWorkbook
Set SrcSH = srcWB.Sheets(sFoglioDati)
With destWB
Set destSH = .Sheets(sFoglioDestinazione)
Set destSH2 = .Sheets(sFoglioDestinazione2)
End With
Set srcRng = SrcSH.Range(sColonneSorgente)
Do Until IsDate(Res1)
Res1 = InputBox(sMsg & " INIZIALE " & sMsg2)
If StrPtr(Res1) = 0 Then
Call MsgBox( _
Prompt:="Hai cancellato - Riprova!", _
Buttons:=vbCritical, _
Title:="REPORT")
Exit Sub
ElseIf Not IsDate(Res1) Then
Call DataIncorretta
End If
Loop
Do Until IsDate(Res2)
Res2 = InputBox(sMsg & " FINALE " & sMsg2)
If StrPtr(Res1) = 0 Then
MsgBox "Hai cancellato!"
Exit Sub
ElseIf Not IsDate(Res1) Then
Call DataIncorretta
End If
Loop
With SrcSH
If .AutoFilterMode Then
If .FilterMode Then
.ShowAllData
End If
End If
srcRng.Cells(1).AutoFilter _
Field:=13, _
Criteria1:=">=" & Format(Res1, "mm/dd/yy"), _
Operator:=xlAnd, _
Criteria2:="<=" & Format(Res2, "mm/dd/yy")
.Range("M1").Copy Destination:=destSH.Range("A1")
destSH.Range("$A$1:$D$1028705").RemoveDuplicates _
Columns:=Array(1, 2, 3, 4), _
Header:=xlYes
If .AutoFilterMode Then
If .FilterMode Then
.ShowAllData
End If
End If
srcRng.Cells(1).AutoFilter Field:=14, _
Criteria1:=">=" _
& Format(Res1, "mm/dd/yy"), _
Operator:=xlAnd, _
Criteria2:="<=" & Format(Res2, "mm/dd/yy")
.Range("N1").Copy Destination:=destSH2.Range("A1")
destSH2.Range("$A$1:$D$1028705").RemoveDuplicates _
Columns:=Array(1, 2, 3, 4), _
Header:=xlYes
End With
End Sub
'--------->>
Public Sub DataIncorretta()
Const sMsg As String = "FORMATO NON CORRETTO"
Call MsgBox( _
Prompt:=sMsg, _
Buttons:=vbInformation, _
Title:="AVVISO")
End Sub
'<<=========
===
Regards,
Norman