Copia e Incolla tabella



  • Copia e Incolla tabella
    di alexps81 data: 08/03/2016 19:20:39

    Buona sera a tutti, nonostante legga tantissimo libri su VBA Excel purtroppo non riesco mai a creare un codice che serva a risolvere i miei problemi.
    Avrei bisogno di un sostegno.
    In allegato ho caricato un file che serve per la gestione delle presenze giornaliere dei dipendenti, in pratica sono dei fogli firma, tanti per quanti sono i dipendenti.
    Il suo funzionamento dovrebbe essere il seguente:

    Nel foglio ELENCO NOMINATIVI si inseriscono la qualifica, il cognome e il nome di ogni dipendente. Per ogni dipendente inserito nel foglio TABELLE PRESENZE si dovrebbero formare tante tabelle per quanti sono i dipendenti inseriti (quindi 9 dipendenti, 9 tabelle).
    Il foglio FRONTESPIZIO serve per scegliere il mese e l'anno in questione. Sempre in quest'ultimo foglio vorrei che se il mese scelto è GENNAIO allora nel foglio TABELLE PRESENZE, nella cella "X1" ci sia il numero 1, se invece c'è scritto FEBBRAIO allora nella cella "X1" ci deve essere il numero 2, e così via per tutti i restanti mesi dell'anno. Questo perché nella cella "A7" c'è la formula relativa alla realizzazione di un calendario.

    Detto ciò volevo sapere se qualcuno riesce a darmi almeno un inizio per la codifica.

    Grazie...



  • di Albatros54 data: 09/03/2016 10:57:27

    Se ho capito, incolla il codice sotto in un modulo,il codice è fatto per la struttura del file che hai allegato.Il codice crea tanti fogli con la struttura del foglio "tabelle presenze" rinominandoli con i cognomi inseriti nel "foglio nominativi"
    ciao
    albatros54
     
    Sub Agenti()
        Dim Ag As New Collection
        Dim Rw As Long
        Dim LR As Long
        Dim Sh As String
    
        With Sheets("Elenco nominativi")
            Rw = .Cells(Rows.Count, 3).End(xlUp).Row
            Set Rng = Range(.Cells(8, 3), .Cells(Rw, 3))
            For Each cel In Rng
                If cel <> "" Then
                    Ag.Add Item:=cel.Value, Key:=CStr(cel.Value)
                End If
            Next
    
            For Each a In Ag
                Sheets("tabelle Presenze").Copy After:=Sheets(Sheets.Count)
                ActiveSheet.Name = a
            Next
        End With
    End Sub
    






  • di alexps81 data: 09/03/2016 13:10:51

    Ciao grazie per la risposta. Devo ammettere che non ci sarei mai arrivato a fare tutto ciò.
    In ogni caso ho seguito alla lettere quello che mi hai suggerito. Adesso però vorrei sapere se questo codice lo devo associare ad un button o a un evento. Ho provato ad associarlo ad un button ma non succede nulla. Cosa dovrei fare adesso?
    Grazie mille



  • di alexps81 data: 09/03/2016 13:36:23

    Ahhh....ora ho capito cosa avviene con il tuo codice:

    in pratica si creano tanti fogli per quanti sono i cognomi inseriti e il nome dei fogli è proprio quello descritto nei cognomi.

    Diciamo che non è proprio quello che cercavo. In realtà a me servirebbe che il programma ragioni in questo senso:

    - Inserisco tutti i dati nel foglio ELENCO NOMINATIVI
    - Nel foglio TABELLE PRESENZE si devono creare tante tabelle quanti nominativi ho inserito, così com'è già quella esistente, e in alto a destra (all'interno delle celle in grigio) deve comparire la QUALIFICA, il COGNOME e l'iniziale del NOME (es. A.S. PINCO P.). Quindi se inserisco 10 nominativi, all'interno del foglio TABELLE PRESENZA, uno dopo l'altro si devono creare 10 tabelle tutte uguali, con i relativi QUALIFICA, COGNOME e iniziale del NOME in ognuna di essa.
    -Finito ciò, inserirò un pulsante che stamperà in PDF la copertina e tutte le tabelle presenti.

    La cosa de tenere in considerazione è che generalmente i nominativi sono quasi sempre gli stessi. Qualora avessi la necessità di inserirne uno nuovo, il programma deve andare ad aggiungere solo quello nuovo.


  • Nome mese in numero
    di alexps81 data: 09/03/2016 14:26:58

    Buon giorno, qualcuno mi sa dire se esiste un modo per convertire/trasformare il nome di un mese nel suo numero corrispondente? Cioè se volessi scegliere da un elenco il mese desiderato, in un'altra cella mi compare il numero corrispondente. Esempio dall'elenco scelgo GENNAIO e contemporaneamente in un'altra cella mi compare il numero 1.
    Probabilmente immagino si faccia con il CASE ma non saprei da dove incominciare....

    grazie



  • di alfrimpa data: 09/03/2016 14:35:36

    Ciao Alex

    Premesso che puoi facilmente farlo con un CERCA.VERT su una tabella mesi ma penso che tu vuoi una soluzione in VBA.

    Quella che vedi sotto è una Function da inserire nel foglio di lavoro =NumeroMese(A1)

    Se vuoi una sub non credo tu abbia eccessive difficoltà a trasfromarla.

    Alfredo 
     
    Function NumeroMese(a)
    Select Case a
        Case Is = "Gennaio"
        NuemeroMese = 1
        Case Is = "Febbraio"
        NuemeroMese = 2
        Case Is = "Marzo"
        NuemeroMese = 3
        Case Is = "Aprile"
        NuemeroMese = 4
        Case Is = "Maggio"
        NuemeroMese = 5
        Case Is = "Giugno"
        NuemeroMese = 6
        Case Is = "Luglio"
        NuemeroMese = 7
        Case Is = "Agosto"
        NuemeroMese = 8
        Case Is = "Settembre"
        NuemeroMese = 9
        Case Is = "Ottobre"
        NuemeroMese = 10
        Case Is = "Novembre"
        NuemeroMese = 11
        Case Is = "Dicembre"
        NuemeroMese = 12
    End Select
    End Function
    






  • di alexps81 data: 09/03/2016 15:05:12

    Perfetto grazie Alfredo, sono uscito solo un po' pazzo perché non funzionava, ma poi ho capito che c'è un errore di battitura "NuemeroMese = 1". L'ho sistemato in "NumeroMese = 1" e funziona a meraviglia.
    Grazie