Condividi:        

Macro modifica date scelta periodo

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

Macro modifica date scelta periodo

Postdi Ricky0185 » 02/05/25 09:26

Buongiorno, vorrei modificare la macro di questo FILE in modo che nelle intestazioni i periodi coprano un lasso di tempo che va dal 1° Gennaio alla data del giorno in cui si effettua l'importazione dei files. Nella fattispecie sarebbe oggi, ma potrà essere qualunque giorno del mese. Sia per il 2024 che per il 2025.
Ringrazio e saluto
R
Ricky0185
Utente Senior
 
Post: 402
Iscritto il: 10/12/19 20:38

Sponsor
 

Re: Macro modifica date scelta periodo

Postdi Anthony47 » 02/05/25 15:49

Non riesco a decodificare la richiesta: le intestazioni credo siano inserite nel momento in cui importi un csv (e nessuna delle due macro presenti nel file si occupa di importare i csv), quindi automaticamente le intestazioni copriranno fino all'ultima importazione partendo dalla prima che avevi fatto.
Avatar utente
Anthony47
Moderatore
 
Post: 19617
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro modifica date scelta periodo

Postdi Ricky0185 » 02/05/25 18:03

Ti mando un FILE con le macro da lanciare e i 2 FILES che debbo trattare. I due files sono l’importazione dei dati della SEDE che mi interessa dal 1° Gennaio 24 al giorno “Oggi” ed il secondo dal 1° Gennaio 25 al giorno “Oggi”, che per ambedue è il 2.05 ma che fra qualche giorno sarà il 5 piuttosto che il 13 etc. e la SEDE avrà probabilmente inserito altri dati. In sede di importazione si può scegliere il periodo che per ambedue è lo stesso cambiando solo l'anno. Quando lanci la prima macro a file vergine devi selezionare i 2 files dello zip dove li hai scompattati ed inizia la corsa.
Importo lo stesso file per lo stesso periodo sia per il 25 che per il 24 e, attenzione, i dati importati fino al 2.05 sia del 24 che del 25 sono ovviamente inferiori di quelli importati per tutto il mese di maggio, che comunque ho già ottenuto con le macro che con il tuo aiuto ho sviluppato finora. Adesso debbo confrontare 1 GEN--2 MAGG del 24 con lo stesso periodo del 25. E hai i due file importati più un file con tutte le macro che sono tutte unite, ma che ho suddiviso e che dovresti lanciare in questa sequenza.
1. Unisci_Files_InUno
2. Riunisci
3. Ordina_Righe_Corrispondenti
4. NumeriinNumero (per ovviare il solito problema dei numeri in formato testo)
5. A questo punto appare la InputBox per continuare dopo aver filtrato l’Agente
6. CopiaCelleFiltrate
Ma dopo aver messo il filtro e aver cliccato su Continua, al posto di CopiaCelleFiltrate vorrei che si attivasse la macro
Codice: Seleziona tutto
Sub MacroTotali()
Dim CM As Long, CY As Long, mySplit, MMM As String
Cells(1, Columns.Count).End(xlToLeft).Select
'Cells(1, Columns.Count).End(xlToLeft).Offset(0, -1).Select
mySplit = Split(ActiveCell.Value & "-0-0", "-", , vbTextCompare)
CM = CLng("0" & mySplit(1))
CY = CLng("0" & mySplit(0))
MMM = UCase(Format(DateSerial(CY, CM, 1), "mmm"))
On Error Resume Next
ActiveCell.Offset(0, 1).Value = _
    "Totale GEN-" & MMM & Chr(10) & Split(ActiveCell.Offset(0, -14).Value & "-0-0", "-", , vbTextCompare)(0)
ActiveCell.Offset(0, 2).Value = _
    "Totale GEN-" & MMM & Chr(10) & mySplit(0)
ActiveCell.Offset(0, 3).Value = "Differenza"
On Error GoTo 0
ActiveCell.Offset(1, 1).FormulaR1C1 = _
    "=SUM(OFFSET(RC[-1],0,1-" & CM & "-12,1," & CM & "))"
 ActiveCell.Offset(1, 2).FormulaR1C1 = _
    "=SUM(OFFSET(RC[-2],0,1-" & CM & ",1," & CM & "))"
ActiveCell.Offset(1, 3).FormulaR1C1 = _
    "=RC[-1]-RC[-2]"
End Sub

che proprio non mi entra in testa per modificarla secondo necessità (nonostante tu me lo abbia già spiegata).
Il risultato visivo dovrebbe essere come spiegato con le celle gialle nel file allegato in apertura.
Naturalmente non ho allegato tutto l’ambaradan delle formattazioni e delle verifiche/confronti, non vorrei farti incavolare con tutti i Select delle registrazioni.
Naturalmente modifiche o suggerimenti sono ben accetti.
Ti saluto
R
Ricky0185
Utente Senior
 
Post: 402
Iscritto il: 10/12/19 20:38

Re: Macro modifica date scelta periodo

Postdi Anthony47 » 03/05/25 11:31

