Condividi:        

Gestione due totali

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Re: Gestione due totali

Postdi Marius44 » 02/01/21 19:21

Ciao
Correggi questa riga

elenco = "A1:F" & ur

Adesso funziona. Prova e fai sapere.

Rispondo alle tue domande con una premessa:
In questo Forum e in rete troverai una marea di tutorials per imparare VBA. Prima però devi crearti qualche base di inglese, almeno un minimo, altrimenti non vai da nessuna parte.

1) cosa significa ur
E' una variabile alla quale viene assegnato un determinato valore. Nel nostro caso l'ho utilizzata come Ultima Riga piena di una colonna (per brevità ho messo solo le iniziali)

2) cosa significa For i = 2 To ur
Poichè devi analizzare dalla riga numero 2 fino all'ultima riga valorizzata quella riga di codice di ce ad Excel di assegnare il numero 2 alla variabile i che, ad ogni ciclo, viene incrementata di 1 unità.

3°) Step è una parola chiave di VBA. In inglese vuol dire "passo". Nel nostro caso sto dicendo a Excel-VBA di eseguire un ciclo iniziando dall'ultima cella valorizzata (vedi sopra ur) andando a ritroso (cioè con passo -1)

Purtroppo per te ti sei imbattuto in qualcosa ... al di fuori delle tue conoscenze.
Come mi capita di dire talvolta: prima di correre bisogna imparare a camminare.
Ma se hai voglia, tutto diventa più facile.

Ciao e fai sapere,
Mario
Marius44
Utente Senior
 
Post: 655
Iscritto il: 07/09/15 22:00

Sponsor
 

Re: Gestione due totali

Postdi danibi60 » 02/01/21 21:38

Marius44 ha scritto:Ciao
Correggi questa riga

elenco = "A1:F" & ur

Adesso funziona. Prova e fai sapere.

Rispondo alle tue domande con una premessa:
In questo Forum e in rete troverai una marea di tutorials per imparare VBA. Prima però devi crearti qualche base di inglese, almeno un minimo, altrimenti non vai da nessuna parte.

1) cosa significa ur
E' una variabile alla quale viene assegnato un determinato valore. Nel nostro caso l'ho utilizzata come Ultima Riga piena di una colonna (per brevità ho messo solo le iniziali)

2) cosa significa For i = 2 To ur
Poichè devi analizzare dalla riga numero 2 fino all'ultima riga valorizzata quella riga di codice di ce ad Excel di assegnare il numero 2 alla variabile i che, ad ogni ciclo, viene incrementata di 1 unità.

3°) Step è una parola chiave di VBA. In inglese vuol dire "passo". Nel nostro caso sto dicendo a Excel-VBA di eseguire un ciclo iniziando dall'ultima cella valorizzata (vedi sopra ur) andando a ritroso (cioè con passo -1)

Purtroppo per te ti sei imbattuto in qualcosa ... al di fuori delle tue conoscenze.
Come mi capita di dire talvolta: prima di correre bisogna imparare a camminare.
Ma se hai voglia, tutto diventa più facile.

Ciao e fai sapere,
Mario


Tutto apposto Mario, ora funzionano che è una bellezza: GRAZIE!
Sono mesi che cerco di guardare tutorials e altro, ma poi a fatica riesco a produrre qualcosa di buono, Ti garantisco che vorrei tanto poter evitare di dipendere da altri per le mie richieste ma ahimè il tempo e un lavoro che mi porta via dalle 10 alle 12 ore giorno (a vote anche 14) difficilmente mi permette di sviluppare e accrescere le necessarie conoscenze.

Ad ogni buon conto continuo a esercitarmi... fidati!

Un ultima richiesta rimasta sospesa:

"Nel momento estraggo il file d'origine (Orders - FILE DI PARTENZA) e lo copiassi sopra la tabella d'origine del giorno prima, la macro funzionerà senza intoppi?"

Sarà sufficiente cliccare su "Dati" => "Aggiorna Tutti" oppure andrà rilanciata ogni volta la macro?

