Condividi:        

macro per copiare dati tra fogli stessa cartella

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

macro per copiare dati tra fogli stessa cartella

Postdi ANTONIO1105 » 02/04/21 13:20

https://www.dropbox.com/scl/fi/mfhajpzt ... ipva0n49ex

salve,
ho una cartella excel con diversi fogli. ho necessità di copiare dati (diverse righe ma di numero variabile) da un foglio all'altro. Ho provato con una macro presente nel foglio allegato. Ma non funziona: le mie conoscenze sono +ttosto limitate. Più nello specifico, devo copiare i seguenti dati:

MACRO 1: copiare da foglio ScadFiscPrev a foglio ScadGen
copiare tutti i dati presenti a partire dalla riga 12 colonne C e D (il numero delle righe è variabile) in C37 del foglio ScadGen dove però sono gia presenti altri dati e quindi la Macro dovrà inserire un numero di righe pari a quello relativo ai dati da copiare e dopo aver copiato i dati eliminare ogni riga vuota a partire dalla 37.ma;
Vai in C37 fine macro;

MACRO 2: copiare da foglio ScadRev a foglio ScadGen
copiare tutti i dati (in modalità statica e cioè solo il contenuto delle celle e nn le formule escludendo le righe vuote attraverso il comando Autofilter) presenti nell'area M12:P3000 in C37 del foglio ScadGen dove però sono gia presenti altri dati e quindi la Macro dovrà inserire un numero di righe pari a quello relativo ai dati da copiare e dopo aver copiato i dati eliminare ogni riga vuota a partire dalla 37.ma;
Vai in C37 fine macro;

MACRO 3: copiare da foglio ScadRev a foglio ScadAgenda
- copiare tutti i dati (in modalità statica e cioè solo il contenuto delle celle e nn le formule escludendo le righe vuote attraverso il comando Autofilter) dell'area M12:M3000 in C30 del foglio ScadAgenda dove però sono gia presenti altri dati e quindi la Macro dovrà inserire un numero di righe pari a quello relativo ai dati da copiare e dopo aver copiato i dati eliminare ogni riga vuota a partire dalla 30.ma;
- copiare tutti i dati (in modalità statica e cioè solo il contenuto delle celle e nn le formule escludendo le righe vuote attraverso il comando Autofilter) dell'area O12:O3000 in D30 del foglio ScadAgenda dove però sono gia presenti altri dati e quindi la Macro dovrà inserire un numero di righe pari a quello relativo ai dati da copiare e dopo aver copiato i dati eliminare ogni riga vuota a partire dalla 30.ma;
- copiare tutti i dati (in modalità statica e cioè solo il contenuto delle celle e nn le formule escludendo le righe vuote attraverso il comando Autofilter) dell'area N12:N3000 in E30 del foglio ScadAgenda dove però sono gia presenti altri dati e quindi la Macro dovrà inserire un numero di righe pari a quello relativo ai dati da copiare e dopo aver copiato i dati eliminare ogni riga vuota a partire dalla 30.ma;
- copiare tutti i dati (in modalità statica e cioè solo il contenuto delle celle e nn le formule escludendo le righe vuote attraverso il comando Autofilter) dell'area P12:P3000 in F30 del foglio ScadAgenda dove però sono gia presenti altri dati e quindi la Macro dovrà inserire un numero di righe pari a quello relativo ai dati da copiare e dopo aver copiato i dati eliminare ogni riga vuota a partire dalla 30.ma;
Vai in C29 Fine macro
ANTONIO1105
Utente Junior
 
Post: 37
Iscritto il: 23/01/17 22:25

Sponsor
 

Re: macroper copiare dati tra fogli stessa cartella

Postdi ANTONIO1105 » 02/04/21 20:52

rettifica: il link corretto relaivo al file è il seguente:
https://www.dropbox.com/scl/fi/gkc3nvs3 ... 4xg9yj8smw
ANTONIO1105
Utente Junior
 
Post: 37
Iscritto il: 23/01/17 22:25

Re: macroper copiare dati tra fogli stessa cartella

Postdi Anthony47 » 03/04/21 01:47

Le macro richieste sono tutte simili, mi limito a proporti un "modello" personalizzato come "MACRO1"; sono sicuro che con un po' di ingegno e applicazione riuscirai a modificare il codice per ottenere le altre macro.
Il codice:
Codice: Seleziona tutto
Sub Macro1()
Dim wArr, cRc As Long, cArr
'
cArr = Array("ScadFiscPrev", "C12:D3000", "ScadGen", 37)    '<<< Definizioni
'
    Sheets(cArr(2)).Select                                                      '<<< Seleziona il foglio destinazione
    Sheets(cArr(0)).Range(cArr(1)).AutoFilter Field:=1, Criteria1:="<>"         '<<< Filtra Non vuoti
    cRc = Application.WorksheetFunction.CountA(Sheets(cArr(0)).Range(cArr(i + 1))) / Range(cArr(i + 1)).Columns.Count
    Sheets(cArr(2)).Rows(cArr(3)).Resize(cRc).Insert Shift:=xlDown
    Sheets(cArr(0)).Range(cArr(1)).Copy
    Application.Goto Sheets(cArr(2)).Cells(cArr(3), "C")                        '<<< Seleziona la destinazione
    ActiveSheet.Paste                                                           '<<< Incolla (o fare Incolla valori)
    Sheets(cArr(0)).Range(cArr(1)).AutoFilter Field:=1                          '<<< Toglie il filtro
    Application.CutCopyMode = False