Ma aspetta... Mi stai chiedendo come da Userform si puo' avviare la Sub MacroTotali invece che la Sub CopiaCelleFiltrate?
O come modificare la Sub MacroTotali per fare non so che cosa?
Avatar utente
Anthony47
Moderatore
 
Post: 19617
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro modifica date scelta periodo

Postdi Ricky0185 » 03/05/25 12:12

Dovrebbe essere automatico sostituendo l'una con l'altra. Cioè, una volta cancellata la macro Copia celle Filtrate ed inserita al suo posto la Macro Totali nel VB, cliccando il Continua sulla UF parte la Macro Totali. Qui sta la mia richiesta: modificare la Macro Totali in modo che le intestazione delle colonne (quelle gialle) siano come accennato nel file inviato in apertura. Io ho provato mettendo nelle intestazioni
Codice: Seleziona tutto
="TOTALE
 "&TESTO(C1;"#.##0")&"-- "&TESTO(F1;"#.##0")&"
("&TESTO(F1;"#.##0")&" )"

ma inserire anche il giorno 01-01-2024 e 24-04-2024 non riesco. E tantomeno provando a modificare le tue formule
Codice: Seleziona tutto
"Totale GEN-" & MMM & Chr(10) & Split(ActiveCell.Offset(0, -14).Value & "-0-0", "-", , vbTextCompare)(0)

come si fa con il gioco dei 3 bussolotti.
Come spiegato nel post d'apertura
Immagine
Le tre celle sopra sono come le incolla l'attuale Macro Totali, quelle sotto come dovrebbero invece apparire. Ho messo il 2 Msggio (i due file li ho scaricati ieri), ma potrebbe essere qualunque giorno del mese.
Saluti
Ricky0185
Utente Senior
 
Post: 402
Iscritto il: 10/12/19 20:38

Re: Macro modifica date scelta periodo

Postdi Anthony47 » 03/05/25 17:14

dovresti lanciare [le macro] in questa sequenza.
1. Unisci_Files_InUno
2. Riunisci
3. Ordina_Righe_Corrispondenti
4. NumeriinNumero (per ovviare il solito problema dei numeri in formato testo)
5. A questo punto appare la InputBox per continuare dopo aver filtrato l’Agente
6. CopiaCelleFiltrate
Non sono in grado di eseguire questa sequenza perche’ ci sono all’interno di Sub CopiaCelleFiltrate domande a cui non ho idea di come rispondere, e sono necessarie per ottenere il foglio nella struttura voluta.

In linea di massima, se il problema e’ ottenere le intestazioni di colonna e le formule calcolate dalla Sub MacroTotali come riportate nelle “celle gialle” dell’immagine che hai pubblicato , allora vedi se questa variante ti aiuta (vedi da “DA QUI” in avanti)
Codice: Seleziona tutto
 Sub MacroTotali()
Dim CM As Long, CY As Long, mySplit, MMM As String
Cells(1, Columns.count).End(xlToLeft).Select
'Cells(1, Columns.Count).End(xlToLeft).Offset(0, -1).Select
mySplit = Split(ActiveCell.Value & "-0-0", "-", , vbTextCompare)
CM = CLng("0" & mySplit(1))
CY = CLng("0" & mySplit(0))
MMM = UCase(Format(DateSerial(CY, CM, 1), "mmm"))
On Error Resume Next
'DA QUI:
ActiveCell.Offset(0, 1).Value = _
    "Totale" & Chr(10) & "01 GEN-" & UCase(Format(Date, "dd-mmm")) & Chr(10) & Split(Range("C1").Value & "-0-0", "-", , vbTextCompare)(0)
ActiveCell.Offset(0, 2).Value = _
    "Totale" & Chr(10) & "01 GEN-" & UCase(Format(Date, "dd-mmm")) & Chr(10) & mySplit(0)
ActiveCell.Offset(0, 3).Value = "Differenza"
ActiveCell.Offset(1, 1).Formula = "=SUM(OFFSET(C1,1,0,1," & CM & "))"
ActiveCell.Offset(1, 2).FormulaR1C1 = "=SUM(OFFSET(RC,0,-1+" & -CM & ",1," & CM & "))"
ActiveCell.Offset(1, 3).FormulaR1C1 = "=RC[-1]-RC[-2]"

End Sub
Avatar utente
Anthony47
Moderatore
 
Post: 19617
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro modifica date scelta periodo

Postdi Ricky0185 » 03/05/25 22:42

Eccoti il FILE dopo aver inserito la modifica. Manca l'anno 2025 nell'intestazione della colonna T ed anche tutte le operazioni di copiatura dei Totali e relativa differenza
La macro Copia Celle Filtrate è un refuso del tentativo fatto per copiare in altra posizione le colonne dei totali 2024 e 2025 e relativa differenza, esattamente come fa la Macro Totali da te modificata. Solo che le aree da copiare debbono essere inserite in una inputbox così come dove copiarle. Ma non serve più. Una volta sistemati nella Macro Totali i problemi dei totali che non appaiono e dell'anno 2025, può essere eliminata.
Una domanda: il 7 Agosto, dopo aver scaricato i due file del 24 e del 25 per lo stesso periodo 01.01 al 07.08,2024 e uguale per il 2025, le intestazioni saranno 01 GEN-07-AGO ? Lo chiedo perchè, come ho già detto più su, per me quelle due formule che identificano il periodo sono in cirillico. E per verificarle bisognerebbe cambiare data nel calendario del pc, cosa che non vorrei fare.
Spero tu abbia ancora voglia e tempo per mandarmi quelle integrazioni. intanto ti ringrazio e saluto.
Buona Domenica
R
Ricky0185
Utente Senior
 
Post: 402
Iscritto il: 10/12/19 20:38

Re: Macro modifica date scelta periodo

Postdi Ricky0185 » 04/05/25 07:37

Una domanda: il 7 Agosto, dopo aver scaricato i due file del 24 e del 25 per lo stesso periodo 01.01 al 07.08,2024 e uguale per il 2025, le intestazioni saranno 01 GEN-07-AGO ?

Si, verificato aprendo il file oggi dove appunto è cambiata l'intestazione colonna, da 03-MAG (aprendolo ieri) a 04-MAG.
Ti ho risparmiato alcune battute sulla tastiera.
Ricky0185
Utente Senior
 
Post: 402
Iscritto il: 10/12/19 20:38

Re: Macro modifica date scelta periodo

Postdi Anthony47 » 04/05/25 08:13

Quel codice era nato col presupposto che l’ultima colonna popolata fosse l’ultima con un AAAA-MM; se invece c’e’ una colonna TOTALE successiva allora bisogna tenerne conto nei calcoli degli offset.
Quindi, nelle ipotesi:
-colonna Totale presente
-colonne per la comparazione separate da una colonna vuota
-foglio privo di righe nascoste
allora il codice della macro diventa
Codice: Seleziona tutto
Sub MacroTotali()
Dim CM As Long, CY As Long, mySplit, MMM As String
Cells(1, Columns.count).End(xlToLeft).Offset(0, -1).Select
'Cells(1, Columns.Count).End(xlToLeft).Offset(0, -1).Select
mySplit = Split(ActiveCell.Value & "-0-0", "-", , vbTextCompare)
CM = CLng("0" & mySplit(1))
CY = CLng("0" & mySplit(0))
MMM = UCase(Format(DateSerial(CY, CM, 1), "mmm"))
On Error Resume Next
ActiveCell.Offset(0, 3).Value = _
    "Totale" & Chr(10) & "01 GEN-" & UCase(Format(Date, "dd-mmm")) & Chr(10) & Split(Range("C1").Value & "-0-0", "-", , vbTextCompare)(0)
ActiveCell.Offset(0, 4).Value = _
    "Totale" & Chr(10) & "01 GEN-" & UCase(Format(Date, "dd-mmm")) & Chr(10) & mySplit(0)
ActiveCell.Offset(0, 5).Value = "Differenza"
ActiveCell.Offset(1, 3).Formula = "=SUM(OFFSET(C1,1,0,1," & CM & "))"
ActiveCell.Offset(1, 4).FormulaR1C1 = "=SUM(OFFSET(RC,0,-3+" & -CM & ",1," & CM & "))"
ActiveCell.Offset(1, 5).FormulaR1C1 = "=RC[-1]-RC[-2]"
End Sub


E, sì, il 7 Agosto comparira' 7-AGO perche' Date segnera' 7-agosto-2025
Avatar utente
Anthony47
Moderatore
 
Post: 19617
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro modifica date scelta periodo

Postdi Ricky0185 » 04/05/25 09:26

Mannaggia. Inserisce le intestazioni correttamente saltando una colonna, ma mancano ancora i dati sottostanti dei due Totali 24 e 25.
Forse ho capito: forse perchè i numeri sono ancora testo
Ricky0185
Utente Senior
 
Post: 402
Iscritto il: 10/12/19 20:38

Re: Macro modifica date scelta periodo

Postdi Anthony47 » 04/05/25 14:24

Quindi, nelle ipotesi:
-colonna Totale presente
-colonne per la comparazione separate da una colonna vuota
-foglio privo di righe nascoste
etc etc

Forse perche' ci sono righe nascoste e la riga 2 non la vedi?
Avatar utente
Anthony47
Moderatore
 
Post: 19617
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro modifica date scelta periodo

Postdi Ricky0185 » 07/05/25 06:09

Non esultare, non ho finito, ma devo dedicare il poco tempo libero al mio secondo lavoro. Chiudere la gestione 24-25: conteggi, solleciti, relazione, convocazioni, assemblea, etc. ma appena finito riciccio l'argomento.
Buona giornata
R
Ricky0185
Utente Senior
 
Post: 402
Iscritto il: 10/12/19 20:38


Torna a Applicazioni Office Windows


Topic correlati a "Macro modifica date scelta periodo":


Chi c’è in linea

Visitano il forum: Nessuno e 17 ospiti