Risultati da 1 a 14 di 14

Discussione: Problema Database



  1. #1
    L'avatar di Mirco
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Venezia
    Età
    56
    Messaggi
    20
    Versione Office
    office 2010
    Likes ricevuti
    0
    Likes dati
    1

    Problema Database

    Ciao a tutti.

    Sono nuovo in questo forum e voglio cominciare ad angustiarvi con un problemino per me molto 'serio'.
    Ho un database composto da un foglio dati suddiviso in migliaia di righe nominate nei giorni della settimana (lun, mar, mer...)
    Le colonne contengono dati su 'data','incasso', 'spese' ecc.
    Vorrei, con il vostro aiuto, copiare i dati in altri fogli dedicati al solo 'lunedi' o al solo 'martedi' ma solo ed esclusivamente estraendo gli ultimi 25 records (o anche di più a mia discrezione) delle righe 'lun' o 'mar'....
    Tenete presente che il il foglio principale 'dati' viene aggiornato settimanalmente con nuovi dati. Ed è questo il problema.
    Io avevo iniziato filtrando la pagina 'dati' e copiavo, avendo creato un bottone macro su ogni foglio che mi aggiornava i dati del foglio 'LUNEDI', ma con l'aggiornamento settimanale dei dati del foglio principale,
    la macro non includeva i nuovi dati, dovevo quindi modificare ogni volta l'intervallo della macro....semplicemente non partiva mai dall'ultimo dato!
    Vi ringrazio anticipatamente per la vostra gentile attenzione.

    Spero di essere stato sufficientemente chiaro. A presto.

  2. #2
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3223
    Versione Office
    Excel2010
    Likes ricevuti
    628
    Likes dati
    155
    Ciao Mirco e benvenuto nel Forum.
    Bella esposizione ma manca di esempio. Voglio dire, allega un tuo file (senza dati sensibili) e si vedrà di trovare una soluzione.
    Ciao Mario

  3. #3
    L'avatar di Mirco
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Venezia
    Età
    56
    Messaggi
    20
    Versione Office
    office 2010
    Likes ricevuti
    0
    Likes dati
    1
    Grazie Marius44 me la sentivo che avevo dimenticato un 'dettaglio'.
    Lo allego ora.
    E' solo un esempio, la macro è impostata sui dati filtrati 'lun' e funziona. Ma semplicemente cambi il filtro sul foglio dati in 'mar' o 'mer' tanto per provare, la macro
    non parte dall'ultimo dato del foglio principale. Anche aggiungendo dati la stessa cosa.

    e quello di cui ho bisogno e semplicemente copiare gli ultimi 'n' dati.

    Grazie per la pronta risposta.

  4. #4

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2823
    Versione Office
    Excel 2013
    Likes ricevuti
    1024
    Likes dati
    983
    Ho scritto qualche ciclo, vedi se va bene:

    Codice: 
    Sub AGGIORNAMENTO()
    Dim UltimaRiga As Integer
    Dim iRow As Integer
    Dim i As Integer
    Dim Num As Integer
    
    
    UltimaRiga = Foglio1.Range("a1").CurrentRegion.Rows.Count
    
    
    For i = UltimaRiga To 1 Step -1
    If Num > 25 Then Exit Sub ' numero di dati estratti
    If Weekday(Foglio1.Cells(i, 1), vbMonday) = 1 Then 'giorno settimana (1=lunedi, 2=martedi ecc)
    iRow = iRow + 1
    For y = 1 To 8
    Foglio2.Cells(iRow, y) = Foglio1.Cells(i, y)
    Next
    Num = Num + 1
    End If
    Next
    End Sub
    Saluti, Enzo
    Ultima modifica fatta da:cromagno; 18/12/15 alle 15:34 Motivo: Messo codice tra i TAG [CODE] [/CODE]

  5. #5
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3223
    Versione Office
    Excel2010
    Likes ricevuti
    628
    Likes dati
    155
    Ciao Mirco
    ho "aggiustato un po' il tuo file.
    Vedi se va bene così

    Adatta la macro alle tue esigenze. Com'è adesso copia tutti i dati dei giorno indicato in J2 e li incolla nel Foglio relativo.


    Codice: 
    Sub Aggiorna()'
        Application.ScreenUpdating = False
        uRg = Sheets("Foglio1").Cells(Rows.Count, 2).End(xlUp).Row
        giorno = Cells(2, 10).Text
        Select Case giorno
            Case "lun"
                gg = 1
            Case "mar"
                gg = 2
            Case "mer"
                gg = 3
            Case "gio"
                gg = 4
            Case "ven"
                gg = 5
            Case "sab"
                gg = 6
            Case "dom"
                gg = 7
            Case Else
                Exit Sub
        End Select
            
        Range("B1:H1").Copy
        Range("L5").PasteSpecial xlPasteValues
        a = 6
        For i = 2 To uRg
            grn = Weekday(Cells(i, 1), 2)
            If grn = gg Then
                Range(Cells(i, 2), Cells(i, 8)).Copy
                Range(Cells(a, 12), Cells(a, 18)).PasteSpecial xlPasteValues
                a = a + 1
            End If
        Next i
    
    
        uRg = Sheets("Foglio1").Cells(Rows.Count, 12).End(xlUp).Row
        Sheets("Foglio1").Range(Cells(6, 12), Cells(uRg, 18)).Copy
        Sheets(giorno).Range("A2").PasteSpecial xlPasteValues
        
        Sheets("Foglio1").Range(Cells(5, 12), Cells(uRg, 18)).ClearContents
        Sheets("Foglio1").Cells(1, 1).Select
        Application.ScreenUpdating = True
        Sheets(giorno).Select
    End Sub
    Ciao,
    Mario
    Ultima modifica fatta da:Gerardo Zuccalà; 17/12/15 alle 23:46 Motivo: Allegato non si visualizza e manca Codice tra tag

  6. #6
    L'avatar di Mirco
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Venezia
    Età
    56
    Messaggi
    20
    Versione Office
    office 2010
    Likes ricevuti
    0
    Likes dati
    1
    ok ragazzi..........meritate un plauso!..... e un sincero ringraziamento.
    ora mi metto al lavoro e provo a 'giocare' con i vostri codici.
    Vi farò sapere........

    sono arrivato a fare l'una e mezza.......Enzo ottimo il tuo ciclo ma nn mi permette di aggiungere dati nella pagina principale. mi da errore. (ti invio il file)

    Mario grazie anche a te. Ottimo, se fosse possibile vorrei solo poter definire il numero di righe da copiare.

    Complimenti ragazzi, geniali.

  7. #7
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3223
    Versione Office
    Excel2010
    Likes ricevuti
    628
    Likes dati
    155
    Ciao Mirco
    se ho capito bene vorresti che venissero copiati solo i dati da una certa riga ad un'altra (oppure fino alla fine)
    in questa parte del codice
    Codice: 
        For i = 2 To uRg
            grn = Weekday(Cells(i, 1), 2)
            If grn = gg Then
                Range(Cells(i, 2), Cells(i, 8)).Copy
                Range(Cells(a, 12), Cells(a, 18)).PasteSpecial xlPasteValues
                a = a + 1
            End If
        Next i
    vanno sostituiti i parametri della variabile i - potresti inserire in due celle da quale partire e fino a quale arrivare, farli leggere e inserirli al posto di 2 (partenza) e uRg (arrivo)

    Spero di essere stato chiaro. Ciao,
    Mario

  8. #8

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2823
    Versione Office
    Excel 2013
    Likes ricevuti
    1024
    Likes dati
    983
    Nell'ultima riga inserita hai scritto "lun" come testo e non come data (comunque il "12/12/2015" è sab)!

  9. #9
    L'avatar di Mirco
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Venezia
    Età
    56
    Messaggi
    20
    Versione Office
    office 2010
    Likes ricevuti
    0
    Likes dati
    1
    Enzo hai ragione, nn avevo pensato a formattare le celle.......e ho erroneamente scritto dei numeri nn corrispondenti a date reali.......volevo rapidamente testare il codice che ora funziona!
    Un sincero grazie! Mi metto subito al lavoro! A presto!

  10. #10
    L'avatar di Mirco
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Venezia
    Età
    56
    Messaggi
    20
    Versione Office
    office 2010
    Likes ricevuti
    0
    Likes dati
    1
    ti ringrazio mario.....il mio cruccio è quello di copiare gli ultimi 25/30 records nella pagina corrispondente (lun, mar, mer....)
    Ovviamente nn posso fare come mi dici perchè all'aggiunta di nuovi dati le coordinate dell'ntervallo cambiano; nn possono essere quindi 'fissi'.
    Avevo infatti provato creando delle macro, ma come dicevo sopra, saltavano gli ultimi records, che nn venivano letti.
    Prova a vedere il codice che mi ha inviato Rubik72.....onestamente ho provato ad inserire nel tuo codice la sua funzione di copia.......con risultati veramente vergognosi!
    Ti ringrazio cmq per il gentile interessamento.

  11. #11

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1024
    Versione Office
    .
    Likes ricevuti
    367
    Likes dati
    0
    Citazione Originariamente Scritto da Rubik72 Visualizza Messaggio
    Ho scritto qualche ciclo, vedi se va bene:

    Codice: 
    ...........
    Dim UltimaRiga As Integer
    Dim iRow As Integer
    Dim i As Integer
    Dim Num As Integer
    
    .........
    Ciao,

    senza entrare nel merito del resto del codice, torno a sottolineare che è formalmente errato dichiarare Integer le variabili che ricevono il valore delle proprietà Rows.Count o Columns.Count, in quanto dette proprietà restituiscono un valore Long.
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  12. #12
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3223
    Versione Office
    Excel2010
    Likes ricevuti
    628
    Likes dati
    155
    Ciao Mirco
    come t'ho detto la macro va adattata. Andiamo con ordine.
    Nel post con allegato il file una delle prime righe è:
    Codice: 
    uRg = Sheets("Foglio1").Cells(Rows.Count, 2).End(xlUp).Row
    
    che ti dà l'ultima riga piena, cioè dove vi sono dei valori. Se a te serve copiare, diciamo, le ultime 30 righe nel ciclo, come ti ho già suggerito, sostituisci il 2 con uRg - 30

    Attento: per la fretta nella mia macro non sono dimensionate le variabili! Ha ragione scossa (che saluto) è un lavoro che va sempre fatto.

    Fai sapere. Ciao,
    Mario

  13. #13
    L'avatar di Mirco
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Venezia
    Età
    56
    Messaggi
    20
    Versione Office
    office 2010
    Likes ricevuti
    0
    Likes dati
    1
    Ragazzi non avete idea del lavoro che mi state togliendo!.....sono dall'altra parte del pc che rimetto tutto in ordine ..........con una soddisfazione che nn avete idea!
    Scossa & Mario nn posso che dire 'si certo' 'avete ragione' perchè quello che voi state discutendo e quasi aramaico.....ma cmq sia pendo dalle vostre considerazioni e dalle vostre compilazioni.
    Prendo nota mario e rivedo la modifica.

    E sempre e cmq grz (avanzate uno spritz!):222:

  14. #14
    L'avatar di Mirco
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Venezia
    Età
    56
    Messaggi
    20
    Versione Office
    office 2010
    Likes ricevuti
    0
    Likes dati
    1
    ......e quindi Scossa mi suggerisci di copiare il codice qui sopra e di riportarlo nella compilazione di Mario.....dico giusto?.......eseguo!
    Grz Scossa.

Discussioni Simili

  1. Connessione a database con vba
    Di tigre2209 nel forum Domande su Excel VBA e MACRO
    Risposte: 7
    Ultimo Messaggio: 12/11/16, 19:51
  2. [Risolto] database di access
    Di theregied nel forum Domande su Microsoft Access
    Risposte: 1
    Ultimo Messaggio: 04/07/16, 16:28
  3. Database
    Di Grillo nel forum Domande su Excel in generale
    Risposte: 12
    Ultimo Messaggio: 27/04/16, 20:19
  4. database
    Di Giuseppe1974 nel forum Domande su Excel in generale
    Risposte: 16
    Ultimo Messaggio: 22/12/15, 17:40
  5. Analizzare database
    Di Gerardo Zuccalà nel forum Domande su Excel in generale
    Risposte: 7
    Ultimo Messaggio: 24/07/15, 00:30

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
  •