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

inserire una riga con intestazione in automatico ogni 5 righe

  • Messaggi
  • OFFLINE
    excelnewbye
    Post: 1
    Registrato il: 21/07/2020
    Età: 36
    Utente Junior
    excel 2019
    00 21/07/2020 10:54
    inserire una riga con intestazione in automatico ogni 8 righe
    nel file allegato riesco a scaricare i dati aggiornati da un sito internet e riesco a ordinare le righe in ordine crescente tramite 1 macro..

    vorrei inserire ogni 8 righe ovvero ogni estrazione una riga di intestazione con la data presa dalla colonna 1
    [Modificato da excelnewbye 21/07/2020 10:57]
  • OFFLINE
    rollis13
    Post: 955
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Senior
    Excel 2016-32bit Win11
    00 21/07/2020 16:02
    Ti propongo questa mia integrazione alla tua macro.
    Faccio notare che nel titolo hai scritto 'ogni 5 righe' mentre nel testo parli di 'ogni 8 righe ovvero ogni estrazione' poi nella realtà le estrazioni hanno salti con altri valori; presumendo che vi sia una estrazione ad ogni cambio di data nella colonna A ho preferito privilegiare quest'ultimo dettaglio.
    Ho anche inserito una pulizia delle colonne d'appoggio (J:N) per evitare problemi di formattazione delle celle con data in caso di ripetizione dell'esecuzione della macro.
    La mia parte di macro non è una 'scheggia' dato che confronta le date una ad una e sono 'solo' 64658, ma tant'è, fa quanto richiesto. Al limite la usi come base di partenza per sviluppare il tuo progetto ... dopo aver trovato una soluzione per velocizzare la tua parte di macro (altrettanto lenta) che mette in ordine in numeri nelle righe.
    Option Explicit
    
    Sub OrdinaCrescente()
    
        Dim vector As Variant
        Dim Rig    As Long, Col As Long, Val As Long
    
        Columns("J:N").Clear                          'pulizia preventiva colonne J:N
        Application.Calculation = xlManual
        For Rig = 2 To Cells(Rows.Count, "C").End(xlUp).Row
            ''carico in un vettore le celle interessate
            vector = Sheets("Foglio1").Range(Cells(Rig, "C"), Cells(Rig, "G"))
            Col = 10
            For Val = 1 To 5
                Sheets("Foglio1").Cells(Rig, Col) = Application.Small(vector, Val)
                ''scrivo il valore dal piu' piccolo al piu' grande nella sua colonna
                Col = Col + 1
            Next Val
        Next Rig
        '--------------
        Application.ScreenUpdating = False            'evita lo sfarfallio dello schermo
        For Rig = Cells(Rows.Count, "A").End(xlUp).Row To 2 Step -1 'cicla all'inverso l'elenco
            If Cells(Rig, 1).Value <> Cells(Rig - 1, 1).Value Then 'confronta le date tra due righe
                Range("J" & Rig & ":N" & Rig).Insert Shift:=xlDown 'inserisce una fila di celle vuote
                Cells(Rig, 10) = Format(Cells(Rig, 1), "mm/dd/yyyy") 'inserisce e formatta le date
            End If
        Next Rig
        Columns(Col).EntireColumn.AutoFit             'adatta la larghezza della colonna
        Application.ScreenUpdating = True
        '--------------
        Application.Calculation = xlAutomatic
        Calculate
        
    End Sub
    [Modificato da rollis13 21/07/2020 16:03]

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
  • OFFLINE
    excelnewbye
    Post: 1
    Registrato il: 21/07/2020
    Età: 36
    Utente Junior
    excel 2019
    00 21/07/2020 18:49
    grazie ora testo il tuo...

    ero riuscito con questo vba a creare le linee vuote..

    Sub InsertRowsAtValueChangeColumnA()
    Dim X As Long, LastRow As Long
    Const DataCol As String = "A"
    Const StartRow = 2
    LastRow = Cells(Rows.Count, DataCol).End(xlUp).Row
    Application.ScreenUpdating = False
    For X = LastRow To StartRow + 1 Step -1
    If Cells(X, DataCol).Value <> Cells(X - 1, DataCol) Then Rows(X).Insert
    Next
    Application.ScreenUpdating = True
    End Sub


    mi serviva mettere intestazione ora

    è possibile inserire nella colonna I le relative ruote nel tuo script?
    Perchè ora risultano sfalsate e non si sa a che ruota si riferiscono
    [Modificato da excelnewbye 22/07/2020 08:50]
  • OFFLINE
    rollis13
    Post: 956
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Senior
    Excel 2016-32bit Win11
    00 21/07/2020 23:13
    Vedi se così con qualche aggiustamento può bastare:
    Option Explicit
    
    Sub OrdinaCrescente()
    
        Dim vector As Variant
        Dim Rig    As Long, Col As Long, Val As Long
        Dim i, conta
        
        Columns("I:N").Clear                          'pulizia preventiva colonne I:N
        Application.Calculation = xlManual
        For Rig = 2 To Cells(Rows.Count, "C").End(xlUp).Row
            ''carico in un vettore le celle interessate
            vector = Sheets("Foglio1").Range(Cells(Rig, "C"), Cells(Rig, "G"))
            Col = 10
            For Val = 1 To 5
                Sheets("Foglio1").Cells(Rig, Col) = Application.Small(vector, Val)
                ''scrivo il valore dal piu' piccolo al piu' grande nella sua colonna
                Col = Col + 1
            Next Val
        Next Rig
        '--------------
        For Rig = Cells(Rows.Count, "A").End(xlUp).Row To 2 Step -1 'cicla all'inverso l'elenco
            If Cells(Rig, 1).Value <> Cells(Rig - 1, 1).Value Then 'confronta le date tra due righe
                Range("I" & Rig & ":N" & Rig).Insert Shift:=xlDown 'inserisce una fila di celle vuote
                Cells(Rig, 9) = Format(Cells(Rig, 1), "mm/dd/yyyy") 'inserisce e formatta le date in colonna I
                For i = 1 To conta + 1                'ciclo pari alle date ripetitive
                    Cells(Rig + i, 9) = Cells(Rig + i - 1, 2) 'inserisci ruota in colonna I
                Next i
                conta = 0                             'resetta il contatore date ripetitive
            Else
                conta = conta + 1                     'incrementa contatore date ripetitive
            End If
        Next Rig
        Columns(9).EntireColumn.AutoFit               'adatta la larghezza della colonna I
        '--------------
        Application.Calculation = xlAutomatic
        Calculate
        
    End Sub
    [Modificato da rollis13 21/07/2020 23:25]

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
  • OFFLINE
    excelnewbye
    Post: 2
    Registrato il: 21/07/2020
    Età: 36
    Utente Junior
    excel 2019
    00 22/07/2020 09:14
    Ottimo Grazie..

    mi chiedevo... una volta lanciato la prima volta e avuto l'ordine desiderato, se per le volte successive non fosse possibile fare 1 bottone per ordinare ad ogni aggiornamento dell'estrazione solo le ultime linee aggiunte e non far rifare tutto daccapo..

    Diventerebbe quasi istantaneo
  • OFFLINE
    rollis13
    Post: 957
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Senior
    Excel 2016-32bit Win11
    00 22/07/2020 14:49
    Sicuramente sì, 'tutto' si può fare con Excel (a parte il ☕ che personalmente non ho mai visto fare), ma, a mio modo di valutare l'attuale progetto, è tutto da rifare.
    Ogni parte della macro va interamente riprogettata e contemporaneamente memorizzato da qualche parte il punto attuale da cui ripartire con l'elaborazione.
    Se dal sito si possono scaricare separatamente solo i dati più recenti anche l'aggiornamento potrebbe essere gestito in modo più semplice per poi accodarlo ai dati elaborati attuali.
    Vedo per te un buon 'compito per casa' da analizzare e sviluppare 😉.

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
  • OFFLINE
    excelnewbye
    Post: 3
    Registrato il: 21/07/2020
    Età: 36
    Utente Junior
    excel 2019
    00 22/07/2020 14:54
    vista la mia totale inesperienza con excel per l'aggiornamento lo faccio lato php.. scaricando da un sito il file zip, lo scompatto in txt e poi lo faccio leggere ad excel!

    quindi in linea teorica se riesco a crearmi 1 txt via php con solo l'ultima estrazione diventa + semplice in excel?


    ho notato che potrei scaricare ultima estrazione importando la table0 da qui:
    https://www.estrazionedellotto.it/
    [Modificato da excelnewbye 22/07/2020 15:08]
  • OFFLINE
    rollis13
    Post: 958
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Senior
    Excel 2016-32bit Win11
    00 22/07/2020 15:07
    Certamente sì, invece di rielaborare 64658 e più righe ti adatti l'attuale macro (o ne crei una simile con tanto di bottone) per gestire le poche righe aggiornate e alla fine, con i dati ottenuti dopo l'elaborazione, provvedi ad incollarli sotto l'attuale elenco in colonne I-N.
    Per non sovrascrivere la tabella in colonne A-G potresti anche preparare tutto in Foglio2 e poi copiare in Foglio1 colonne I-N.
    [Modificato da rollis13 22/07/2020 15:10]

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
  • OFFLINE
    excelnewbye
    Post: 4
    Registrato il: 21/07/2020
    Età: 36
    Utente Junior
    excel 2019
    00 22/07/2020 15:09
    ho notato che potrei anche importare i dati automaticamente da excel importando la table0 da qui
    https://www.estrazionedellotto.it/

    ma resta il problema di come dire ad excel di aggiungere le righe solo se diverse?
  • OFFLINE
    rollis13
    Post: 959
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Senior
    Excel 2016-32bit Win11
    00 22/07/2020 15:17
    No, secondo me non va bene se sei costretto a discriminare se i dati sono diversi; così facendo dovresti comunque ciclare +64658 righe per trovare il punto d'ingresso.
    Questa informazione la devi memorizzare in qualche cella d'appoggio (es. la data dell'ultima estrazione presente nelle colonne I-N) e così sarà l'unico confronto da fare.

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
  • OFFLINE
    excelnewbye
    Post: 5
    Registrato il: 21/07/2020
    Età: 36
    Utente Junior
    excel 2019
    00 22/07/2020 15:28
    potrei accontentarmi anche di farglielo fare 1 centinaio di volte.. scaricando e aggiornando solo il 2020 e facendolo aggiornare dalla riga 63923

    e poi adattare lo script da 63923 fino a ultima riga?

    il resto mi resterebbe cosi come è?
    [Modificato da excelnewbye 22/07/2020 15:29]
  • OFFLINE
    rollis13
    Post: 960
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Senior
    Excel 2016-32bit Win11
    00 22/07/2020 15:50
    Esatto, questa è la riga dove hai controllato il ciclo:

    For Rig = 2 To Cells(Rows.Count, "C").End(xlUp).Row

    e "2" è la tua prima riga, nulla ti vieta di gestire tale dato con una variabile a cui assegni il valore che ti serve. Come hai scritto, sapendo di fare solo l'anno 2020, dovrai valorizzare la variabile con 63923. Naturalmente poi dovrai 'aggiustare/adeguare' anche altre parti della macro come servirà.
    Dovendo 'accodare' alla colonna I-N suggerisco di lavorare solo sulle ultime estrazioni (mancanti) e non sull'intero anno altrimenti dovrai 'ritagliare' anche i dati 2020 in colonna I-N prima di accodare.

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
  • OFFLINE
    excelnewbye
    Post: 6
    Registrato il: 21/07/2020
    Età: 36
    Utente Junior
    excel 2019
    00 22/07/2020 16:09
    si stavo valutando il tuo suggerimento
    ma devo sicuramente modificare:
    Columns("I:N").Clear
    perchè cancellerebbe tutto e non va bene...

    inoltre deve iniziare a scrivere dall'ultima riga.. e non dalla seconda... nè dal valore che contiene "Rig" visto che sono sfalsate le colonne!!

    forse non ho capito a pieno il tuo suggerimento! rileggo
    [Modificato da excelnewbye 22/07/2020 16:10]
  • OFFLINE
    rollis13
    Post: 961
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Senior
    Excel 2016-32bit Win11
    00 22/07/2020 18:21
    Giustamente come hai analizzato, nella nuova versione della macro non dovrai più inserire la pulizia delle colonne I-N e per l'accodamento dell'ultima estrazione rielaborata frutterai la funzione Cells(Rows.Count, "I").End(xlUp).Row + 1 per calcolarti il numero di riga della prima cella in colonna I dove iniziare ad incollare.

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
  • OFFLINE
    excelnewbye
    Post: 7
    Registrato il: 21/07/2020
    Età: 36
    Utente Junior
    excel 2019
    00 22/07/2020 21:22
    Però manca anche la condizione per lanciare lo script solo quando necessario

    che potrebbe essere (da tradurre in VBA)
    If l'ultima riga della colonna A ha lo stesso valore dell'ulitma riga -12 della colonna J

    ABBOZZO:
    If Cells(Rows.Count, "A").End(xlUp).Row.Value <> Cells(Rows.Count, "A").End(xlUp).Row.Value -12).Value Then

    non fare niente!

    else
    fai...


    [Modificato da excelnewbye 22/07/2020 21:28]
  • OFFLINE
    rollis13
    Post: 962
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Senior
    Excel 2016-32bit Win11
    00 22/07/2020 21:55
    L'approccio è corretto, l'impostazione dell' If/Then/Else è corretta ma per quel po' che ho intuito un confronto tipo quello che hai 'abbozzato' lo dovrai fare tra la colonna A (contenente la data della o delle nuove estrazioni) e la l'ultima data in colonna I dove andrai poi ad aggiungere solo l'elaborazione delle ultime/a estrazione in modo da gestire solamente quello che ti serve poche righe invece di +64658).
    Vedi che sopra ho scritto 'intuito' perché non mi sono preso la briga di analizzare il tuo progetto e nei post precedenti mi sono limitato ad aggiustare la tua macro in modo da ottenere il risultato che chiedevi. Ora più di così non sono in grado di aiutarti.

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
  • OFFLINE
    excelnewbye
    Post: 8
    Registrato il: 21/07/2020
    Età: 36
    Utente Junior
    excel 2019
    00 22/07/2020 22:07
    Re:
    rollis13, 22/07/2020 21:55:

    'abbozzato' lo dovrai fare tra la colonna A (contenente la data della o delle nuove estrazioni) la l'ultima data in colonna I dove andrai poi ad aggiungere solo l'elaborazione delle ultime/a estrazione in modo da gestire solamente quello che ti serve poche righe invece di +64658).



    ABBOZZO:
    If Cells(Rows.Count, "A").End(xlUp).Row.Value <> Cells(Rows.Count, "J").End(xlUp).Row.Value -12).Value Then

    Nella mia testa volevo dire prendi il valore dell'ultima riga della colonna A che contiene la data e confrontala con l'ultima riga della colonna J -12 se la data e' uguale non fare nulla..

    altrimenti...

    ma non conoscendo la sintassi avrò sbagliata.. Cerco la sintassi corretta


    [Modificato da excelnewbye 22/07/2020 22:11]
  • OFFLINE
    rollis13
    Post: 963
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Senior
    Excel 2016-32bit Win11
    00 22/07/2020 22:27
    If Range("A" & Cells(Rows.Count, "A").End(xlUp).Row).Value <> Range("J" & Cells(Rows.Count, "J").End(xlUp).Row - 11).Value Then
        'fai qualcosa
    Else
        'fai qualcos'altro
    End If

    Questa potrebbe essere la sintassi adatta ma ricordo anche che con la mia ultima versione della macro la colonna di riferimento era la I e non la J e sempre se e in futuro le ruote siano sempre 11.
    [Modificato da rollis13 22/07/2020 22:29]

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
  • OFFLINE
    excelnewbye
    Post: 9
    Registrato il: 21/07/2020
    Età: 36
    Utente Junior
    excel 2019
    00 23/07/2020 09:12
    Sto provando a ricostruire quello che mi hai illustrato... avevi ragione era colonna "I"

    Sub OrdinaUltima()
     
        Dim vector As Variant
        Dim Rig    As Long, Col As Long, Val As Long
        Dim i, conta
         
        'Columns("I:N").Clear                          'pulizia preventiva colonne I:N
        Application.Calculation = xlManual
        For Rig = 64660 To Cells(Rows.Count, "C").End(xlUp).Row 'da riga 64659 a ultima della colonna C
        
            ''carico in un vettore le celle interessate
            vector = Sheets("Foglio1").Range(Cells(Rig, "C"), Cells(Rig, "G"))
            Col = 10
            For Val = 1 To 5
                Sheets("Foglio1").Cells(Rig, Col) = Application.Small(vector, Val)
                ''scrivo il valore dal piu' piccolo al piu' grande nella sua colonna
                Col = Col + 1
            Next Val
        Next Rig
        '--------------
        For Rig = Cells(Rows.Count, "A").End(xlUp).Row To 64660 Step -1 'cicla all'inverso l'elenco
            'If Cells(Rig, 1).Value <> Cells(Rig - 1, 1).Value Then 'confronta le date tra due righe
            If Range("A" & Cells(Rows.Count, "A").End(xlUp).Row).Value <> Range("I" & Cells(Rows.Count, "I").End(xlUp).Row - 1).Value Then
               ' Cells(Rows.Count, "I").End(xlUp).Row + 1 funzione dove iniziare a scrivere i dati ovvero prima riga vuota colonna I
                Range("I" & Rig & ":N" & Rig).Insert Shift:=xlDown 'inserisce una fila di celle vuote
                Cells(Rig, 9) = Format(Cells(Rig, 1), "mm/dd/yyyy") 'inserisce e formatta le date in colonna I
                For i = 1 To conta + 1                'ciclo pari alle date ripetitive
                    Cells(Rig + i, 9) = Cells(Rig + i - 1, 2) 'inserisci ruota in colonna I
                Next i
                conta = 0                             'resetta il contatore date ripetitive
            Else
                conta = conta + 1                     'incrementa contatore date ripetitive
            End If
        Next Rig
        Columns(9).EntireColumn.AutoFit               'adatta la larghezza della colonna I
        '--------------
        Application.Calculation = xlAutomatic
        Calculate
         
    End Sub


    avevo provato anche a inizializzare 1 nuova var
    ultima = Cells(Rows.Count, "I").End(xlUp).Row + 1

    per poi fare
    Range("I" & ultima & ":N" & ultima).Insert Shift:=xlDown
    [Modificato da excelnewbye 23/07/2020 11:13]
  • OFFLINE
    rollis13
    Post: 964
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Senior
    Excel 2016-32bit Win11
    10 23/07/2020 15:58
    Aggiustata così mi pare che giri meglio.
    Per necessità bisogna prendere nota di dov'è finita la precedente elaborazione. Per ora nella macro l'avevi impostata manualmente a 64670 e come vedrai l'ho sostituita con una variabile 'uData' il cui valore +1 l'ho parcheggiato nella cella P1 e che verrà aggiornato automaticamente a termine dell'elaborazione.
    Prima di fare una prova devi inserire manualmente nella cella P1 il primo numero di riga vuota in colonna A.
    Option Explicit
    
    Sub OrdinaUltima()
    
        Dim vector As Variant
        Dim Rig    As Long, Col As Long, Val As Long
        Dim i, conta, rig1, rig2
        Dim uData                                     'riga ultima data estrazione elaborata +1
        
        Application.Calculation = xlManual
        '--- salvato dato ultima riga (ora 64660) e sostituita con la variabile uData ---
        uData = Range("P1")                           'prelevo il numero prima riga dall'ultima elaborazione
        For Rig = uData To Cells(Rows.Count, "C").End(xlUp).Row 'da riga uData a ultima della colonna C
            ''carico in un vettore le celle interessate
            vector = Sheets("Foglio1").Range(Cells(Rig, "C"), Cells(Rig, "G"))
            Col = 10
            rig1 = Cells(Rows.Count, "J").End(xlUp).Row + 1 '<-- trovare ultima riga compilata I-N
            For Val = 1 To 5
                Sheets("Foglio1").Cells(rig1, Col) = Application.Small(vector, Val)
                ''scrivo il valore dal piu' piccolo al piu' grande nella sua colonna
                Col = Col + 1
            Next Val
        Next Rig
        '--------------
        '--- salvato dato ultima riga (ora 64660) e sostituita con la variabile uData ---
        For Rig = Cells(Rows.Count, "A").End(xlUp).Row To uData Step -1 'cicla all'inverso l'elenco
            If Cells(Rig, 1).Value <> Cells(Rig - 1, 1).Value Then 'confronta le date tra due righe
                rig2 = Cells(Rows.Count, "I").End(xlUp).Row + 1 '<-- dove iniziare a scrivere i dati ovvero prima riga vuota colonna I
                Range("I" & rig2 & ":N" & rig2).Insert Shift:=xlDown 'inserisce una fila di celle vuote
                Cells(rig2, 9) = Format(Cells(Rig, 1), "mm/dd/yyyy") 'inserisce e formatta le date in colonna I
                For i = 1 To conta + 1                'ciclo pari alle date ripetitive
                    Cells(rig2 + i, 9) = Cells(Rig + i - 1, 2) 'inserisci ruota in colonna I
                Next i
                conta = 0                             'resetta il contatore date ripetitive
            Else
                conta = conta + 1                     'incrementa contatore date ripetitive
            End If
        Next Rig
        Columns(9).EntireColumn.AutoFit               'adatta la larghezza della colonna I
        Range("P1") = Cells(Rows.Count, "A").End(xlUp).Row + 1 'ultima data estrazione elaborata (+1) appoggiata in cella P1
        '--------------
        Application.Calculation = xlAutomatic
        Calculate
        
    End Sub

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
  • OFFLINE
    excelnewbye
    Post: 10
    Registrato il: 21/07/2020
    Età: 36
    Utente Junior
    excel 2019
    00 23/07/2020 16:55
    Grazie funziona alla Grande..

    avevo sempre sottovalutato excel.. però mi hai aperto un mondo.. inizierò a studiarlo!

    ho 1 ultima domanda.. esiste un comando da poter inserire in 1 bottone che faccia la stessa cosa di tasto dx aggiorna?
    [Modificato da excelnewbye 23/07/2020 16:57]
  • OFFLINE
    rollis13
    Post: 965
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Senior
    Excel 2016-32bit Win11
    00 23/07/2020 17:27
    Cosa intendi ? inserire qualcosa nella lista del tasto destro o creare un apposito bottone a cui assegnare la macro ?
    La prima è praticamente impercorribile mentre la seconda è più comune:
    Dal menu Inserisci / Illustrazioni / Forme / scegli la forma e la disegni nel foglio come ti serve / poi col tasto destro sulla forma disegnata scegli 'Modifica Testo' / poi sempre col destro scegli 'Assegna Macro' e selezioni a macro che ti serve.

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
  • OFFLINE
    excelnewbye
    Post: 11
    Registrato il: 21/07/2020
    Età: 36
    Utente Junior
    excel 2019
    00 23/07/2020 17:30
    Hai ragione mi sono spiegato malissimo...

    Io aggiorno la lista delle estrazioni prelevandola dal web da una mia pagina php facendo tasto destro su una cella e poi cliccando sul comando aggiorna..
    Che presumo lanci un comando excel visita la pagina web inserita etc...

    Volevo inserire un tasto aggiorna che facesse la stessa cosa.. Ma era giusto una curiosità

    I bottoni li avevo già inseriti per i tuoi 2 script con diciture aggiorna tutte e aggiorna ultima 😀
    [Modificato da excelnewbye 23/07/2020 17:33]
  • OFFLINE
    rollis13
    Post: 966
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Senior
    Excel 2016-32bit Win11
    00 23/07/2020 18:53
    Se non l'hai già fatto devi inserire nella macro "Aggiorna Tutte" questa riga di codice nella stessa posizione così com'è nella macro "Aggiorna Ultime" in modo da avere il numero già inserito in cella P1 pronto per un uso successivo della macro "Aggiorna Ultime":
    Range("P1") = Cells(Rows.Count, "A").End(xlUp).Row + 1

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
  • OFFLINE
    excelnewbye
    Post: 12
    Registrato il: 21/07/2020
    Età: 36
    Utente Junior
    excel 2019
    00 24/07/2020 12:02
    Re:
    rollis13, 23/07/2020 18:53:

    Se non l'hai già fatto devi inserire nella macro "Aggiorna Tutte" questa riga di codice nella stessa posizione così com'è nella macro "Aggiorna Ultime" in modo da avere il numero già inserito in cella P1 pronto per un uso successivo della macro "Aggiorna Ultime":
    Range("P1") = Cells(Rows.Count, "A").End(xlUp).Row + 1



    in realtà questo comando dovrebbe essere lanciato subito dopo aver effettuato l'aggiornamento dal sito.. e excel riempie le colonne da A a G con la nuova estrazione!

    per questo cercavo il comando da inserire in 1 bottone che facesse l'equivalente di tasto dx aggiorna!

    :)

    comunque ottimo lavoro rollis13 grazie!


    [Modificato da excelnewbye 24/07/2020 12:05]
  • OFFLINE
    rollis13
    Post: 967
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Senior
    Excel 2016-32bit Win11
    00 24/07/2020 23:37
    Quell' "Aggiorna" è una funzione destinata al Power Query che usi per ricavare i dati prelevati dal sito.
    Non ho idea se con i comandi Power Query si può anche lanciare una macro.

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
  • OFFLINE
    dodo47
    Post: 2.908
    Registrato il: 06/04/2013
    Utente Veteran
    2010
    10 25/07/2020 13:30
    Ciao
    non entro nel merito di quello che hai chiesto in quanto sei in ottime mani (un caro saluto Rollis).

    Ti sottopongo una modifica alla tua query in modo da tirati dentro i risultati "a partire dal...", qualora la ritenessi utile.

    Ovviamente il tutto lo dovresti fare su un altro foglio e poi accodare il risultato al tuo archivio principale.

    Forse ci guadagnerai in tempo.

    Come vedi nel foglio, c'è una data con affianco il relativo anno, mese, giorno in tre celle separate e nominate ANNO, MESE, GIORNO, che vengono date in pasto alla query.

    saluti





    [Modificato da dodo47 25/07/2020 17:21]
    Domenico
    Win 10 - Excel 2016
  • 15MediaObject5,00227 2