Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

VBA - AIUTO MACRO

Ultimo Aggiornamento: 18/10/2019 16:05
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
Vota: 15MediaObject5,0028 2
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 17:14. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com