Risultati da 1 a 14 di 14

Discussione: ordina per scadenza



  1. #1
    L'avatar di nick0573
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Pistoia
    Età
    47
    Messaggi
    1072
    Versione Office
    Excel 2016
    Likes ricevuti
    19
    Likes dati
    15

    ordina per scadenza

    Ciao a tutti gli amici del forum ripropongo un vecchio file da voi già brillantemente risolto, però adesso ci sono due piccoli inconvenienti:
    1) Ho aggiunto un foglio "Scheda" nel file che allego che però mi si aggiunto anche nella tabella riepilogo del foglio "scadenze", si potrebbe dire alla macro riepilogo
    di conteggiare tutti i fogli prima del foglio "scadenze" solo però quelli che hanno un numero come nome???
    2) e poi quando aggiorno una data nelle tabelle dei vari anni e lancio la macro, non mi elimina tutta la riga come nel file che allego
    ma cancella solo mezza riga

    Grazie in anticipo di nuovo per aiuto
    File Allegati File Allegati
    windows 10
    Excel 2016

  2. #2
    L'avatar di rollis13
    Clicca e Apri
    Data Registrazione
    Nov 2015
    Località
    Cordenons
    Messaggi
    812
    Versione Office
    2016 64bit
    Likes ricevuti
    147
    Likes dati
    53
    Per una sistemazione veloce, senza entrare nel merito delle varie macro, sostituisci la macro "Riepilogo" con questa versione. Ho semplicemente escluso un paio di righe e aggiustato il range della pulizia oltre aver cambiato il contattore del fogli per adeguarlo alla situazione attuale:
    Codice: 
    Option Explicit
    
    Sub Riepilogo()
    
    
       Application.ScreenUpdating = False
       
       Dim NRc As Long, Vst As Long
       Dim x As Byte
       Const Fgl As String = "Scadenze"
       Const Grn As Byte = 30
       
       Sheets(Fgl).Select
       'NRc = Range("A" & Rows.Count).End(xlUp).Row
       'Range(Cells(3, 1), Cells(4, 7)).ClearContents
       'Range(Cells(5, 1), Cells(1000, 7)).Clear
       Range(Cells(3, 1), Cells(1000, 11)).ClearContents
       NRc = 3
       For x = 1 To Sheets.Count - 5    'era -3
           With Worksheets(x)
              Vst = 4
              Do While .Cells(Vst, 1) <> ""
                 If .Cells(Vst, 11) < Date Or .Cells(Vst, 11) <= Date + Grn Then
                     Range(.Cells(Vst, 1), .Cells(Vst, 4)).Copy
                     Cells(NRc, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
                     If .Cells(Vst, 11).Value = 0 Then
                         Cells(NRc, 5) = "Manca"
                         Cells(NRc, 7) = Sheets(x).Name
                         Cells(NRc, 8) = .Cells(Vst, 7).Value
                         Cells(NRc, 9) = .Cells(Vst, 8).Value
                         Cells(NRc, 10) = .Cells(Vst, 9).Value
                     Else
                         Cells(NRc, 5) = .Cells(Vst, 11).Value
                         Cells(NRc, 6) = Cells(NRc, 5).Value - Date
                         Cells(NRc, 7) = Sheets(x).Name
                         Cells(NRc, 8) = .Cells(Vst, 7).Value
                         Cells(NRc, 9) = .Cells(Vst, 8).Value
                         Cells(NRc, 10) = .Cells(Vst, 9).Value
                     End If
                     NRc = NRc + 1
                 End If
                 Vst = Vst + 1
              Loop
           End With
       Next x
       NRc = Range("A" & Rows.Count).End(xlUp).Row
       Rows("4:4").Copy
       Rows("5:" & NRc).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
       ActiveWorkbook.ActiveSheet.Sort.SortFields.Clear
       ActiveWorkbook.Worksheets(Fgl).Sort.SortFields.Add Key:=Range(Cells(3, 6), Cells(NRc, 6)), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
       With ActiveWorkbook.Worksheets(Fgl).Sort
          .SetRange Range(Cells(2, 1), Cells(NRc, 11))
          .Header = xlYes
          .MatchCase = False
          .Orientation = xlTopToBottom
          .SortMethod = xlPinYin
          .Apply
       End With
       Application.CutCopyMode = False
       Application.ScreenUpdating = True
       Cells(3, 1).Select
    
    
    End Sub

  3. #3
    L'avatar di nick0573
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Pistoia
    Età
    47
    Messaggi
    1072
    Versione Office
    Excel 2016
    Likes ricevuti
    19
    Likes dati
    15
    Ciao Rollis adesso và meglio.....
    unica cosa è che aggiornando una scadenza nei vari anni,
    quando lancio la macro riepilogo il nominativo non risulta però rimane evidenziata la riga in fondo di giallo,
    comunque mal di poco questo, evidenzio tutta la riga di giallo e la cancello.
    Una domanda adesso posso aggiungere altri senza che diano problemi alla macro riepilogo????
    oppure cosa devo tener conto per intoppare di nuovo in questo problema?????


    Mille Mille grazie del tuo aiuto
    windows 10
    Excel 2016

  4. #4
    L'avatar di rollis13
    Clicca e Apri
    Data Registrazione
    Nov 2015
    Località
    Cordenons
    Messaggi
    812
    Versione Office
    2016 64bit
    Likes ricevuti
    147
    Likes dati
    53
    L'unico grande problema è che nella macro tutto gira attorno al numero del foglio e non al suo nome, pertanto, se aggiungi altri anni devi anche gestire la numerazione progressiva dei fogli dal pannello vba. Se invece aggiungi solo nominativi non mi sembrava di aver visto criticità particolari.

    Per quanto riguarda le righe gialle che rimangono in fondo, che avevo notato anch'io, questo dipende da come è stato applicata la Formattazione Condizionale alle celle e che le colora. Mi pare anche di ricordare che la Formattazione Condizionale era applicata solo fino alla riga 20 o 22 e nemmeno in modo uguale nelle due sezioni (sinistra e destra). Sistemata la formattazione dovrebbe scomparire anche il problema.

  5. #5
    L'avatar di nick0573
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Pistoia
    Età
    47
    Messaggi
    1072
    Versione Office
    Excel 2016
    Likes ricevuti
    19
    Likes dati
    15
    scusa Rollis.....
    ma il prossimo anno quando ad esempio elimino un foglio "1996" e ne aggiungo uno nuovo "2011"
    la formula non funzionerà correttamente???
    windows 10
    Excel 2016

  6. #6
    L'avatar di rollis13
    Clicca e Apri
    Data Registrazione
    Nov 2015
    Località
    Cordenons
    Messaggi
    812
    Versione Office
    2016 64bit
    Likes ricevuti
    147
    Likes dati
    53
    Immagino che quando dici "elimino un foglio "1996"" intendi semplicemente rinominare il foglio da "1996" a "2011"; in questo caso la numerazione "interna" dall' 1 al 14 del fogli rimane tale e la macro continua a funzionare.
    Come già detto, visto che ti manca il foglio "1999", tra 3 anni ne dovrai aggiungere uno nuovo e dovrai fare in modo che abbia il n. interno 15 (così com'è adesso il file il nuovo foglio prenderebbe il 20, vedi nel vba la numerazione).

  7. #7
    L'avatar di nick0573
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Pistoia
    Età
    47
    Messaggi
    1072
    Versione Office
    Excel 2016
    Likes ricevuti
    19
    Likes dati
    15
    Se non ho capito male..... Importante e il numero dei fogli da conteggiare
    Cioè n questo caso 14 indipendentemente da anno che c'è scritto
    Se nvece volessi conteggiare un 15esimo foglio lo dovrei scrvere dentro
    La marco che sono 15 e non più 14
    windows 10
    Excel 2016

  8. #8
    L'avatar di rollis13
    Clicca e Apri
    Data Registrazione
    Nov 2015
    Località
    Cordenons
    Messaggi
    812
    Versione Office
    2016 64bit
    Likes ricevuti
    147
    Likes dati
    53
    Non esattamente, nella macro alle righe "For x = 1 To Sheets.Count - 5" / "With Worksheets(x)" viene calcolato (19 - 5 = 14) il totale dei fogli utilizzati meno i 5 di servizio per una rimanenza di 14 fogli anno. Pertanto, la macro va modificata solo quando inserisci un nuovo foglio di servizio.
    Inizialmente l'errore nella macro consisteva nell'aver indicato solo 3 fogli di servizio invece degli attuali 5; probabilmente col tempo avevi aggiunto 2 nuovi fogli di servizio senza adeguare la macro.

    Se apri la finestra vba a sinistra nella lista degli oggetti nella sezione Progetto ci sono i fogli numerati da 1 a 19 e tra parentesi il nome che si vede nelle linguette che vedi in basso quando sei nella finestra Excel. Perché funzioni correttamente la tua macro (così com'è articolata) bisogna che i fogli anno siano sempre tra i primi a partire da 1.
    Se ora aggiungi un foglio e nella linguetta scrivi 1999 vedrai che nel vba prenderà il nome Foglio20 (1999) ma con questo numero quando lanci la macro non verrà preso in considerazione; quello che devi fare è rinominarlo in Foglio15 (1999).

    Per farlo, nella finestra vba a sinistra nella sezione Progetto, seleziona l'attuale foglio Foglio15 (Scheda) ed in basso nella sezione Proprietà rinominalo Foglio21 (Scheda); ricorda che il nome completo è formato da 2 parti: FoglioXX (linguetta). Ora seleziona Foglio20 (1999) e rinominalo Foglio15 (1999).
    A questo punto quando la riga "For x = 1 To Sheets.Count - 5" viene eseguita calcolerà: 20 - 5 = 15 fogli anno dal 1 a 15 da elaborare.

  9. #9
    L'avatar di nick0573
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Pistoia
    Età
    47
    Messaggi
    1072
    Versione Office
    Excel 2016
    Likes ricevuti
    19
    Likes dati
    15
    grazie molto per le tue delucidazioni infatti ho aggiunto due nuovi fogli ma non sono io ad evere eseguito la marcro in quanto non ne sono capace,
    quindi appena ho la necessità di aggiungere un nuovo foglio da far calcolare alla macro proverò la madifica che mi hai appena spiegato


    mille grazie
    windows 10
    Excel 2016

  10. #10
    L'avatar di rollis13
    Clicca e Apri
    Data Registrazione
    Nov 2015
    Località
    Cordenons
    Messaggi
    812
    Versione Office
    2016 64bit
    Likes ricevuti
    147
    Likes dati
    53
    Prego, essere d'aiuto è sempre un piacere.

  11. #11
    L'avatar di nick0573
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Pistoia
    Età
    47
    Messaggi
    1072
    Versione Office
    Excel 2016
    Likes ricevuti
    19
    Likes dati
    15
    Allora tra un anno se c'è bisogno di aggiornarlo te lo rimando.....������
    windows 10
    Excel 2016

  12. #12
    L'avatar di rollis13
    Clicca e Apri
    Data Registrazione
    Nov 2015
    Località
    Cordenons
    Messaggi
    812
    Versione Office
    2016 64bit
    Likes ricevuti
    147
    Likes dati
    53
    No, no, prova ora che così ti eserciti :286: e non serve che sia sul foglio originale.

  13. #13
    L'avatar di nick0573
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Pistoia
    Età
    47
    Messaggi
    1072
    Versione Office
    Excel 2016
    Likes ricevuti
    19
    Likes dati
    15
    Ok... Proverò e ti faccio sapere dove trovo difficoltà.... Ora che è' l'ho fresco nella mente
    Grazie
    windows 10
    Excel 2016

  14. #14
    L'avatar di nick0573
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Pistoia
    Età
    47
    Messaggi
    1072
    Versione Office
    Excel 2016
    Likes ricevuti
    19
    Likes dati
    15
    Ciao Rollis13 ho fatto un pò di prove e ho visto che senza dover rinominare il foglio basta che modifichi "For x = 1 To Sheets.Count - 5" in numero (in questo caso 5)
    cioè mi mi conta sempre tutti i fogli che via via aggiungo e mi sottrae il numero che scrivo, quindi se il foglio scadenza è il quint' ultimo funziona.
    se aggiungo un foglio dopo il foglio scadenze correggo la macro e scrivo 6
    sembra che tutto vada......rimane
    solo quel piccolo errore visivo giallo che non elimina tutta la riga quando correggo una data

    Grazie per il tuo prezioso aiuto......:241:
    windows 10
    Excel 2016

Discussioni Simili

  1. [Risolto] ordina per data con una condizione
    Di Francesco nel forum Domande su Excel in generale
    Risposte: 11
    Ultimo Messaggio: 08/01/17, 20:32
  2. ordina involontariamente
    Di Onofrio nel forum Domande su Excel in generale
    Risposte: 6
    Ultimo Messaggio: 02/05/16, 03:58
  3. Ordina tabella per data
    Di nick0573 nel forum Domande su Excel VBA e MACRO
    Risposte: 14
    Ultimo Messaggio: 29/04/16, 14:25
  4. problema con l'opzione ordina
    Di gtmoro90 nel forum Domande su Excel in generale
    Risposte: 3
    Ultimo Messaggio: 04/02/16, 23:22
  5. estrai ed ordina numeri (solo una volta)
    Di Andre81 nel forum Domande su Excel in generale
    Risposte: 2
    Ultimo Messaggio: 23/07/15, 17:20

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
  •