Condividi:        

[EXCEL-VBA] Una semplice macro please

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

[EXCEL-VBA] Una semplice macro please

Postdi ramset64 » 09/11/08 17:25

Nel file allegato abbiamo delle quotazioni a 5 minuti nel foglio1, nel foglio2 abbiamo (con l'attuale settaggio) i dati del foglio1 convertiti a 30 minuti.

Quello che mi servirebbe è una macro che faccia di fatto il lavoro che io ho fatto con excel nel foglio2 (magari nel foglio3 in modo da verificare che funzioni correttamente).

Con le formule di excel ed i tanti dati presenti il file diventa di dimensioni grandissime, mentre se si utilizza una macro si risparmia notevole spazio e tempo di apertura del file.

La macro è piuttosto semplice ma io purtroppo non conosco affatto questo linguaggio.

Ringrazio anticipatamente chi vorrà darmi una mano.
Allegati

[L’estensione zip è stata disattivata e non puó essere visualizzata.]

ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Sponsor
 

Re: [EXCEL-VBA] Una semplce macro please

Postdi Anthony47 » 10/11/08 02:52

E' buffo valutare un lavoro di cui si ammette di non capirne niente.

Comunque anche io penso che sia semplice, ad esempio con questo metodo:
-ti fai una copia delle formule di Foglio2 nel range M1:S1
-scrivi una macro di Worksheet_Activate su Foglio2, in cui
>copi tutte le colonne A:G e ne fai un incolla-speciale/valori nella stessa posizione.
>poi in coda all' elenco inserisci tante righe di formule fino da arrivare a RigheUtili, copiandole da M1:S1
In questo modo in Foglio2 hai sempre un numero di formule ridotto al minimo.

In alternativa, visto che l' accantonamento dovrebbe gia' essere fatto con una macro schedulata "onTime", si puo' ampliare quella macro per eseguire queste operazioni ai minuti 30 e 00. Se posti il codice attuale posso provare a inserire il delta.

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

Re: [EXCEL-VBA] Una semplce macro please

Postdi ramset64 » 10/11/08 13:29

Anothony in sincerità non ci ho capito un acca (per ignoranza in materia mia ovviamente). Come detto non conosco vba nel modo più assoluto.
Ritengo che sia semplice perchè di fatto il lavoro è già impostato su excel, si tratta di riprodurlo in vba. Posso sbagliare ovviamente, magari è più complicato di quello che penso.
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [EXCEL-VBA] Una semplce macro please

Postdi Anthony47 » 10/11/08 21:18

Tra le due proposte preferisco lavorare sulla macro di OnTime; se posti il codice che usi oggi per accantonare ogni 5 minuti posso provare a dare un aiutino.

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

Re: [EXCEL-VBA] Una semplce macro please

Postdi ramset64 » 10/11/08 22:09

Anthony47 ha scritto:Tra le due proposte preferisco lavorare sulla macro di OnTime; se posti il codice che usi oggi per accantonare ogni 5 minuti posso provare a dare un aiutino.

Ciao.

Anthony47 io non ho nessun codice, come detto più volte non sono capace di scrivere nemmeno una riga di vba. Se puoi darmi una mano a mettere su la macro che mi serve, ti ringrazio altrimenti pazienza.

Saluti
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [EXCEL-VBA] Una semplice macro please

Postdi Anthony47 » 11/11/08 23:57

Devo quindi pensare che Foglio1 sia stato compilato a mano, facendo una raccolta ogni 5 minuti, dal lunedi' al venerdi', dalle 8:30 alle 22:00?

Comunque, la macro seguente ad ogni apertura del Foglio2 inserisce le formule che servono, e poi trasforma tutte le celle da formule a valori.
La macro usa il valore calcolato in K2 per determinare quante righe di formule vanno inserite.

Uso:
-su Foglio2, copia A2:G2 in M1; sono le formule "di riserva" che verranno inserite dalla macro.
-click dx sul tab col nome Foglio2; si apre l' editor delle macro.
-copia il codice e incollarlo sul frame di dx (o sull' unico visualizzato)
-torna su excel, seleziona Foglio1 e attendere che siano disponibili i valori fino all' ora o mezz'ora
-apri Foglio2 e controlla che in fondo sia stata inserita una riga di formule con i valori attesi.

Il codice macro:
Codice: Seleziona tutto
Private Sub Worksheet_Activate()
Range("A2:G65000").ClearContents
LastR = 1
If Range("RigheUtili").Value + 1 > LastR Then
Range("M1:S1").Copy Destination:=Range(Cells(LastR + 1, 1), Cells(Range("RigheUtili").Value + 1, 7))
End If
Columns("A:G").Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Application.CutCopyMode = False
Range("A1").Select
End Sub


Ciao, fai sapere.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL-VBA] Una semplice macro please

Postdi ramset64 » 12/11/08 11:01

Anthony in sincerità non riesco a seguire le tue indicazioni (scusami ma sono imbranato su ste cose), puoi farmi la cortesia di inserirlo tu nel file di esempio che ho allegato?
Grazie per l'aiuto.
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [EXCEL-VBA] Una semplice macro please

Postdi ramset64 » 12/11/08 12:02

Anthony47 ha scritto:Devo quindi pensare che Foglio1 sia stato compilato a mano, facendo una raccolta ogni 5 minuti, dal lunedi' al venerdi', dalle 8:30 alle 22:00?


Si tramite tradestation ottengo i dati sul file.txt e poi faccio un semplice copia incolla. BIsogna arrangiarsi se non si hanno determinate capacità.
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [EXCEL-VBA] Una semplice macro please

Postdi Anthony47 » 13/11/08 17:35

Anthony in sincerità non riesco a seguire le tue indicazioni (scusami ma sono imbranato su ste cose), puoi farmi la cortesia di inserirlo tu nel file di esempio che ho allegato?

Io l' ho gia' fatto ...sul mio pc. Scusa se insisto, ma l' obiettivo del forum e' aiutare gli utenti a crescere, e se non partecipi al processo allora non imparerai mai. Proviamo con queste istruzioni molto piu' elementari:
Parti da Foglio2:
1) crea una copia delle tue formule:
-seleziona A2:G2 (selezioni A2, poi premi Maiusc e clicchi su G2; A2:G2 sono selezionate)
-premi Contr e (tenendo Contr pigiato) il tasto "c" (le celle vengono copiate)
-selezioni M1
-premi Contr-v per incollare le formule (dettagli come Contr-c)
-le celle A2:G2 sono ancora circolate da un tratteggio intermittente: premi Esc (tasto escape)

