Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

copia riga in base data e orario

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

copia riga in base data e orario

Postdi nignetto » 06/03/22 13:56

Ciao Anthony,sto ultimando il foglio che grazie al tuo aiuto sono riuscito a mandare avanti..se possibile avrei ora bisogno di ulteriore aiuto per terminarlo...allego un file di esempio...quello che dovrebbe fare è:
1)controllare l orario in colonna B del foglio dati partendo da A7
2)cercare le righe da 5 a 15 min di anticipo rispetto all orario fissato.esempio.il codice si avvia alle 13.48..lui trova gli orari alle 14.00..in questo caso rientra nei parametri
3) una volta trovate le va a copiare in Archivio partendo da A2 e cosi via le altre nelle righe vuote sotto
4) cancella il contenuto "e:f" in Dati della riga che ha trovato e copiato in Archivio (in giallo nell esempio)

ovviamente questo codice lo dovrei legare ad un altro che gia ho che aggiorna dei dati a un intervallo prefissato

poi successivamente mi servirebbe un codice per avere notifiche su telegram in base a dei criteri..ma questo lo si potrà vedere piu in la :D

se riuscissi ad aiutarmi per favore..cosi cerco di chiudere il cerchio..grazie mille e buona domenica

https://docs.google.com/spreadsheets/d/ ... ue&sd=true
nignetto
Utente Junior
 
Post: 63
Iscritto il: 21/02/22 17:54

Sponsor
 

Re: copia riga in base data e orario

Postdi Anthony47 » 06/03/22 22:58

Ci sono descrizioni che lasciano ampi spazi di dubbi...

Bisogna controllare Data+Ora, vero?
Dici che se "il codice si avvia alle 13.48..lui trova gli orari alle 14.00..in questo caso rientra nei parametri": vuoi dire che si deve guardare i dati futuri? Insomma cosa si intende per "orario fissato", quello di esecuzione della macro o quello stampato su foglio Dati?
Visto che cancelli le colonne E:F immagino che sia opportuno controllare che le colonne non siano vuote prima di copiare in foglio Archivio, giusto?

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 18203
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: copia riga in base data e orario

Postdi nignetto » 07/03/22 14:06

metto in allegato l esempio con una macro spartana di quello che dovrebbe fare..
considera che la ma macro che uso ha un intervallo di aggiornamento ogni 3 min "Application.OnTime Now + TimeValue("00:03:00"), "macrotime" e il codice lo metterei subito prima...la data in verita non serve nel controllo basta che guardi l orario dei dati che gia vengono scaricati il giorno prima..quindi si deve vedere i dati futuri stampati sul foglio..quindi come scritto supponiamo che si avvii alle 13,45..controlla orario dati stampati..se mettiamo un range tra 5-15 min ....trova i dati 14.00 ok..se 14.05 no.....quando si avvierà alle 13.51 allora considerera anche quelli alle 14.05..
in questo ultimo caso rientrano anche quelli delle 14.00 ma se gia scritti dovrebbero essere ignorati...
ho messo range 5-15 min come esempio..sarebbe utile se potessi scegliere range per fare test e trovare quello che piu mi soddisfi
grazie ancora
https://drive.google.com/file/d/1grjaJ- ... sp=sharing
nignetto
Utente Junior
 
Post: 63
Iscritto il: 21/02/22 17:54

Re: copia riga in base data e orario

Postdi Anthony47 » 07/03/22 21:11

Prova con questa versione:
Codice: Seleziona tutto
Sub TimedCopy()
Dim cTime As Date, rTime As Date, dSh As Worksheet, arSh As Worksheet
Dim I As Long, myNext As Long
'
Set dSh = Sheets("dati")
Set arSh = Sheets("archivio")
'
cTime = Now - Int(Now)
With dSh
    For I = 7 To .Cells(Rows.Count, 1).End(xlUp).Row
        rTime = .Cells(I, 2)
        If rTime < (cTime + TimeSerial(0, 15, 0)) And rTime >= (cTime + TimeSerial(0, 5, 0)) And _
         Len(.Cells(I, 5) & .Cells(I, 6)) > 0 Then
         Debug.Print rTime
            myNext = arSh.Cells(Rows.Count, 1).End(xlUp).Row + 1
            .Cells(I, 1).EntireRow.Copy arSh.Cells(myNext, 1)
            .Cells(I, 5).Resize(1, 2).ClearContents
        End If
    Next I
End With
Application.CutCopyMode = False
End Sub

Se vuoi cambiare fascia da prendere in considerazione devi modificare quei due TimeSerial(hh, mm, ss) che ci sono del codice

Fai sapere...
Avatar utente
Anthony47
Moderatore
 
Post: 18203
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: copia riga in base data e orario

Postdi nignetto » 07/03/22 22:08

ciao anthony..sembra che vada..l unica cosa sono i valori riga che copia in archivio....mi copia le formule di riferimento quindi per come l ho impostato io il foglio... mi sballa ...a me servirebbero solo i i valori grezzi

poi mi pare che che non faccia il check di ignorare quella stringa se gia presente

quando si aggiorna la riscrive sotto

grazie mille
nignetto
Utente Junior
 
Post: 63
Iscritto il: 21/02/22 17:54

Re: copia riga in base data e orario

Postdi nignetto » 07/03/22 22:24

poi mi pare che che non faccia il check di ignorare quella stringa se gia presente

quando si aggiorna la riscrive sotto

grazie mille[/quote]

scusa forse no :D
nignetto
Utente Junior
 
Post: 63
Iscritto il: 21/02/22 17:54

Re: copia riga in base data e orario

Postdi Anthony47 » 08/03/22 00:52

Se vuoi i valori e non una copia lo devi specificare...
Prova questa variante:
Codice: Seleziona tutto
Sub TimedCopy()
Dim cTime As Date, rTime As Date, dSh As Worksheet, arSh As Worksheet
Dim I As Long, myNext As Long, vHor As Long
'
Set dSh = Sheets("dati")
Set arSh = Sheets("archivio")
'
vHor = dSh.UsedRange.Columns.Count
cTime = Now - Int(Now)
With dSh
    For I = 7 To .Cells(Rows.Count, 1).End(xlUp).Row
        rTime = .Cells(I, 2)
        If rTime < (cTime + TimeSerial(0, 15, 0)) And rTime >= (cTime + TimeSerial(0, 5, 0)) And _
         Len(.Cells(I, 5) & .Cells(I, 6)) > 0 Then
''         Debug.Print rTime
            myNext = arSh.Cells(Rows.Count, 1).End(xlUp).Row + 1
            arSh.Cells(myNext, 1).Resize(1, vHor).Value = .Cells(I, 1).Resize(1, vHor).Value
            .Cells(I, 5).Resize(1, 2).ClearContents
        End If
    Next I
End With
''Application.CutCopyMode = False
End Sub

Ci sono un paio di differenze, la struttura rimane la stessa
Avatar utente
Anthony47
Moderatore
 
Post: 18203
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: copia riga in base data e orario

Postdi nignetto » 08/03/22 16:35

Grazie mille..stasera proverò e lo faccio girare una giornata..come sempre ringrazio per la tua disponibilità ad aiutare gli altri
nignetto
Utente Junior
 
Post: 63
Iscritto il: 21/02/22 17:54


Torna a Applicazioni Office Windows


Topic correlati a "copia riga in base data e orario":


Chi c’è in linea

Visitano il forum: Nessuno e 45 ospiti