Copiare template su altri fogli progressivamente



  • 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à!!!