Grazie infinite per il supporto e la pazienza.

Daniby
"Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."
Win 10 & Office365 Premium
danibi60
Utente Senior
 
Post: 490
Iscritto il: 11/07/13 09:21
Località: Bergamo

Re: Gestione due totali

Postdi Marius44 » 02/01/21 22:53

Ciao
Usa un altro sistema.
Prova a fare quello che chiedi. Se non riesci allega le tue prove specificando cosa non sei riuscito a fare.

Ciao,
Mario
Marius44
Utente Senior
 
Post: 655
Iscritto il: 07/09/15 22:00

Re: Gestione due totali

Postdi danibi60 » 03/01/21 10:01

Marius44 ha scritto:Ciao
Usa un altro sistema.
Prova a fare quello che chiedi. Se non riesci allega le tue prove specificando cosa non sei riuscito a fare.

Ciao,
Mario



Ok
"Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."
Win 10 & Office365 Premium
danibi60
Utente Senior
 
Post: 490
Iscritto il: 11/07/13 09:21
Località: Bergamo

Re: Gestione due totali

Postdi danibi60 » 11/01/21 20:59

Marius44 ha scritto:Ciao Marius,
perdona se ti scoccio nuovamente, ma ho cercato di modificare la macro da Te costruita al fine da poter portare colonna F (Qantity) subito dopo quella dell'Item (in colonna B per intenderci), ma non solo non me la sposta ma mi crea anche parecchio casino con i dati...eppure ho solo spostato l'ordine nella macro delle colonne...dove ho sbagliato?

Inoltre vorrei chiederti, per meglio evidenziare i totali se è possibile fare in modo che la macro sottolinei (cosi come vedi nel file che ti allego) solo la riga del totale. come formato della riga mi andrebbe bene quella che ho inserito,

https://www.dropbox.com/s/ucqzjq3iw3qcg ... .xlsm?dl=0

Grazie
"Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."
Win 10 & Office365 Premium
danibi60
Utente Senior
 
Post: 490
Iscritto il: 11/07/13 09:21
Località: Bergamo

Re: Gestione due totali

Postdi Marius44 » 11/01/21 23:02

Ciao
Come mi sembra di averti già detto, con Excel-VBA occorre avere le idee chiare sin dall'inizio. Ogni cambiamento in corso d'opera può crearti dei problemi.
Ciò premesso ho impostato le intestazioni del Foglio("TOTALI") con questa sequenza:
Item Name, Quantity, Order Number, Order Date, Order Status, SKU questo perchè quando si trasferiscono i dati vanni nelle rispettive colonne in base a questo pezzo di codice
Codice: Seleziona tutto
For i = 2 To ur
  With sh1
    .Cells(i, 1) = nItm(i - 1) 'Item Name
    .Cells(i, 2) = nQty(i - 1) 'Quantity
    .Cells(i, 3) = nNum(i - 1) 'Order Number
    .Cells(i, 4) = nDat(i - 1) 'Order Date
    .Cells(i, 5) = nSta(i - 1) 'Order Status
    .Cells(i, 6) = nSku(i - 1) 'SKU
  End With
Next i

In base a queste premesse e tenendo conto che vuoi pure la sottolineatura, la macro diventa questa (da sostituire)
Codice: Seleziona tutto
Option Explicit

Sub Riporta_Bis()
Dim sh1 As Worksheet, sh2 As Worksheet
Dim ur As Long, ur2 As Long, i As Long, j As Long, rg As Long
Dim elenco As String, itm As String
Application.ScreenUpdating = False
Set sh1 = Sheets("TOTALI") '<===== da modificare col nome del Foglio
Set sh2 = Sheets("Orders - FILE DI PARTENZA")
ur = sh2.Cells(Rows.Count, 1).End(xlUp).Row
ur2 = sh2.Cells(Rows.Count, 1).End(xlUp).Row
On Error Resume Next
With sh1.Range("A2:F" & ur2 + 100)
  .ClearContents
  .Rows.Ungroup
  .Interior.ColorIndex = xlNone
  .Font.Bold = False
  .Font.Size = 11
  .Borders(xlDiagonalDown).LineStyle = xlNone
  .Borders(xlDiagonalUp).LineStyle = xlNone
  .Borders(xlEdgeLeft).LineStyle = xlNone
  .Borders(xlEdgeTop).LineStyle = xlNone
  .Borders(xlEdgeBottom).LineStyle = xlNone
  .Borders(xlEdgeRight).LineStyle = xlNone
  .Borders(xlInsideVertical).LineStyle = xlNone
  .Borders(xlInsideHorizontal).LineStyle = xlNone
  .Outline.ShowLevels RowLevels:=1
  .ClearOutline
