Condividi:        

if new record then copy and paste cells

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

Re: if new record then copy and paste cells

Postdi mattew89 » 24/11/16 09:54

nessuna risposta? :(
mattew89
Utente Junior
 
Post: 38
Iscritto il: 31/10/16 17:50

Sponsor
 

Re: if new record then copy and paste cells

Postdi Anthony47 » 24/11/16 15:35

Tempo scarso... incrementare pazienza :D
Avatar utente
Anthony47
Moderatore
 
Post: 19441
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: if new record then copy and paste cells

Postdi Anthony47 » 27/11/16 03:20

Secondo me stai sottovalutando l'impatto di questa cosa sul lavoro degli altri e sul processo.
Vediamo...
Nel modulo ThisWorkbook del "file di origine" metti
Codice: Seleziona tutto
Private Sub Workbook_Open()
Dim SecFile As String, SecPath As String
'
SecPath = "C:\UTENTE\PERCORSO\"         '<<< Il tuo PATH del secondo foglio, con "\" finale
SecFile = "MATTEW_secondo_B61126.xlsx"  '<<< Il Nome del file
Application.EnableEvents = False
    On Error Resume Next
        Workbooks.Open SecPath & SecFile
    On Error GoTo 0
Application.EnableEvents = True
ThisWorkbook.Activate
End Sub

In questo modo, all'avvio del file principale si aprira' anche il "nuovo workbook" e averlo disponibile a ogni change fatto sul file principale.

Sempre sul file di origine, nel modulo di codice del foglio che vuoi monitorare, inserisci questa macro di Worksheet_Change:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Dim SecWs As Worksheet, wArr, lB0 As Long, cCell As Range, tRow As Long
Dim eCCo As Boolean, mapOrig, mapDest
'colonne A+D+L nel file di origine con le colonne D+A+E del file di destinazione
'
If Target.Rows.Count > 1 Then Exit Sub
tRow = Target.Row: eCCo = False
Set SecWs = Workbooks("MATTEW_secondo_B61126.xlsx").Sheets(1)   '<<< Nome del secondo file
wArr = SecWs.UsedRange.Value
lB0 = LBound(wArr)
'For Each cCell In Target.Cells(1, 1)
    For i = lB0 To UBound(wArr, 1)
        If wArr(i, lB0 + 3) = Cells(tRow, "A") And _
        wArr(i, lB0) = Cells(tRow, "D") And _
        wArr(i, lB0 + 4) = Cells(tRow, "L") Then eCCo = True
        If eCCo Then
            mapOrig = Array("B", "C")       '<<< Queste Colonne del file di origine...
            mapDest = Array("B", "C")       '<<< ...vanno su queste colonne di SecondoFile
            For j = LBound(mapOrig) To UBound(mapOrig)
                SecWs.Cells(i + 1 - lB0, mapDest(j)).Value = Cells(tRow, mapOrig(j)).Value
            Next j
            Exit For
        End If
    Next i
'Next cCell
End Sub
Imposta correttamente il contenuto delle righe marcate <<<
In particolare mapOrig e mapDest vanno compilate con le colonne che devono essere mappate tra file di origine e secondo file.

Prova e fai sapere...
Avatar utente
Anthony47
Moderatore
 
Post: 19441
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: if new record then copy and paste cells

Postdi mattew89 » 28/11/16 17:25

Non l'ho ancora provata però a primo acchitto mi viene da dire che la routine all'apertura della cartella di lavoro va in conflitto con quella di origine. Sarebbe più corretto che la macro copi tutto il nuovo record modificato oltre a quelli nuovi, quando il file viene salvato( come già fa ora in caso di inserimento di un nuovo record).
mattew89
Utente Junior
 
Post: 38
Iscritto il: 31/10/16 17:50

Re: if new record then copy and paste cells

Postdi mattew89 » 28/11/16 17:39

comunque la macro non funziona.. :(
mattew89
Utente Junior
 
Post: 38
Iscritto il: 31/10/16 17:50

Re: if new record then copy and paste cells

Postdi Anthony47 » 29/11/16 01:52

La macro funziona benissimo.. L'ho modificata un po' per evitare che vada in run time se il file di destinazione è già aperto, copiando i valori prima in un nuovo workbook e poi da lì una macro che lancio solo io da locale che mi copia i nuovi record dal nuovo workbook nel file di destinazione e poi li elimina in modo da non ricopiare record già presenti. Ora però vorrei aggiungere un pezzo:

Vorrei che se vengono modificati dei record nel file di origine questi venissero copiati nel nuovo workbook e poi sostituiti nel file di destinazione quando effettuo la copia con la macro. La chiave univoca per riconoscere i record è la combinazione delle colonne A+D+L nel file di origine con le colonne D+A+E del file di destinazione.
Spero di essermi spiegato

Non l'ho ancora provata però a primo acchitto mi viene da dire che la routine all'apertura della cartella di lavoro va in conflitto con quella di origine. Sarebbe più corretto che la macro copi tutto il nuovo record modificato oltre a quelli nuovi, quando il file viene salvato( come già fa ora in caso di inserimento di un nuovo record).

Mi sono perso...
Se avevamo una soluzione che funzionava usa quella, anche perche' l'architettura adottata io non la conosco e non sono in grado di replicarla.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19441
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: if new record then copy and paste cells

Postdi mattew89 » 29/11/16 10:17

Perdona la confusione.. Cmq la nuova macro non funziona, quando cambio un valore di un record non succede niente..
mattew89
Utente Junior
 
Post: 38
Iscritto il: 31/10/16 17:50

Re: if new record then copy and paste cells

Postdi Anthony47 » 30/11/16 21:10

Da come l'ho capita io, il secondo problema che avevi proposto (messaggio del 22-11 mattina) e' lo stesso che avevamo risolto, cambia solo il file di destinazione che non e' quello finale ma quello intermedio.
Ma questo problema sembrava risolto, quindi devi applicare anche a quei file la prima soluzione proposta, ignorando totalmente la seconda proposta.

Pero' forse dovresti esaminare meglio come Excel consente la condivisione di un file e adottare le soluzioni proposte da Microsoft; soluzioni fatte sul forum sono meno affidabili (lo sono un po' di piu' quelle fatte in casa, perche' si padroneggiano e si possono adattare alla situazione reale.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19441
Iscritto il: 21/03/06 16:03
Località: Ivrea

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "if new record then copy and paste cells":


Chi c’è in linea

Visitano il forum: Nessuno e 26 ospiti