2) Apri il l' editor delle macro per inserire il codice
-in basso all' area di lavoro del foglio excel hai le linguette col nome del foglio corrente (se non ci sono e' solo merito del sadico che vi ha preparato il modello; ma con qualche istruzione in piu', che ora ti risparmio, li facciamo uscire).
-punta il nome Foglio2, tasto dx del mouse, dall' elenco che compare scegli la voce Visualizza codice
-NB: ci sono altre procedure per aprire l' editor delle macro, ma questa ti porta direttamente nella finestra in cui va inserito il codice.

3) Si e' aperto l' editor delle macro, cioe' una finestra intestata "Microsoft Visual Basic - cambia-tf.xls - [Foglio2 (codice)]"
-dovresti avere due riquadri, di cui quello a sx e' intitolato "Progetto - VBAProject" (ma questo potrebbe anche mancare, dipende da come e' settato il pc) e quello a dx e' sovrastato da due menu' a tendina intestati "generale" e "dichiarazioni" (a meno che non ci siano gia' delle macro visibili...)

4) a questo punto devi copiare il codice del forum e incollarlo nel frame di dx dell' editor delle macro:
-seleziona il codice cliccando sulla scritta "Seleziona tutto", Contr-c per copiare
-vai sull' editor delle macro, clicca nel frame di dx, Contr-v per incollare

