Copiare template su altri fogli progressivamente
Hai un problema con Excel?
Copiare template su altri fogli progressivamente
di prinztegame data: 18/05/2016 21:58:31
Buonasera a tutti innanzitutto,
mi rivolgo a questo forum per avere aiuto su un mio progetto Excel/VBA.
Ho un file composto da 51 fogli. Il Foglio1 è un formulario dove inserisco vari dati relativi ad un cliente ed è rinominato SCHEDA; il Foglio2, il Foglio3, il Foglio4 etc. etc. sono vuoti e rinominati progressivamente da 1 a 50.
Faccio ora un esempio di ciò che avrei necessità di realizzare: nel foglio "SCHEDA" inserisco in varie celle i dati di un cliente. Premo un command button appositamente creato ed il contenuto del foglio SCHEDA viene copiato sul foglio "1".
Successivamente torno al foglio SCHEDA e sovrascrivo i dati di un altro cliente. Premo il solito command button ed il contenuto del foglio SCHEDA viene questa volta copiato sul foglio "2" perchè il foglio "1" già contiene i dati del primo cliente.
E così via per i successivi clienti.
Finora i miei tentativi hanno portato a pochi frutti...qualcuno mi da una mano?
Grazie mille anticipatamente a tutti
di Raffaele_53 data: 19/05/2016 05:29:53
Ci sono migliaia d'esempi nel forum, comunque senza allegato non posso far nulla
di alfrimpa data: 19/05/2016 11:09:54
E c'è anche la medesima richiesta su vari forum, il che non è proprio corretto.
Alfredo
di prinztegame data: 19/05/2016 11:29:10
Buongiorno,
@raffaele_53 intanto grazie per l'interessamento, provo ad allegare un file di esempio. Nel frattempo continuo a spulciare in cerca di qualcosa che faccia al caso mio.
@alfredo ho effettivamente postato la stessa richiesta su altri forum in cerca di una soluzione, non lo nego. Tuttavia non pensavo che fosse una cosa ritenuta "scorretta", cerco solamente di avere più possibilità di risolvere la problematica. Se qualcuno ha trovato il mio comportamento non adeguato mi scuso
Grazie a tutti
di patel data: 19/05/2016 11:45:06
elimina tutti gli altri fogli ed usa questa
Sub Copy_Worksheet()
Dim shtToCopy As Worksheet
Set shtToCopy = Sheets(1)
n = 1
s = Str(n)
While WorksheetExists(LTrim(Str(n)))
n = n + 1
Wend
shtToCopy.Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = LTrim(Str(n))
End Sub
Public Function WorksheetExists(ByVal WorksheetName As String) As Boolean
On Error Resume Next
s = Sheets(WorksheetName).Name
WorksheetExists = (Sheets(WorksheetName).Name <> "")
On Error GoTo 0
End Function
|
di prinztegame data: 19/05/2016 11:57:09
Grazie Patel,
il tuo codice funziona perfettamente ma non è esattamente quello che sto cercando.
Il tuo codice crea ogni volta un nuovo foglio esattamente uguale al foglio SCHEDA, nominandolo numericamente in modo progressivo.
Io avrei bisogno di copiare il contenuto del foglio SCHEDA, ogni qualvolta premo il command button, sui 50 fogli già esistenti nel file, sempre in maniera progressiva. Cioè premo una volta ed i dati vengono copiati sul foglio 1, premo una seconda volta ed i dati vengono copiati sul foglio 2 etc. etc.
Ancora una volta grazie a tutti
di Raffaele_53 data: 19/05/2016 12:00:47
EDIT in ritardo...........
Mi permetto solo di aggiungere una frase
Il VBA di patel, và inserito in un modulo
Per il resto non saprei, in quale forum hai allegato il file. Tanti forum ti avrebbero Bannato
di prinztegame data: 19/05/2016 12:08:48
Ciao Raffaele_53,
ho ovviamente inserito il codice di Patel in un modulo, e funziona perfettamente. Ma come dicevo non è esattamente quello che cerco.
Per quanto rigurda il file ho utilizzato il pulsante "allega un file" che si trova a destra della pagina in alto ed in basso allegando un file .rar secondo le istruzioni scritte.
Nella pagina della discussione, in alto a destra, c'è il simbolo di una graffetta con la scritta "file allegati" da cui posso aprire il file che ho inserito.
di Mister_x (utente non iscritto) data: 19/05/2016 12:38:30
ciao
in base ai tuoi dati, da inserire in un modulo standar
ciao
Option Explicit
Sub Copia_incolla()
Dim i As Long
Dim Tsh As Long
Tsh = Sheets().Count - 1
Sheets("SCHEDA").Select
For i = 1 To Tsh
If Sheets(Format(i, "##0")).Range("E3") = "" Then
Range("E3:P34").Select
Selection.Copy
Sheets(Format(i, "##0")).Select
Range("E3").Select
ActiveSheet.Paste
Range("E3").Select
Sheets("SCHEDA").Select
Application.CutCopyMode = False
Range("E3").Select
Exit For
End If
Next i
End Sub |
di Raffaele_53 data: 19/05/2016 12:40:12
>>>ogni qualvolta premo il command button, sui 50 fogli già esistenti
Quando arriva a 50, cosa dovrebbe fare? Ricominciare da 1?
di prinztegame data: 19/05/2016 13:08:22
@mister_x grazie mille, funziona perfettamente ed è proprio quello che mi serviva!!!
@raffaele_53 non prevedo di utilizzare mai tutti i 50 fogli, diciamo che 50 è un numero che ho scelto io che copre abbondantemente le necessità. Ho fatto una prova con il codice di mister_x e se tutti i fogli già sono occupati premendo il command button non succede nulla. Magari proverò a modificare il codice di mister_x per far sì che appaia un msgbox che avvisa di aver raggiunto il limite di fogli disponibili.
Nuovamente grazie a tutti per l'aiuto e la disponibilità!!!
Vuoi Approfondire?