VBA - AIUTO MACRO

Versione Completa   Stampa   Cerca   Utenti   Iscriviti     Condividi : FacebookTwitter
stellablu79
00giovedì 17 ottobre 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
rollis13
00giovedì 17 ottobre 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.
stellablu79
00venerdì 18 ottobre 2019 08:51
grazie ...
provo a cercare in rete ...
stellablu79
00venerdì 18 ottobre 2019 09:38
... non riesco ad inserirlo nella macro sopra ... mi aiutate per favore ?
in che punto lo dovrei inserire ? e come ?
locatevaresino
00venerdì 18 ottobre 2019 12:00
ciao

Sub emeaITA()
On Error Resume Next
Sheets("Italy").Select

dodo47
10venerdì 18 ottobre 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



stellablu79
00venerdì 18 ottobre 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.

dodo47
10venerdì 18 ottobre 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



Questa è la versione 'lo-fi' del Forum Per visualizzare la versione completa clicca qui
Tutti gli orari sono GMT+01:00. Adesso sono le 01:47.
Copyright © 2000-2024 FFZ srl - www.freeforumzone.com