Condividi:        

creazione Macro VBA

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

creazione Macro VBA

Postdi marcobo » 09/06/09 09:56

ciao forum, vi spiego il mio problema e cosa dovrei fare.

ho un file di excel con un sacco di colonne piene di dati eccone un esempio:

A B C D E F G H
banca n°cc valuta feesIN n°collaboratore payout importo OUT

Intesa 4450 eur 1% 14 50% 4.000€ 500€

una volta che questo file viene compilato, avrei bisogno di una macro che generi sempre dei file excel raggruppando i collaboratori e scrivendo alcuni dati presenti nell'esempio sopra nel file singolo.
ecco l'esempio:

A B C D E F G H
n°cc x x x x payout importo OUT
4450 x x x x 50% 4.000 500


i campi nella x non devono essere presi dal primo esempio e i file che la macro dovrebbe creare sono + di uno con + di un numero di conto.

spero di essere stato abbastanza chiaro e che un anima gentile possa aiutarmi!!

se non capite qualcosa chiedetemi pure!!

grazie mille
marco
marcobo
Newbie
 
Post: 2
Iscritto il: 09/06/09 09:24

Sponsor
 

Re: creazione Macro VBA

Postdi Anthony47 » 09/06/09 16:55

Ciao marcobo e benvenuto nel forum.

A parte che non ho capito la frase "i campi nella x non devono essere presi dal primo esempio", il procedimento potrebbe essere questo.
0) Apri il tuo file e ne crei uno nuovo a cui assegni il nome Regia.xls
1) vai sul tuo file e generi nel file Regia un elenco di valori univoci "N° collaboratore", usando Filtro avanzato /Copia univoca dei record /Copia in altra posizione.
2) selezioni la colonna "N° Collaboratore", imposti il filtro automatico sulla colonna, e filtri per "diverso dal primo collaboratore"
3) Cancelli tutte le righe selezionate, e visualizzi le rimanenti con Filtro automatico /Mostra tutto; in questo modo vedrai solo le righe relative al primo collaboratore
4) Salvi questo file (i resti del tuo file originale) col nome del Collaboratore, chiudi il file.
5) Riapri il file originale
6) Ripeti i passi 2-3-4 con il secondo nome in elenco; e cosi' via...

Puoi ottenere il cuore del codice per fare cio' eseguendo un Registra macro mentre, partendo dallo stato 0, esegui diligentemente le operazioni 1,2,3,4,5 descritte sopra; il lavoro successivo sara' di editing del codice per renderlo modulare e il suo inserimento in un ciclo For /Next per ripeterlo.

Procedi come ti ho detto e posta il codice ottenuto dalla registrazione.

Per registrare una macro, parti dallo stato 0 e poi: Menu /Strumenti /Macro /Registra nuova macro; esegui diligentemente i comandi descritti; per fermare la registrazione: o usi il pulsante "Stop" se e' comparso sullo schermo, oppure Menu /Strumenti /Macro /Interrompi Registrazione nuova macro.
Per vedere il codice della macro: dal file Regia, premi Alt-F8, scegli il nome che hai assegnato alla macro, premi Modifica: ti si apre l' editor delle macro, nella parte destra trovi il codice che copierai nel tuo messaggio e che editeremo insieme.

Ciao, ti aspettiamo.
Avatar utente
Anthony47
Moderatore
 
Post: 19213
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: creazione Macro VBA

Postdi marcobo » 17/06/09 15:51

Anthony, innanzitutto grazie mille!!!

ecco il codice che ne è uscito, per esigenze di format ho seguito una procedure leggermente diversa dalla tua. si riferisce ad un solo collaboratore...spero tu possa aiutarmi per creare il loop.

Sub PIPPO()
'
' PIPPO Macro
'