Il piu' e' fatto; torna ora su excel, seleziona Foglio1, poi riseleziona Foglio2; guarda nelle sue celle, dovresti trovare tutti i dati che avevi prima ma sotto forma di dati, non di formule; le uniche formule le trovi in M1, N1, etc.
NB: l' aggiornamento dei dati in Foglio2 avviene tutte le volte che "apri" Foglio2.
NB2: Con Maiusc intendo il tasto che produce il maiuscolo sulla tastiera.

Fa quello che chiedevi??

Se SI, salva il tuo file in modo da inglobare la macro. Per chiudere l' editor delle macro, Menu /File /Chiudi e torna a excel.

Ciao, fai sapere.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL-VBA] Una semplice macro please

Postdi ramset64 » 13/11/08 18:46

Anthony47 ha scritto:Fa quello che chiedevi??


Si fa esattamente quello che chiedevo, ti ringrazio tantissimo. Grande!
Ciao
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [EXCEL-VBA] Una semplice macro please

Postdi ramset64 » 13/11/08 19:02

Anthony47, adesso il tutto si aggiorna ogni volta che attivo il foglio2, è possibile invece far si che si aggiorni ad un mio comando?
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [EXCEL-VBA] Una semplice macro please

Postdi Anthony47 » 13/11/08 23:19

Ma se i dati su Foglio1 non si aggiornano da soli (o sbaglio?), ha senso aggiornare Foglio2 non solo/sempre alla sua attivazione?

Comunque, a questo punto il modo piu' semplice per aggiornare e' questa macro:
Codice: Seleziona tutto
sub Flippa()
Application.ScreenUpdating = False
Sheets("Foglio1").select
Sheets("Foglio2").select
Application.Screenupdating = true
End Sub


Dall' editor delle macro (sai come entrarci...):
-Menu /Inserisci /Modulo
-copia il codice e incollalo nel frame di dx

Poi torni in excel e gli assegni un tasto rapido: Menu /Strumenti /Macro /Macro; segli Flippa dall' elenco, premi Opzioni; nella casella di scelta rapida scrivi A (come "Aggiorna", maiuscolo); Ok, Escape.

A questo punto, bastera' digitare Contr-Maiusc-a per eseguire la macro.
Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL-VBA] Una semplice macro please

Postdi ramset64 » 14/11/08 13:58

Grande Anthony! Perfetto!
A titolo di curiosità oltre che per mia conoscenza, se vado su visualizza, poi visualizza macro vedo il tuo secondo codice ma non il primo? Che differenza c'è tra i due codici?

Grazie di tutto.
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [EXCEL-VBA] Una semplice macro please

Postdi Anthony47 » 15/11/08 21:51

Perfetto!
Bene!

A titolo di curiosità oltre che per mia conoscenza, se vado su visualizza, poi visualizza macro vedo il tuo secondo codice ma non il primo? Che differenza c'è tra i due codici?
Il primo codice messo era specifico per il Foglio2 ed era relativo all' evento "activate" del foglio; lo trovi nel "[Foglio2 (codice)]".
Il secondo e' una macro a livello file, ed e' sotto "[Modulo1 (codice)]".

Puoi muoverti tra i vari fogli di codice tramite il frame "Progetto - VBAProject": qui trovi l' elenco dei vari "fogli" del file, piu' l' insieme "ThisWorkbook", come pure i Moduli di codice standard (la cartelletta Moduli): doppioclick su questi elementi per espanderli e aprirli.
Se non vedi il frame "Progetti VBAProject", lo puoi visualizzare con Menu /Visualizza /Gestione progetti.

Ciao, alla prossima.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL-VBA] Una semplice macro please

Postdi ramset64 » 15/11/08 22:38

Grazie alla prossima!
Ciao
:)
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino


Torna a Applicazioni Office Windows


Topic correlati a "[EXCEL-VBA] Una semplice macro please":


Chi c’è in linea

Visitano il forum: Nessuno e 57 ospiti