End With
On Error GoTo 0
ReDim nItm(1 To ur - 1)
ReDim nQty(1 To ur - 1)
ReDim nNum(1 To ur - 1)
ReDim nDat(1 To ur - 1)
ReDim nSta(1 To ur - 1)
ReDim nSku(1 To ur - 1)
For i = 2 To ur
  With sh2
    nItm(i - 1) = .Cells(i, 5).Value
    nQty(i - 1) = .Cells(i, 6).Value
    nNum(i - 1) = .Cells(i, 1).Value
    nDat(i - 1) = .Cells(i, 2).Value
    nSta(i - 1) = .Cells(i, 3).Value
    nSku(i - 1) = .Cells(i, 4).Text
  End With
Next i
For i = 2 To ur
  With sh1
    .Cells(i, 1) = nItm(i - 1) 'Item Name
    .Cells(i, 2) = nQty(i - 1) 'Quantity
    .Cells(i, 3) = nNum(i - 1) 'Order Number
    .Cells(i, 4) = nDat(i - 1) 'Order Date
    .Cells(i, 5) = nSta(i - 1) 'Order Status
    .Cells(i, 6) = nSku(i - 1) 'SKU
  End With
Next i
With sh1
  elenco = "A1:F" & ur
  .Range(elenco).Sort Key1:=.Range("A1"), Order1:=xlAscending, Header:=xlYes, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
  For i = ur To 2 Step -1
    itm = .Cells(i, 1)
    For j = i - 1 To 1 Step -1
      If .Cells(j, 1) <> itm Then
        rg = j + 1
        .Range(Cells(rg, 1), Cells(i, 6)).Select
        .Rows(i + 1).EntireRow.Insert
        .Range(.Cells(rg, 1), .Cells(i, 6)).Rows.Group
        .Cells(i + 1, 1) = Cells(i, 1)
        .Cells(i + 1, 1).Font.Bold = True
        .Cells(i + 1, 1).Font.Size = 14
        .Cells(i + 1, 1).Interior.ColorIndex = 15
        .Cells(i + 1, 2) = Application.Sum(.Range("B" & rg & ":B" & i))
        .Cells(i + 1, 2).Font.Bold = True
        .Cells(i + 1, 2).Font.Size = 14
        .Cells(i + 1, 2).Interior.ColorIndex = 15
   'inserisce la sottolineatura
        .Range("A" & i + 1 & ":F" & i + 1).Select
        With Selection.Borders(xlEdgeBottom)
          .LineStyle = xlDouble
          .ColorIndex = xlAutomatic
          .TintAndShade = 0
          .Weight = xlThick
        End With
        i = rg
        Exit For
      End If
    Next j
  Next i
End With
Application.ScreenUpdating = True
sh1.Select
sh1.Cells(1, 7).Select
Set sh1 = Nothing
Set sh2 = Nothing
End Sub


Ciao,
Mario
Marius44
Utente Senior
 
Post: 655
Iscritto il: 07/09/15 22:00

Re: Gestione due totali

Postdi danibi60 » 12/01/21 19:07

Mario tutto ora funziona che è una bellezza: GRAZIE!

Daniby
"Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."
Win 10 & Office365 Premium
danibi60
Utente Senior
 
Post: 490
Iscritto il: 11/07/13 09:21
Località: Bergamo

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "Gestione due totali":


Chi c’è in linea

Visitano il forum: danibi60 e 33 ospiti