Risultati da 1 a 14 di 14

Discussione: Archiviare dati in tabella dinamica: dove sbaglio ?



  1. #1
    L'avatar di Nicolabt
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Puglia
    Età
    53
    Messaggi
    54
    Versione Office
    Excel 2013
    Likes ricevuti
    2
    Likes dati
    7

    Question Archiviare dati in tabella dinamica: dove sbaglio ?

    Ciao, ho creato un file (con macro) per archiviare dati in una tabella dinamica, ma devo aver fatto sicuramente un errore nell'utilizzo
    dei riferimenti assoluti/relativi delle celle, perchè quando inserisco un nuovo dato e vado ad archiviarlo in tabella,
    lo sovrappone all'altro già esistente .. invece io voglio che me lo inserisca sotto.
    Ho provato e riprovato a modificare la macro ma non capisco ancora dove ho sbagliato.
    Potete farmi capire dov'è l'errore nella macro ?
    Allego file.
    Grazie.

    NB: il file è così composto:
    Foglio DATI: contiene elenchi di dati vari
    Foglio INSERIMENTO: contiene la maschera di inserimento del dato con tasto Archivia a cui è assegnata la macro
    Foglio ORGANICO: è la tabella finale che conterrà l'intero database di organico dipendenti.
    File Allegati File Allegati

  2. #2
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    67
    Messaggi
    3340
    Versione Office
    2013 PC
    Likes ricevuti
    483
    Likes dati
    49
    Citazione Originariamente Scritto da Nicolabt Visualizza Messaggio
    Ciao, ho creato un file (con macro) per archiviare dati in una tabella dinamica, ma devo aver fatto sicuramente un errore nell'utilizzo
    dei riferimenti assoluti/relativi delle celle, perchè quando inserisco un nuovo dato e vado ad archiviarlo in tabella,
    lo sovrappone all'altro già esistente .. invece io voglio che me lo inserisca sotto.
    Ho provato e riprovato a modificare la macro ma non capisco ancora dove ho sbagliato.
    Potete farmi capire dov'è l'errore nella macro ?
    Allego file.
    Grazie.

    NB: il file è così composto:
    Foglio DATI: contiene elenchi di dati vari
    Foglio INSERIMENTO: contiene la maschera di inserimento del dato con tasto Archivia a cui è assegnata la macro
    Foglio ORGANICO: è la tabella finale che conterrà l'intero database di organico dipendenti.
    Ciao Modifica la macro come ti ho scritto :

    Codice: 
    Sub ArchiviaDato()'
    ' ArchiviaDato Macro
        
    uriga = Range("A" & Rows.Count).End(xlUp).Row + 1       ' AGGIUNGERE
        Range("F4:F10").Select
        Selection.Copy
        Range("F10").Select
        Sheets("Organico").Select
        Range("A1").Select
    '    Selection.End(xlDown).Select             ELIMINARE
    '    Selection.End(xlUp).Select               ELIMINARE
        ActiveCell.Offset(uriga, 0).Range("A1").Select              ' MODIFICARE
        Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=True
        ActiveCell.Offset(1, 0).Range("A1").Select
        Sheets("Inserimento").Select
        Application.CutCopyMode = False
        Range("F4:F10").Select
        Selection.ClearContents
        Range("F4").Select
    End Sub

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

  3. #3
    L'avatar di Nicolabt
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Puglia
    Età
    53
    Messaggi
    54
    Versione Office
    Excel 2013
    Likes ricevuti
    2
    Likes dati
    7
    Citazione Originariamente Scritto da Baloon_50 Visualizza Messaggio
    Ciao Modifica la macro come ti ho scritto :

    Codice: 
    Sub ArchiviaDato()'
    ' ArchiviaDato Macro
        
    uriga = Range("A" & Rows.Count).End(xlUp).Row + 1       ' AGGIUNGERE
        Range("F4:F10").Select
        Selection.Copy
        Range("F10").Select
        Sheets("Organico").Select
        Range("A1").Select
    '    Selection.End(xlDown).Select             ELIMINARE
    '    Selection.End(xlUp).Select               ELIMINARE
        ActiveCell.Offset(uriga, 0).Range("A1").Select              ' MODIFICARE
        Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=True
        ActiveCell.Offset(1, 0).Range("A1").Select
        Sheets("Inserimento").Select
        Application.CutCopyMode = False
        Range("F4:F10").Select
        Selection.ClearContents
        Range("F4").Select
    End Sub
    Ciao Baloon grazie per l'immediata risposta, ma provandolo subito ho notato che non funziona bene, nel senso che va SI ad archiviare nella 2^ riga
    della tabella, ma se ne inserisco altri cinque li archivia sempre nella 2^ riga.

  4. #4
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    67
    Messaggi
    3340
    Versione Office
    2013 PC
    Likes ricevuti
    483
    Likes dati
    49
    Citazione Originariamente Scritto da Nicolabt Visualizza Messaggio
    Ciao Baloon grazie per l'immediata risposta, ma provandolo subito ho notato che non funziona bene, nel senso che va SI ad archiviare nella 2^ riga
    della tabella, ma se ne inserisco altri cinque li archivia sempre nella 2^ riga.
    Ho tralasciato una modifica - usa questa macro :

    Codice: 
    Sub ArchiviaDato()'
    ' ArchiviaDato Macro
        
    Set wsh = ThisWorkbook.Worksheets("Organico")   ' AGGIUNGERE
    uriga = wsh.Range("A" & Rows.Count).End(xlUp).Row       ' TOGLIERE + 1 e aggiungere wsh. davanti a range
        Range("F4:F10").Select
        Selection.Copy
        Range("F10").Select
        Sheets("Organico").Select
        Range("A1").Select
    '    Selection.End(xlDown).Select             ELIMINARE
    '    Selection.End(xlUp).Select               ELIMINARE
        ActiveCell.Offset(uriga, 0).Range("A1").Select              ' MODIFICARE
        Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=True
        ActiveCell.Offset(1, 0).Range("A1").Select
        Sheets("Inserimento").Select
        Application.CutCopyMode = False
        Range("F4:F10").Select
        Selection.ClearContents
        Range("F4").Select
    End Sub
    in pratica ho aggiunto che deve trovare l'ultima riga del foglio Organico (cosa che mi era sfuggita)
    togli anche +1 dal calcolo della uriga

    ciao.

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

  5. #5

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7147
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2063
    Likes dati
    1300
    Un'alternativa con l'UserForm, giusto per dare a Nicola l'opportunità di avere qualcosa di più carino (ovviamente se gli piace :90:)
    Codice: 
    Private Sub CommandButton2_Click()
        Dim wks1 As Worksheet, wks2 As Worksheet
        Set wks1 = Worksheets("Inserimento")
        Set wks2 = Worksheets("Organico")
                   For y = 2 To 100
                    y = wks2.Range("A" & Rows.Count).End(xlUp).Row + 1
                    wks2.Range("a" & y) = ComboBox1
                    wks2.Range("b" & y) = TextBox1
                    wks2.Range("c" & y) = TextBox2
                    wks2.Range("d" & y) = TextBox3
                    wks2.Range("e" & y) = TextBox4
                    wks2.Range("f" & y) = TextBox5
                    wks2.Range("g" & y) = TextBox6
                    Exit For
                Next
        With wks2.Range("A" & y & ":G" & y)
             .Borders(xlEdgeLeft).LineStyle = xlContinuous
            .Borders(xlEdgeTop).LineStyle = xlContinuous
            .Borders(xlEdgeBottom).LineStyle = xlContinuous
            .Borders(xlEdgeRight).LineStyle = xlContinuous
            .Borders(xlInsideHorizontal).LineStyle = xlContinuos
            .Borders(xlInsideVertical).LineStyle = xlContinuos
        End With
    
    
                    ComboBox1 = ""
                    TextBox1 = ""
                    TextBox2 = ""
                    TextBox3 = ""
                    TextBox4 = ""
                    TextBox5 = ""
                    TextBox6 = ""
                                                     
       Set wks1 = Nothing
       Set wks2 = Nothing
    End Sub
    File Allegati File Allegati
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  6. I seguenti utenti hanno dato un "Like"


  7. #6
    L'avatar di Nicolabt
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Puglia
    Età
    53
    Messaggi
    54
    Versione Office
    Excel 2013
    Likes ricevuti
    2
    Likes dati
    7
    Citazione Originariamente Scritto da Baloon_50 Visualizza Messaggio
    Ho tralasciato una modifica - usa questa macro :

    Codice: 
    Sub ArchiviaDato()'
    ' ArchiviaDato Macro
        
    Set wsh = ThisWorkbook.Worksheets("Organico")   ' AGGIUNGERE
    uriga = wsh.Range("A" & Rows.Count).End(xlUp).Row       ' TOGLIERE + 1 e aggiungere wsh. davanti a range
        Range("F4:F10").Select
        Selection.Copy
        Range("F10").Select
        Sheets("Organico").Select
        Range("A1").Select
    '    Selection.End(xlDown).Select             ELIMINARE
    '    Selection.End(xlUp).Select               ELIMINARE
        ActiveCell.Offset(uriga, 0).Range("A1").Select              ' MODIFICARE
        Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=True
        ActiveCell.Offset(1, 0).Range("A1").Select
        Sheets("Inserimento").Select
        Application.CutCopyMode = False
        Range("F4:F10").Select
        Selection.ClearContents
        Range("F4").Select
    End Sub
    in pratica ho aggiunto che deve trovare l'ultima riga del foglio Organico (cosa che mi era sfuggita)
    togli anche +1 dal calcolo della uriga

    ciao.

    Grazie mille .. funziona ottimamente

  8. #7
    L'avatar di Nicolabt
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Puglia
    Età
    53
    Messaggi
    54
    Versione Office
    Excel 2013
    Likes ricevuti
    2
    Likes dati
    7
    Citazione Originariamente Scritto da ges Visualizza Messaggio
    Un'alternativa con l'UserForm, giusto per dare a Nicola l'opportunità di avere qualcosa di più carino (ovviamente se gli piace :90:)
    Codice: 
    Private Sub CommandButton2_Click()
        Dim wks1 As Worksheet, wks2 As Worksheet
        Set wks1 = Worksheets("Inserimento")
        Set wks2 = Worksheets("Organico")
                   For y = 2 To 100
                    y = wks2.Range("A" & Rows.Count).End(xlUp).Row + 1
                    wks2.Range("a" & y) = ComboBox1
                    wks2.Range("b" & y) = TextBox1
                    wks2.Range("c" & y) = TextBox2
                    wks2.Range("d" & y) = TextBox3
                    wks2.Range("e" & y) = TextBox4
                    wks2.Range("f" & y) = TextBox5
                    wks2.Range("g" & y) = TextBox6
                    Exit For
                Next
        With wks2.Range("A" & y & ":G" & y)
             .Borders(xlEdgeLeft).LineStyle = xlContinuous
            .Borders(xlEdgeTop).LineStyle = xlContinuous
            .Borders(xlEdgeBottom).LineStyle = xlContinuous
            .Borders(xlEdgeRight).LineStyle = xlContinuous
            .Borders(xlInsideHorizontal).LineStyle = xlContinuos
            .Borders(xlInsideVertical).LineStyle = xlContinuos
        End With
    
    
                    ComboBox1 = ""
                    TextBox1 = ""
                    TextBox2 = ""
                    TextBox3 = ""
                    TextBox4 = ""
                    TextBox5 = ""
                    TextBox6 = ""
                                                     
       Set wks1 = Nothing
       Set wks2 = Nothing
    End Sub
    Ottima idea .. migliorabile graficamente, xò alla userform non sono ancora arrivato, ma ottima e funzionante.
    Grazie mille.

  9. #8
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    67
    Messaggi
    3340
    Versione Office
    2013 PC
    Likes ricevuti
    483
    Likes dati
    49
    Citazione Originariamente Scritto da Nicolabt Visualizza Messaggio
    Grazie mille .. funziona ottimamente
    Se è tutto ok potresti per piacere segnare questa discussione come [RISOLTO]

    Grazie e... alla prossima :261:

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

  10. #9
    L'avatar di Nicolabt
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Puglia
    Età
    53
    Messaggi
    54
    Versione Office
    Excel 2013
    Likes ricevuti
    2
    Likes dati
    7
    Citazione Originariamente Scritto da Baloon_50 Visualizza Messaggio
    Se è tutto ok potresti per piacere segnare questa discussione come [RISOLTO]

    Grazie e... alla prossima :261:
    Fatto .. però dimenticavo una cosa importantissima per il prosieguo del mio file:
    devo creare un controllo sull'inserimento Vuoto del nuovo record (che non deve accadere e mi deve anzi far comparire un avviso)
    e .. inoltre .. devo creare una macro per cercare un dipendente (che è stato trasferito o pensionato) e toglierlo dal foglio
    ORGANICO e inserirlo in un altro foglio simile (diciamo PENSIONATI) che terrò come altro archivio da non eliminare mai.
    Come si fa?
    Perdonatemi .. sono all'inizio dello studio approfondito di excel e VBA e ancora non sono molto pratico.
    Grazie.

  11. #10
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    67
    Messaggi
    3340
    Versione Office
    2013 PC
    Likes ricevuti
    483
    Likes dati
    49
    Citazione Originariamente Scritto da Nicolabt Visualizza Messaggio
    Fatto .. però dimenticavo una cosa importantissima per il prosieguo del mio file:
    devo creare un controllo sull'inserimento Vuoto del nuovo record (che non deve accadere e mi deve anzi far comparire un avviso)
    e .. inoltre .. devo creare una macro per cercare un dipendente (che è stato trasferito o pensionato) e toglierlo dal foglio
    ORGANICO e inserirlo in un altro foglio simile (diciamo PENSIONATI) che terrò come altro archivio da non eliminare mai.
    Come si fa?
    Perdonatemi .. sono all'inizio dello studio approfondito di excel e VBA e ancora non sono molto pratico.
    Grazie.
    Ciao - Prova a vedere se ti va bene
    La colonna J è nascosta perchè unisce cognome e nome per poter togliere il "Pensionato"
    Nella finestra che ti appare quando esegui la macro, devi mettere cognome e nome

    Fammi Sapere.

    Codice: 
    Sub ArchiviaDato() '    
    Set wsh = ThisWorkbook.Worksheets("Organico")
    Set wsh1 = ThisWorkbook.Worksheets("Inserimento")
    uriga = wsh.Range("A" & Rows.Count).End(xlUp).Row
        
            If wsh1.Range("F" & 4) = "" Or wsh1.Range("F" & 5) = "" Or _
            wsh1.Range("F" & 6) = "" Or wsh1.Range("F" & 7) = "" Or _
            wsh1.Range("F" & 8) = "" Or wsh1.Range("F" & 9) = "" Or _
            wsh1.Range("F" & 10) = "" Then
                MsgBox ("VERIFICA I DATI INSERITI"), vbInformation, "ATTENZIONE"
                Exit Sub
            End If
        Range("F4:F10").Select
        Selection.Copy
        Range("F10").Select
        Sheets("Organico").Select
        Range("A1").Select
        ActiveCell.Offset(uriga, 0).Range("A1").Select
        Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=True
        ActiveCell.Offset(1, 0).Range("A1").Select
        Sheets("Inserimento").Select
        Application.CutCopyMode = False
        Range("F4:F10").Select
        Selection.ClearContents
        Range("F4").Select
    End Sub
    
    
    Sub ArchiviaPensionato()
        
    Set wsh = ThisWorkbook.Worksheets("Organico")
    Set wsh1 = ThisWorkbook.Worksheets("Pensionato")
    uriga = wsh.Range("A" & Rows.Count).End(xlUp).Row
    uriga1 = wsh1.Range("A" & Rows.Count).End(xlUp).Row + 1
        
    nominativo = InputBox("INSERISCI IL NOMINATIVO DA CERCARE", "RICERCA")
    
    
    For i = 2 To uriga
        If wsh.Range("J" & i) = nominativo Then
            wsh.Range("A" & i & ":G" & i).Copy
            wsh1.Range("A" & uriga1).PasteSpecial
            wsh.Rows(i & ":" & i).Delete Shift:=xlUp
        End If
    Next
    
    
    End Sub
    File Allegati File Allegati

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

  12. #11
    L'avatar di Nicolabt
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Puglia
    Età
    53
    Messaggi
    54
    Versione Office
    Excel 2013
    Likes ricevuti
    2
    Likes dati
    7
    Citazione Originariamente Scritto da Baloon_50 Visualizza Messaggio
    Ciao - Prova a vedere se ti va bene
    La colonna J è nascosta perchè unisce cognome e nome per poter togliere il "Pensionato"
    Nella finestra che ti appare quando esegui la macro, devi mettere cognome e nome

    Fammi Sapere.

    Codice: 
    Sub ArchiviaDato() '    
    Set wsh = ThisWorkbook.Worksheets("Organico")
    Set wsh1 = ThisWorkbook.Worksheets("Inserimento")
    uriga = wsh.Range("A" & Rows.Count).End(xlUp).Row
        
            If wsh1.Range("F" & 4) = "" Or wsh1.Range("F" & 5) = "" Or _
            wsh1.Range("F" & 6) = "" Or wsh1.Range("F" & 7) = "" Or _
            wsh1.Range("F" & 8) = "" Or wsh1.Range("F" & 9) = "" Or _
            wsh1.Range("F" & 10) = "" Then
                MsgBox ("VERIFICA I DATI INSERITI"), vbInformation, "ATTENZIONE"
                Exit Sub
            End If
        Range("F4:F10").Select
        Selection.Copy
        Range("F10").Select
        Sheets("Organico").Select
        Range("A1").Select
        ActiveCell.Offset(uriga, 0).Range("A1").Select
        Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
            False, Transpose:=True
        ActiveCell.Offset(1, 0).Range("A1").Select
        Sheets("Inserimento").Select
        Application.CutCopyMode = False
        Range("F4:F10").Select
        Selection.ClearContents
        Range("F4").Select
    End Sub
    
    
    Sub ArchiviaPensionato()
        
    Set wsh = ThisWorkbook.Worksheets("Organico")
    Set wsh1 = ThisWorkbook.Worksheets("Pensionato")
    uriga = wsh.Range("A" & Rows.Count).End(xlUp).Row
    uriga1 = wsh1.Range("A" & Rows.Count).End(xlUp).Row + 1
        
    nominativo = InputBox("INSERISCI IL NOMINATIVO DA CERCARE", "RICERCA")
    
    
    For i = 2 To uriga
        If wsh.Range("J" & i) = nominativo Then
            wsh.Range("A" & i & ":G" & i).Copy
            wsh1.Range("A" & uriga1).PasteSpecial
            wsh.Rows(i & ":" & i).Delete Shift:=xlUp
        End If
    Next
    
    
    End Sub

    Grazie Baloon .. grande come sempre. Ora posso dire veramente RISOLTO.
    Alla prossima.

  13. #12
    L'avatar di Giuseppe Zammuto
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Montebello Vicentino
    Età
    64
    Messaggi
    69
    Versione Office
    Office 2013
    Likes ricevuti
    1
    Molto interessante io personalmente ci metterei la possibilità di ricavare il Cod. Fiscale.
    Giuseppe

  14. #13
    L'avatar di Giuseppe Zammuto
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Montebello Vicentino
    Età
    64
    Messaggi
    69
    Versione Office
    Office 2013
    Likes ricevuti
    1
    Complimenti

  15. #14
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    67
    Messaggi
    3340
    Versione Office
    2013 PC
    Likes ricevuti
    483
    Likes dati
    49
    Citazione Originariamente Scritto da Giuseppe Zammuto Visualizza Messaggio
    Complimenti
    Grazie Giuseppe :261:

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

Discussioni Simili

  1. [Risolto] Creare una Tabella Dinamica
    Di Riccardo64 nel forum Domande su Excel in generale
    Risposte: 2
    Ultimo Messaggio: 23/02/17, 10:37
  2. Tabella dinamica
    Di Ottavio nel forum Domande su Excel in generale
    Risposte: 3
    Ultimo Messaggio: 20/01/17, 18:20
  3. [Risolto] Cerca valori che si ripetono in tabella. Formula per arrivare dove il cerca.vert non può
    Di Gatt88 nel forum Domande su Excel in generale
    Risposte: 7
    Ultimo Messaggio: 02/12/16, 11:45
  4. Creare tabella dinamica che varia con il calendario perpetuo.
    Di carega83 nel forum Domande su Excel in generale
    Risposte: 19
    Ultimo Messaggio: 06/03/16, 09:37
  5. macro per ARCHIVIARE DATI
    Di rosarioleotta nel forum Domande su Excel in generale
    Risposte: 5
    Ultimo Messaggio: 19/02/16, 20:16

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •