› Sviluppare funzionalita su Microsoft Office con VBA › Macro copia incolla da fogli cartella
-
AutoreArticoli
-
ciao a tutti,
vista la mia poca dimestichezza con il linguaggio vba, prima di allegare file e quindi farvi perdere tempo, chiedo se si può fare: in pratica avrei bisogno di creare una macro, con command button, che vada a copiare determinati dati, riferiti alla data "oggi", controllando la loro eventuale presenza in tutti i fogli della cartella di lavoro; se trovati, incollarli a quel punto in un foglio di riepilogo.
È fattibile tutto ciò ?
Grazie mille
Si che si può fare
Grazie Alex, allora spiego i dettagli.
da ogni foglio nuovo creato, la macro deve fare questo:
copiare i dati contenuti nelle celle C3, C4, range B12:B200, range G12:G200 .... nel foglio
"1R" .....
ed incollarli rispettivamente nelle celle B4, D4, range N4:N200, L4:L200 di quest'ultimo
Allego file e spero di essermi spiegato.
Grazie mille !!
Allegati:
You must be logged in to view attached files.spero di essermi spiegato
Non proprio. Che correlazione c'è tra questo:
creare una macro, con command button, che vada a copiare determinati dati, riferiti alla data "oggi", controllando la loro eventuale presenza in tutti i fogli della cartella di lavoro; se trovati, incollarli a quel punto in un foglio di riepilogo
e questo:
da ogni foglio nuovo creato, la macro deve fare questo:
copiare i dati contenuti nelle celle C3, C4, range B12:B200, range G12:G200 .... nel foglio
"1R" .....
ed incollarli rispettivamente nelle celle B4, D4, range N4:N200, L4:L200 di quest'ultimo
A parte copiare/incollare dati, ma il resto non ho capito. Prova a spiegarti meglio.
Ciao @frasubb
rileggendo meglio ciò che hai scritto ed cercando di capire il risultato voluto in base alla struttura dei nuovi fogli...prova a vedere se ha capito:
Sub estraiDati() Dim ws As Worksheet Dim ur As Long, i As Long, newRow As Long Dim dataTrovata As Boolean Application.ScreenUpdating = False Application.Calculation = xlCalculationManual newRow = Sheets("1R").Cells(Rows.Count, "L").End(xlUp).Row If newRow < 3 Then newRow = 3 For Each ws In ThisWorkbook.Worksheets If ws.Name <> "1" And ws.Name <> "1R" And ws.Name <> "Fee" And ws.Name <> "FoglioBase" Then dataTrovata = False ur = ws.Cells(Rows.Count, "B").End(xlUp).Row If ur >= 12 Then For i = 12 To ur With Sheets("1R") If IsDate(ws.Range("B" & i).Value) Then If CDate(ws.Range("B" & i).Value) = Date Then newRow = newRow + 1 If Not dataTrovata Then .Range("B" & newRow).Value = ws.Range("C3").Value2 .Range("D" & newRow).Value = ws.Range("C4").Value2 dataTrovata = True End If .Range("L" & newRow).Value = ws.Range("G" & i).Value2 .Range("N" & newRow).Value = ws.Range("B" & i).Value2 End If End If End With Next i End If End If Next ws Set ws = Nothing Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic End Subin pratica, fai una scansione di ogni foglio presente nel Fila, escludendo: "1"; "1R"; "Fee"; "FoglioBase".
Quindi va a controllare in ogni cella di colonna "B" (a partire dal rigo 12 fino all'ultima cella compilata) se c'è una data riferita ad "oggi". Se esiste allora preleva "Cliente" e "Contatore" e li trascrive nel foglio "1R" rispettivamente in cella "B" e "D" a partire da rigo 4 in poi.
Poi preleva "scad. rata" e "da pagare" riferiti al giorno di "oggi" e li riporta nel Foglio "1R" nelle celle di colonna "N" e "L" sempre a partire dal rigo 4 in poi.
Ciao @frasubb
Ciao Alex, grazie innanzitutto.
Ancora non ho potuto provare niente perché non ho un pc con me, però lo farò in giornata.
Leggendo ciò che hai scritto, comunque hai capito perfettamente.
Volevo solo chiederti se si può aggiungere un alert che, in caso di corrispondenze non trovate, possa scrivere “scadenze non presenti in data odierna”.
Grazie mille ancora per la tua assistenza e pazienza
si può aggiungere un alert che, in caso di corrispondenze non trovate, possa scrivere “scadenze non presenti in data odierna”.
Vedi prima se funziona come vorresti, poi lo aggiungiamo.
Vedi prima se funziona come vorresti
funziona bene, solo che nel foglio 1R ci sono i parziali dei mesi che a questo punto devono sommare tutti quegli importi presenti nella colonna L a condizione che gli corrisponda un "Si" nella colonna P, ovviamente medesima riga.
Così come è impostato, vengono sommati tutti gli importi di tutte le righe valorizzate, invece la discriminante è "Si" nella colonna P
Ma scusa...non sto capendo. La macro funziona? Questa è una nuova richiesta o sbaglio? Ad ogni modo non ho capito cosa chiedi. Sarebbe utile un esempio pratico sul foglio...ovviamente se questa discussione è risolta, allora spuntala come tale e fai richiesta in una nuova discussione.
La macro funziona?
la macro funziona benissimo.
Discussione risolta, apro nuova per altra casistica
-
AutoreArticoli
