| | Post: 34 | Registrato il: 29/06/2008
| Città: ACQUAFONDATA | Età: 44 | Utente Junior | excel 2007 | | OFFLINE | |
|
17/10/2019 22:03 | |
ciao
ho un pivot e nei pivotTable field un filtro che si chiama market
ho associato una macro che mi seleziona il primo valore nel fields market poi copia tutto il pivot e lo incolla come value in uno shette che ha lo stesso nome del primo market selzionato; poi mi seleziona il secondo valore nel campo market, copia tutto il pivot e lo incolla come value in un nuovo sheet che ha lo stesso nome del secondo market selezionato e cosi via fino a selezionare tutti i market e copiare in tutti sheet differenti.
i dati a cui punta il pivot ovviamente puo cambiare di mese in mese quindi puo succedere che un market non lo trovi ... e li il problema xke mi si blocca la macro.
come faccio a dirgli che se non trova quel market passa al successivo ?
questa la macro ( solo dei primi 3 market perche sono tantiiii )
grazie a tutti ....
Sub emeaITA()
Sheets("Italy").Select
ActiveWindow.SmallScroll Down:=-20
Range("A15:AJ15").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
ActiveWindow.LargeScroll ToRight:=-1
Range("A15").Select
Sheets("DSO").Select
ActiveWindow.SmallScroll Down:=-16
ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"[ALL INVOICE].[MARKET].[MARKET]").VisibleItemsList = Array( _
"[ALL INVOICE].[MARKET].&[Italy]")
Range("A14:AJ14").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("Italy").Select
Range("Table57[[#Headers],[Customer Number]]").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveWindow.SmallScroll Down:=-64
Range("J10").Select
Sheets("CentralEurope").Select
ActiveWindow.SmallScroll Down:=-20
Range("A15:AJ15").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
ActiveWindow.LargeScroll ToRight:=-1
Range("A15").Select
Sheets("DSO").Select
ActiveWindow.SmallScroll Down:=-16
ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"[ALL INVOICE].[MARKET].[MARKET]").VisibleItemsList = Array( _
"[ALL INVOICE].[MARKET].&[Central Europe]")
Range("A14:AJ14").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("CentralEurope").Select
Range("Table578[[#Headers],[Customer Number]]").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveWindow.SmallScroll Down:=-64
Range("J10").Select
Sheets("USA").Select
ActiveWindow.SmallScroll Down:=-20
Range("A15:AJ15").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
ActiveWindow.LargeScroll ToRight:=-1
Range("A15").Select
Sheets("DSO").Select
ActiveWindow.SmallScroll Down:=-16
ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"[ALL INVOICE].[MARKET].[MARKET]").VisibleItemsList = Array( _
"[ALL INVOICE].[MARKET].&[USA]")
Range("A14:AJ14").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("USA").Select
Range("Table30[[#Headers],[Customer Number]]").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveWindow.SmallScroll Down:=-64
Range("J10").Select |
|
| | Post: 882 | Registrato il: 16/08/2015
| Città: CORDENONS | Età: 67 | Utente Senior | Excel 2016-32bit Win11 | | OFFLINE |
|
17/10/2019 22:27 | |
Dato che dici che la macro va in errore se manca un Market puoi fruttare l'istruzione "On Error GoTo" per passare al market successivo. Per i dettagli puoi anche fare una ricerca in rete.
______________________________________________________________
C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto) |
| | Post: 34 | Registrato il: 29/06/2008
| Città: ACQUAFONDATA | Età: 44 | Utente Junior | excel 2007 | | OFFLINE | |
|
18/10/2019 08:51 | |
grazie ...
provo a cercare in rete ...
|
| | Post: 35 | Registrato il: 29/06/2008
| Città: ACQUAFONDATA | Età: 44 | Utente Junior | excel 2007 | | OFFLINE | |
|
18/10/2019 09:38 | |
... non riesco ad inserirlo nella macro sopra ... mi aiutate per favore ?
in che punto lo dovrei inserire ? e come ? |
| | Post: 2.180 | Registrato il: 21/03/2008
| Città: LOCATE VARESINO | Età: 76 | Utente Veteran | 2007 / 13 | | OFFLINE | |
|
18/10/2019 12:00 | |
ciao
Sub emeaITA()
On Error Resume Next
Sheets("Italy").Select
Ciao da locate
excel 2007 / 13 |
| | Post: 2.422 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
18/10/2019 12:47 | |
ciao
lo vedo un po' pericoloso quel "on error resume next".....
Poniamo il caso che il foglio USA non esiste, tutte le istruzioni che seguono: Sheets("USA").Select, verranno eseguite comunque creando un bel po' di problemi....
A mio avviso (ma senza file di esempio è un po' complesso), dovresti mettere tutto all'interno di un loop che legge i vari fogli; se il foglio risulta assente salti al successivo.
L'alternativa (bruttina) sarebbe impostare tanti riferimenti quanti sono i fogli ed utilizzare l'on error goto "riferimento" del successivo foglio.
Per esempio:
prima di
Sheets("CentralEurope").Select
ci metti:
CentralEurope:
e prima di:
Sheets("Italy").Select
ci metti:
on error goto CentralEurope
e così via...ripeto: alquanto farraginoso
saluti
[Modificato da dodo47 18/10/2019 12:54] Domenico
Win 10 - Excel 2016 |
| | Post: 36 | Registrato il: 29/06/2008
| Città: ACQUAFONDATA | Età: 44 | Utente Junior | excel 2007 | | OFFLINE | |
|
18/10/2019 13:55 | |
gli sheet sono sempre gli stessi .... non cambiano mai ... cambiano solo le informazioni da incollare sopra ogni sheet e queste informazioni vengono da un pivot filtrato presente sul primo sheet ... quindi filtro "italia" copio i dati e li incollo su sheet italia; poi filtro centraleurope copio i dati e li incollo su sheet central europe .... e cosi via .... certo se potessi migliorare la macro con un loop come dici te sarebbe meglio ... io non essendo esperta ho registrato la macro e l'ho adattata.
|
| | Post: 2.423 | Registrato il: 06/04/2013
| Utente Veteran | 2010 | | OFFLINE |
|
18/10/2019 16:05 | |
ciao
questo si era capito.
In sintesi hai un foglio DSO con una pivot alla quale di volta in volta applichi un filtro il cui risultato copy nel foglio che ha lo stesso nome del filtro applicato.
Non puoi pretendere che qualcuno ricrei il tuo documento per creare una macro più adatta.
Visto che tu hai già il tutto predisposto, invia un esempio senza dati sensibili e vedrai che si troverà una soluzione.
Curiosità: perchè usi tabelle che sono sempre problematiche da elaborare con la programmazione e (azzardo) anche con le formule?. ??
saluti
[Modificato da dodo47 18/10/2019 19:02] Domenico
Win 10 - Excel 2016 |
|
|