End Sub

La macro lavora sui parametri scritti nella riga cArr = Array(etc etc
In questo elenco sono descritti, in sequenza: il foglio da cui copiare; l'area (filtrata) da copiare; il foglio su cui incollare; la Riga su cui incollare

Per le altre macro varierai questi parametri, ed eventualmente sostituirai ActiveSheet.Paste con Selection.PasteSpecial Paste:=xlPasteValues dove vuoi copiare solo i valori

Prova...

PS: ti ho inviato un messaggio privato
Avatar utente
Anthony47
Moderatore
 
Post: 19183
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: macroper copiare dati tra fogli stessa cartella

Postdi ANTONIO1105 » 04/04/21 17:09

Ciao antony47,
ho provato a eseguire il tuo codice. Senza successo! Sono sicuro dipenda dai miei limiti. Mi sono limitato a copiare il tuo codice; davvero non capisco quale errore commetto.
Ti allego 2 screenshots per evidenziarti quanto succede lanciando il codice. Non voglio tediarti né sottrarti tempo prezioso in questi gg di festa.
Se puoi e quando puoi ti chiedo di dare un’occhiata. Grazie ancora.

https://www.dropbox.com/s/89mszqh911rif ... 1.jpg?dl=0
https://www.dropbox.com/s/6s6wa6bbw7j6v ... 2.jpg?dl=0
ANTONIO1105
Utente Junior
 
Post: 37
Iscritto il: 23/01/17 22:25

Re: macroper copiare dati tra fogli stessa cartella

Postdi Anthony47 » 05/04/21 17:13

Devi copiare il codice dal forum e incollarlo nel modulo vba, senza trascriverlo.

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

Re: macroper copiare dati tra fogli stessa cartella

Postdi ANTONIO1105 » 07/04/21 21:18

buonasera Antony47,
il codice funziona. 1 piccolo problema: cancella i dati preesistenti.
in altre parole, il codice copia i dati dal foglio di origine nel foglio di destinazione a partire dalla riga 37; ma poi oltre a eliminare eventuali righe vuote, cancella le righe preesistenti del foglio di destinazione.
supponiamo che le righe da incollare nel foglio di destinazione siano e che il foglio di destinanzione sia composto da 100. supponiamo che le 10 righe da incollare vadano incollate a partire dalla 37.ma del foglio di destinanzione. il codice dovrebbe posizionare le nuove 10 righe da incollare nella 38.ma (inserendo 10 righe), sicchè alla fine il numero finale delle righe nel foglio di destinazione deve essere pari a 110. invece il codice incolla le righe a partire dalla 37.ma cancellando però tutte le restanti, quindi le righe finali nel foglio di destinanzione dovrebbero essere 47. c'è un rimedio?
grz buona serata
ANTONIO1105
Utente Junior
 
Post: 37
Iscritto il: 23/01/17 22:25

Re: macro per copiare dati tra fogli stessa cartella

Postdi Anthony47 » 09/04/21 02:31

il codice funziona. 1 piccolo problema: cancella i dati preesistenti.
in altre parole, il codice copia i dati dal foglio di origine nel foglio di destinazione a partire dalla riga 37; ma poi oltre a eliminare eventuali righe vuote, cancella le righe preesistenti del foglio di destinazione.
E dà fastidio? :D :D

Prova questa variante:
Codice: Seleziona tutto
Sub Macro1()
Dim wArr, cRc As Long, cArr
'
cArr = Array("ScadFiscPrev", "C12:D3000", "ScadGen", 37)    '<<< Definizioni
'
    Sheets(cArr(2)).Select                                                      '<<< Seleziona il foglio destinazione
    Sheets(cArr(0)).Range(cArr(1)).AutoFilter Field:=1, Criteria1:="<>"         '<<< Filtra Non vuoti
    cRc = Application.WorksheetFunction.CountA(Sheets(cArr(0)).Range(cArr(i + 1))) / Range(cArr(i + 1)).Columns.Count
    Sheets(cArr(2)).Rows(cArr(3)).Resize(cRc).Insert Shift:=xlDown
    Range(Sheets(cArr(0)).Range(cArr(1)).Cells(1, 1), Sheets(cArr(0)).Range(cArr(1)).Cells(1, 1).End(xlDown)).Resize(, Range(cArr(1)).Columns.Count).Copy
    Application.Goto Sheets(cArr(2)).Cells(cArr(3), "C")                        '<<< Seleziona la destinazione
    ActiveSheet.Paste                                                           '<<< Incolla (o fare Incolla valori)
    Sheets(cArr(0)).Range(cArr(1)).AutoFilter Field:=1                          '<<< Toglie il filtro
    Application.CutCopyMode = False
End Sub


Fai sapere…
Avatar utente
Anthony47
Moderatore
 
Post: 19183
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: macro per copiare dati tra fogli stessa cartella

Postdi ANTONIO1105 » 13/04/21 08:14

Perfetto!. grazie davvero
ANTONIO1105
Utente Junior
 
Post: 37
Iscritto il: 23/01/17 22:25


Torna a Applicazioni Office Windows


Topic correlati a "macro per copiare dati tra fogli stessa cartella":


Chi c’è in linea

Visitano il forum: Nessuno e 33 ospiti