Stellar Blade Un'esclusiva PS5 che sta facendo discutere per l'eccessiva bellezza della protagonista. Vieni a parlarne su Award & Oscar!

Excel Forum Per condividere esperienze su Microsoft Excel

Aggiornamento automatico ordinamento valori righe

  • Messaggi
  • OFFLINE
    mik771977
    Post: 5
    Registrato il: 27/03/2020
    Età: 47
    Utente Junior
    excel 2013
    00 28/04/2020 11:14
    Ciao, chiedo aiuto per questo problema: devo ordinare in automatico all'apertura del file i fogli Codig_sintesi_SP e DATA, Codig_sintesi_DATA e SP, Copparo_sintesi_SP e DATA,Copparo_sintesi_DATA e SP, Portom_sintesi_SP e DATA, Portom_sintesi_DATA e SP, Vigar_sintesi_SP e DATA, Vigar_sintesi_DATA e SP, che pescano dal foglio "sintesi_sfalci_distretti" i dati, a loro volta acquisiti dagli altri fogli del file, i quali pescano da un file esterno di rapporto giornaliero (per fare questo esempio ho inserito i valori nei fogli del file da cui pesca "sintesi_sfalci_distretti").

    Ho inserito l'ordinamento per "SP" e "data", o viceversa in base alle necessità, ma ogni volta che sul file esterno di rapporto giornaliero aggiungo valori, devo aggiornare i filtri, non lo fa automaticamente.

    C'è possibilità di inserire un pulsante, o attivare un comando per aggiornare automaticamente l'ordinamento?
    Grazie come sempre...

    http://www.filedropper.com/sfalcisintesiesempio_2
  • ABCDEF@Excel
    10 28/04/2020 14:15
    Salva il files per macro = ???.XLSM (casomai abilitare le macro)
    ALT+F11 si apre l'editor. In alto inserisci MODULO1 e incolla il codice sotto.
    Questo solo per due fogli, seleziona la parte tra le righe verdi ed incolla prima di END SUB (per ogni incolla che fai devi sostituire il nome del foglio)

    >>>o viceversa in base alle necessità
    EDit, Se l'ordinamento non è giusto bisognera invertire riga 1 e 2
    Sub auto_open()
    Dim ur As Long
    '...............
        Worksheets("Portom_sintesi_SP e DATA").Activate
        ur = Range("A" & Rows.Count).End(xlUp).Row
        ActiveWorkbook.Worksheets("Portom_sintesi_SP e DATA").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Portom_sintesi_SP e DATA").Sort.SortFields.Add Key _
            :=Range("B2:B" & ur), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
            :=xlSortNormal '1
        ActiveWorkbook.Worksheets("Portom_sintesi_SP e DATA").Sort.SortFields.Add Key _
            :=Range("A2:A" & ur), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
            :=xlSortNormal '2
        With ActiveWorkbook.Worksheets("Portom_sintesi_SP e DATA").Sort
            .SetRange Range("A2:E" & ur)
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    '...........
        Worksheets("Copparo_sintesi_DATA e SP").Activate
        ur = Range("A" & Rows.Count).End(xlUp).Row
        ActiveWorkbook.Worksheets("Copparo_sintesi_DATA e SP").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Copparo_sintesi_DATA e SP").Sort.SortFields.Add Key _
            :=Range("B2:B" & ur), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
            :=xlSortNormal
        ActiveWorkbook.Worksheets("Copparo_sintesi_DATA e SP").Sort.SortFields.Add Key _
            :=Range("A2:A" & ur), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
            :=xlSortNormal
        With ActiveWorkbook.Worksheets("Copparo_sintesi_DATA e SP").Sort
            .SetRange Range("A2:E" & ur)
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End Sub

    [Modificato da ABCDEF@Excel 28/04/2020 15:51]
  • OFFLINE
    mik771977
    Post: 5
    Registrato il: 27/03/2020
    Età: 47
    Utente Junior
    excel 2013
    00 30/04/2020 09:57
    Re:
    Ciao, ti ringrazio tantissimo per la macro; ho provato a svilupparla per gli 8 fogli e però mi da "errore di compilazione: rilevato nome non univoco:auto_open"
    Come posso modificare per farla funzionare?
    Grazie ancora. Michele


    ABCDEF@Excel, 28/04/2020 14:15:

    Salva il files per macro = ???.XLSM (casomai abilitare le macro)
    ALT+F11 si apre l'editor. In alto inserisci MODULO1 e incolla il codice sotto.
    Questo solo per due fogli, seleziona la parte tra le righe verdi ed incolla prima di END SUB (per ogni incolla che fai devi sostituire il nome del foglio)

    >>>o viceversa in base alle necessità
    EDit, Se l'ordinamento non è giusto bisognera invertire riga 1 e 2
    Sub auto_open()
    Dim ur As Long
    '...............
        Worksheets("Portom_sintesi_SP e DATA").Activate
        ur = Range("A" & Rows.Count).End(xlUp).Row
        ActiveWorkbook.Worksheets("Portom_sintesi_SP e DATA").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Portom_sintesi_SP e DATA").Sort.SortFields.Add Key _
            :=Range("B2:B" & ur), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
            :=xlSortNormal '1
        ActiveWorkbook.Worksheets("Portom_sintesi_SP e DATA").Sort.SortFields.Add Key _
            :=Range("A2:A" & ur), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
            :=xlSortNormal '2
        With ActiveWorkbook.Worksheets("Portom_sintesi_SP e DATA").Sort
            .SetRange Range("A2:E" & ur)
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    '...........
        Worksheets("Copparo_sintesi_DATA e SP").Activate
        ur = Range("A" & Rows.Count).End(xlUp).Row
        ActiveWorkbook.Worksheets("Copparo_sintesi_DATA e SP").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Copparo_sintesi_DATA e SP").Sort.SortFields.Add Key _
            :=Range("B2:B" & ur), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
            :=xlSortNormal
        ActiveWorkbook.Worksheets("Copparo_sintesi_DATA e SP").Sort.SortFields.Add Key _
            :=Range("A2:A" & ur), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
            :=xlSortNormal
        With ActiveWorkbook.Worksheets("Copparo_sintesi_DATA e SP").Sort
            .SetRange Range("A2:E" & ur)
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End Sub





  • OFFLINE
    mik771977
    Post: 6
    Registrato il: 27/03/2020
    Età: 47
    Utente Junior
    excel 2013
    00 14/05/2020 07:39
    Re:
    Ciao, ti ringrazio tantissimo per la macro; ho provato a svilupparla per gli 8 fogli e però mi da "errore di compilazione: rilevato nome non univoco:auto_open"
    Come posso modificare per farla funzionare?
    Ho provato in questi giorni ma non ci arrivo in fondo..
    Grazie ancora. Michele

    ABCDEF@Excel, 28/04/2020 14:15:

    Salva il files per macro = ???.XLSM (casomai abilitare le macro)
    ALT+F11 si apre l'editor. In alto inserisci MODULO1 e incolla il codice sotto.
    Questo solo per due fogli, seleziona la parte tra le righe verdi ed incolla prima di END SUB (per ogni incolla che fai devi sostituire il nome del foglio)

    >>>o viceversa in base alle necessità
    EDit, Se l'ordinamento non è giusto bisognera invertire riga 1 e 2
    Sub auto_open()
    Dim ur As Long
    '...............
        Worksheets("Portom_sintesi_SP e DATA").Activate
        ur = Range("A" & Rows.Count).End(xlUp).Row
        ActiveWorkbook.Worksheets("Portom_sintesi_SP e DATA").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Portom_sintesi_SP e DATA").Sort.SortFields.Add Key _
            :=Range("B2:B" & ur), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
            :=xlSortNormal '1
        ActiveWorkbook.Worksheets("Portom_sintesi_SP e DATA").Sort.SortFields.Add Key _
            :=Range("A2:A" & ur), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
            :=xlSortNormal '2
        With ActiveWorkbook.Worksheets("Portom_sintesi_SP e DATA").Sort
            .SetRange Range("A2:E" & ur)
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    '...........
        Worksheets("Copparo_sintesi_DATA e SP").Activate
        ur = Range("A" & Rows.Count).End(xlUp).Row
        ActiveWorkbook.Worksheets("Copparo_sintesi_DATA e SP").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Copparo_sintesi_DATA e SP").Sort.SortFields.Add Key _
            :=Range("B2:B" & ur), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
            :=xlSortNormal
        ActiveWorkbook.Worksheets("Copparo_sintesi_DATA e SP").Sort.SortFields.Add Key _
            :=Range("A2:A" & ur), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _
            :=xlSortNormal
        With ActiveWorkbook.Worksheets("Copparo_sintesi_DATA e SP").Sort
            .SetRange Range("A2:E" & ur)
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End Sub





  • ABCDEF@Excel
    00 14/05/2020 09:26
    >>>seleziona la parte tra le righe verdi...
    mmmh Sub auto_open() Dim ur As Long... non rientrano trà le righe verdi.

    La parte relativa inizia con Worksheets e finisce con End With
    Comunque dato che hai detto che l'ordinamento potrebbe essere differente nei vari fogli. Suggerisco d'eliminare la macro, avviare il registratore, mettere in ordine tutti i fogli e spegnere il registratore. A questo punto basta allega il codice che modifico le righe.
  • 15MediaObject5,0015 1