Ciao a tutti,
premetto che non sono molto pratico di vba...(vado avanti di regitratore macro, aiuti dei forum, e elaborazioni di script che funzionano)
Allego il file
https://www.dropbox.com/s/6otdq2ifq9k87mj/EU-.xlsm
Nel file quello che conta sono due fogli. "CGA e Sito(com'era)" e "cartacei".
Il primo è quello che calcola i prezzi, mentre il secondo è solo l'impaginazione del primo, per fare in modo che sia stampabile.
Per aggiornare/creare il foglio "cartacei", con semplici formule (colui che ha iniziato sto file) ha pensato bene di alternare (sul foglio "CGA E Sito (com'era)") le righe scritte con delle righe vuote, per poter trovare facilmente una corrispondeza fra i due fogli usando le formule =nome_cella
Io invece vorrei Non dover inserire righe vuote...e soprattutto ricreare il foglio Cartacei, tramite vba (tempo che tutte le formule alla lunga appesantiscano il file)
Per fare le prove ho creato due copie dei due fogl, e le ho chiamate:
CGA e Sito
Agenti
Ho iniziato a scrivere una macro (scopiazzando e assenlando un po di cose) ma mi sono fermato..
vi allego il codice che sto facendo
ci sono parecchie "postille" che mi aiutano a capire che cavolo sto facendo..e cosa devo fare"
ma la parte che riguarda il problema (contro il quale mi sono fermato) è evidenziata fra le XXXXXXXXXXXXXXXXXXXXXXXXXXX
qualcuno puo aiutarmi?
PS. vi prego di darmi anche consigli, qualora qualche passaggio fosse scritto in malo modo.
codice:
Option Explicit Sub PER_STAMPA() Dim wb As Workbook Dim x As Long Set wb = ThisWorkbook 'wb diventa l'oggetto "questa cartella di lavoro" '1 SALVA IL LAVORO (non si sa mai!!) wb.Save 'SPEGNI AVVISI( sei sicuro di volere cancellare? Application.DisplayAlerts = true li riabilita Application.DisplayAlerts = False 'ELIMINA FOGLIO wb.Sheets("Agenti Vecchio").Delete wb.Sheets("Agenti").Name = "Agenti Vecchio" 'DUPLICA FOGLIO E RINOMINA LA COPIA wb.Sheets("CGA e Sito").Copy After:=wb.Sheets("CGA e Sito") wb.ActiveSheet.Name = "Agenti" 'X =FINO A QUANDO CI SONO CODICI x = wb.Sheets("Agenti").Range("AO" & Rows.Count).End(xlUp).Row 'COPIA E INCOLLA IN VALORI wb.Sheets("Agenti").Range("A1:CR" & x).Copy wb.Sheets("Agenti").Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 'CANCELLA COLONNE CHE NON INTERESSANO wb.Sheets("Agenti").Range("A1:AN" & x).Select Selection.Delete Shift:=xlToLeft '-------------------------------------------- '1*insericere una colonna prima della colonna G, Columns("G:G").Select Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 'formato colonna generale Columns("G:G").Select Selection.NumberFormat = "General" 'nella seconda cella scrivi "colore-taglia-dimensioni" e wb.Sheets("Agenti").Range("G2").FormulaR1C1 = "Colore- Taglia- Dimensioni" 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 'COME DEVO FARE PER NON FORMATTARE LA COLONNA CREATA COME TESTO?..NON MI FUNZIONA LA FORMULA .. 'dalla cella 3 fino in fondo riporta la formula '=concatena(G&H&J&K&L) poi converti il risultato in valori.(copia e incolla su se stessa) x = wb.Sheets("Agenti").Range("A" & Rows.Count).End(xlUp).Row wb.Sheets("Agenti").Range("G3:G" & x).FormulaR1C1 = "=CONCATENA(H3,I3,J3,K3,L3,M3)" 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX '2*inserire una colonna fra la colonna Q e R, Columns("R:R").Select Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 'con scritto "PR" nella cella A2 wb.Sheets("Agenti").Range("R2").FormulaR1C1 = "PR" 'e riporta i valori scritti nella colonna AJ del foglio (CGA e Sito) poi convertila in valori wb.Sheets("Agenti").Range("R3:R" & x).FormulaR1C1 = "='CGA e Sito'!RC[27]" '2*inserire una colonna fra la colonna Q e R, con scritto "PR" nella cella A2 e riporta i valori scritti nella colonna AJ del foglio (CGA e Sito) poi convertila in valori 'CICLO '3*inserire una riga vuota, fra ogni riga scritta, a partire da A3 '4*in ogni riga vuota, scrivere "P" nella colonna B '5*in ogni riga scritta copiare le celle dalla colonna v alla colonna W, e incollollare in valori nella riga (vuota) sottostante, a partire dalla cella della colonna P '6*in ogni riga scritta copiare le celle dalla colonna X alla colonna Z, e incollollare in valori nella riga (vuota) sottostante, a partire dalla cella della colonna S '7*nella riga scritta..copiare le celle dalla colonna AB a AL, incollarle (formati e numeri) nella riga (vuota) sottostante, a partire dalla colonna AA '8*Nella cella G della riga scritta, concatenale cella da H a M e convertile in valori '9*Unire celle A,C,D,E,F,G,N,O,AM,AN scritte, con le rispettive celle sottostanti(vuote) 'FINE CICLO '10*elimina colonne: H:M; V:Z; AB; AD; AF; AH; AJ; AL '------------------------------------------------------ 'se non erro a questo punto..dovrebbe essere tuto ok... '-------------------------------------------- Application.DisplayAlerts = True End Sub
poi ovviamente..dovro proseguire con la scrittura della macro (i passaggi sono gia scritti nel codice)
Sicuramente trovero altri problemi... 
per esempio il for next mi dara problemi. Ancora non l'ho capito.
Qualche settimana fa mi era stata fatta una macro con il ''for next" e ho provato ad adattarla a un altro file....senza risultati.
Mi auguro questa volta di riuscirci...ma se non dovessi..rimanete sintonizzati