Excel Forum Per condividere esperienze su Microsoft Excel

VBA - AIUTO MACRO

  • Messaggi
  • OFFLINE
    stellablu79
    Post: 34
    Registrato il: 29/06/2008
    Città: ACQUAFONDATA
    Età: 44
    Utente Junior
    excel 2007
    00 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
  • OFFLINE
    rollis13
    Post: 882
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Senior
    Excel 2016-32bit Win11
    00 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)
  • OFFLINE
    stellablu79
    Post: 34
    Registrato il: 29/06/2008
    Città: ACQUAFONDATA
    Età: 44
    Utente Junior
    excel 2007
    00 18/10/2019 08:51
    grazie ...
    provo a cercare in rete ...
  • OFFLINE
    stellablu79
    Post: 35
    Registrato il: 29/06/2008
    Città: ACQUAFONDATA
    Età: 44
    Utente Junior
    excel 2007
    00 18/10/2019 09:38
    ... non riesco ad inserirlo nella macro sopra ... mi aiutate per favore ?
    in che punto lo dovrei inserire ? e come ?
  • OFFLINE
    locatevaresino
    Post: 2.180
    Registrato il: 21/03/2008
    Città: LOCATE VARESINO
    Età: 76
    Utente Veteran
    2007 / 13
    00 18/10/2019 12:00
    ciao

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

    Ciao da locate
    excel 2007 / 13
  • OFFLINE
    dodo47
    Post: 2.422
    Registrato il: 06/04/2013
    Utente Veteran
    2010
    10 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
  • OFFLINE
    stellablu79
    Post: 36
    Registrato il: 29/06/2008
    Città: ACQUAFONDATA
    Età: 44
    Utente Junior
    excel 2007
    00 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.

  • OFFLINE
    dodo47
    Post: 2.423
    Registrato il: 06/04/2013
    Utente Veteran
    2010
    10 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
  • 15MediaObject5,0028 2