Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Ciao Vladimiro,
probabilmente ho saltato un passaggio e cioè:
- Mi costruisco un'unica tabella nel foglio1 identica a Tabella1 del tuo primo esempio.
- Invece di avere i dati nel foglio2 nell'intervallo di celle B:H, mi potresti modificare il codice postato in precedenza per avere i dati dal foglio2 al foglio1 partendo dalla colonna CV?
Se ho ben capito le modifiche richieste, nel modulo di codice standard, incolla il seguente codice:
'========>>
Option Explicit
Public Const sUltima_Colonna_Sorgente As String = "DB" '<<=== Modifica
'-------->>
Public Sub Aggiorna_Tabella()
Dim SH As Worksheet
Dim Rng As Range
Dim oTabella As ListObject
Dim i As Long, iRows As Long
Const sTabella As String = **"Tabella1" '<<=== Modifica**
Const sPrima\_Cella\_Sorgente As String = **"CV6" '<<=== Modifica**
Set SH = ThisWorkbook.Sheets("Foglio1")
With SH
iRows = .Range(sPrima\_Cella\_Sorgente).CurrentRegion.Rows.Count
Set oTabella = .ListObjects(sTabella)
End With
With oTabella.DataBodyRange
Set Rng = .Rows(1)
If .Rows.Count > 1 Then
Application.EnableEvents = False
.Offset(1, 0).Resize(.Rows.Count - 1).Delete
Application.EnableEvents = True
End If
End With
With Application
.DisplayAlerts = False
.Calculation = xlCalculationManual
Rng.AutoFill Destination:=Rng.Resize(iRows), Type:=xlFillDefault
.DisplayAlerts = True
.Calculation = xlCalculationAutomatic
End With
End Sub
'<<========
Nel modulo di codice del Foglio1, incolla:
'========>>
Option Explicit
'-------->>
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range
Set Rng = Intersect(Me.Columns(sUltima\_Colonna\_Sorgente), Target)
If Not Rng Is Nothing Then
Application.ScreenUpdating = False
Call Aggiorna\_Tabella
Application.ScreenUpdating = True
End If
End Sub
'<<========
Cancella il codice nel modulo di codice del Foglio2.
Potresti scaricare il mio file di prova Vladimiro20220112.xlsm
===
Regards,
Norman