'
Workbooks.Add
ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\marco.bo\Desktop\MacroSylvere\Regia.xlsm", _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
ActiveCell.FormulaR1C1 = "Number of Collaborator"
Range("A2").Select
Columns("A:A").EntireColumn.AutoFit
Range("C1").Select
ActiveCell.FormulaR1C1 = "Periodo"
Range("A3").Select
ActiveCell.FormulaR1C1 = "Numero PCP"
Range("B3").Select
ActiveCell.FormulaR1C1 = "Collaborator"
Range("C3").Select
ActiveCell.FormulaR1C1 = "retrocessioni"
Range("C3").Select
ActiveCell.FormulaR1C1 = "Retrocessioni"
Range("D3").Select
ActiveCell.FormulaR1C1 = "Quote"
Range("E3").Select
ActiveCell.FormulaR1C1 = "Totale In"
Range("F3").Select
ActiveCell.FormulaR1C1 = "Riferimento"
Range("G2").Select
Selection.Font.Bold = True
ActiveCell.FormulaR1C1 = "Totale in Pagamento"
Cells.Select
Cells.EntireColumn.AutoFit
Range("G24").Select
Windows("MasterFilePCP.xlsm").Activate
Range("B2:B297").Select

Range("B2:B297,F2:G297").Select
Range("F2").Activate

Range("B2:B297,F2:G297,H2:H297").Select
Range("H2").Activate
Range("B2:B297,F2:G297,H2:H297,L2:M297").Select
Range("L2").Activate
Selection.Copy
Windows("Regia.xlsm").Activate
Range("A4").Select
ActiveSheet.Paste
Cells.Select
Cells.EntireColumn.AutoFit
Rows("4:4").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
Range("F3").Select
Selection.ClearContents
Range("G2").Select
Selection.Cut
Range("F3").Select
ActiveSheet.Paste
Columns("F:F").EntireColumn.AutoFit
Rows("3:3").Select
Selection.AutoFilter
ActiveSheet.Range("$A$3:$G$298").AutoFilter Field:=2, Criteria1:="<>24", _
Operator:=xlAnd
Range("A4:F4").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.EntireRow.Delete
ActiveSheet.Range("$A$3:$G$4").AutoFilter Field:=2
Range("B1").Select
ActiveCell.FormulaR1C1 = "=+R[3]C"

ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\marco.bo\Desktop\MacroSylvere\24.xlsm", FileFormat _
:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
ActiveWindow.SmallScroll Down:=-6
Range("D12").Select
ActiveWindow.SmallScroll Down:=-9
Range("G3").Select
Selection.Delete Shift:=xlToLeft
ActiveWorkbook.Save
ActiveWindow.Close

Application.WindowState = xlMinimized
End Sub



grazie mille ancora e aspetto un tuo riscontro

marco
marcobo
Newbie
 
Post: 2
Iscritto il: 09/06/09 09:24

Re: creazione Macro VBA

Postdi Anthony47 » 17/06/09 21:24

Perdona, vorrei che tu mi venissi dietro, non viceversa.
COMUNQUE...
La parte iniziale della macro e' relativa alla creazione del foglio Regia (step 0); avresti dovuto registrare la macro partendo dallo step 1 in avanti ("Puoi ottenere il cuore del codice per fare cio' eseguendo un Registra macro mentre, partendo dallo stato 0, esegui diligentemente le operazioni 1,2,3,4,5 descritte sopra"); comunque e' facilmente enucleabile e non crea problemi.
Dopo la selezione del foglio dati (Windows("MasterFilePCP.xlsm").Activate) non trovo traccia dello step 1 ("vai sul tuo file e generi nel file Regia un elenco di valori univoci "N° collaboratore", usando Filtro avanzato /Copia univoca dei record /Copia in altra posizione."); ne' dello step 2 (selezioni la colonna "N° Collaboratore", imposti il filtro automatico sulla colonna, e filtri per "diverso dal primo collaboratore"); ne' dello step 3 (Cancelli tutte le righe selezionate, e visualizzi le rimanenti con Filtro automatico /Mostra tutto; in questo modo vedrai solo le righe relative al primo collaboratore); e cosi' via per gli altri step.
Trovo invece una ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\marco.bo\Desktop\MacroSylvere\24.xlsm
" che mi fa pensare che la tua struttura dati non sia quella descritta nel tuo primo post.
Codice: Seleziona tutto
A       B     C       D       E                F       G        H
banca  /n°cc /valuta /feesIN /n°collaboratore /payout /importo /OUT
Intesa /4450 /eur    /1%     /14              /50%    /4.000€  /500€

Insomma, per ora abbiamo solo perso tempo.
Valuta se pensi di poter seguire le istruzioni, e se le informazioni date sul tracciato record fossero errate per favore aggiornaci.

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


Torna a Applicazioni Office Windows


Topic correlati a "creazione Macro VBA":


Chi c’è in linea

Visitano il forum: Carletto Ribolla e 41 ospiti