Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
#62511
No forum, alguem ajudou me a montar via Macro esta folha que tenho em anexo, para um pedido inicial, eu não sabia sequer que era possível fazer o que ele fez, deixou me curioso e comecei a ver uns tutoriais de vba, e vi que tem muito potencial, mas infelizmente ainda não tenho pernas para conseguir fazer, daí pedir a vossa ajuda.
O que queria era na folha em anexo acrescentar código ao que está para fazer o seguinte;
A folha de Resumo é a que possui a Macro, eu como não consigo fazer dessa maneira, fiz de maneira arcaica a folha Resumo2, e queria que a folha Resumo original ficasse com;

Ficar com o especto do que manualmente fiz na folha resumo 2 ( ou seja para ficar mais visualmente atrativa separar as linhas com cores e linhas, podem ser estas ou outras.
Como não tenho interesse em produtos que satisfaçam esta condição Stock (coluna E) igual a zero e soma total de vendas ( Coluna T Unid) igual a zero estejam visíveis, manualmente para as selecionar o que fiz foi, somar stock com total de vendas, se valor igual a zero, então podem ser removidas essas linhas.
Depois disso, acrescentar uma coluna depois de T Unid, chamada, proposta de encomenda, que será igual a valor de T Unid-Stock.
Também formatei para que nas colunas de H a S, sempre que o valor é zero, a célula fica vazia, para não haver tanto " lixo " na folha, é possivel automatizar esta formatação apenas para as células que irão aparecer pela execução do código?


Será isto possível?

Para aumentar o desafio e pelos videos que tenho visto no hashtagtreinamentos, no ficheiro de RAR, vao 3 ficheiros que são os extratidos do sistemos informatico, são CSV com o nome Loja 1,2 e 3.
Era possível que desde que a "folha resumo" com a Macro estivesse na mesma pasta, não houvesse a necessidade de copiar cada uma delas para as abas Loja 1,2,3, e a Marcro fizesse a leitura directa dessas abas e apenas ficasse o resumo? Se der, "show de Bola", se não, já fico muito contente com as alterações acima pedidas

Obrigado desde já
Você não está autorizado a ver ou baixar esse anexo.
Editado pela última vez por foliveir84 em 04 Mar 2021 às 09:27, em um total de 1 vez.
Por osvaldomp
#62539
foliveir84 escreveu: 26 Fev 2021 às 20:01 Ficar com o especto do que manualmente fiz na folha resumo 2...
1. ok, bordas nas linhas ocupadas

... Stock (coluna E) igual a zero e soma total de vendas ( Coluna T Unid) igual a zero ... podem ser removidas essas linhas.
2. se Stock = 0 E T Unid = 0 ~~~> então exclui a linha, é isso?

Depois disso, acrescentar uma coluna depois de T Unid, chamada, proposta de encomenda, que será igual a valor de T Unid-Stock.
3. ok, no seu exemplo ~~~> T2-E2

... colunas de H a S, sempre que o valor é zero, a célula fica vazia,...
4 . ok, é possível ~~~> colunas dos meses, é isso ?

... vao 3 ficheiros que são os extratidos do sistemos informatico, são CSV com o nome Loja 1,2 e 3.
5. ok, é possível (os 3 arquivos .csv deverão estar abertos ao rodar o código)
#62546
osvaldomp escreveu: 28 Fev 2021 às 17:20
foliveir84 escreveu: 26 Fev 2021 às 20:01 Ficar com o especto do que manualmente fiz na folha resumo 2...
1. ok, bordas nas linhas ocupadas

Sim, borlas nas linhas e se der com cor alternada, isto é uma linha branca outra cinza, etc , etc para facilitar a leitura

... Stock (coluna E) igual a zero e soma total de vendas ( Coluna T Unid) igual a zero ... podem ser removidas essas linhas.
2. se Stock = 0 E T Unid = 0 ~~~> então exclui a linha, é isso?

Exactamente, é isso mesmo

Depois disso, acrescentar uma coluna depois de T Unid, chamada, proposta de encomenda, que será igual a valor de T Unid-Stock.
3. ok, no seu exemplo ~~~> T2-E2

Sim , é isso, só não dei nome às colunas, pois pode haver folhas apenas com 4 meses, outra com 5 etc, e assim a coluna de T Unid estará em diferentes colunas

... colunas de H a S, sempre que o valor é zero, a célula fica vazia,...
4 . ok, é possível ~~~> colunas dos meses, é isso ?

Exacto, as colunas referente aos meses em que o valor seja zero, ficarem vazias

... vao 3 ficheiros que são os extratidos do sistemos informatico, são CSV com o nome Loja 1,2 e 3.
5. ok, é possível (os 3 arquivos .csv deverão estar abertos ao rodar o código)

Ok, parece me perfeito
Por osvaldomp
#62550
Instale uma cópia deste código no lugar do anterior.
Código: Selecionar todos
'copia dados de 3 arquivos .csv isolados; chama macro Complementos
Sub MontaResumoV5()
 Dim c As Long, LR As Long, LC As Long, wb As Workbook, ws As Worksheet, k As Long, x As Long, i As Long
  Application.ScreenUpdating = False
  Sheets("Resumo").Cells = ""
  For i = 1 To 3
   For Each wb In Application.Workbooks
    If wb.Name = "Loja" & i & ".csv" Then
     Set ws = wb.Sheets("Loja" & i)
     If i = 1 Then
      LC = ws.Cells(1, Columns.Count).End(1).Column
      ws.[A1].Resize(, LC).Copy
      Sheets("Resumo").[A1].PasteSpecial xlValues
     End If
     ws.Range("A2", ws.Cells(ws.Cells(Rows.Count, 1).End(3).Row, LC)).Copy Sheets("Resumo").Cells(Rows.Count, 1).End(3)(2)
    End If
   Next wb
  Next i
   With Sheets("Resumo")
    LR = .Cells(Rows.Count, 1).End(xlUp).Row
    .Range("A2:AB" & LR).Sort Key1:=.[A2], Order1:=xlAscending
    For c = 2 To LR
     k = Application.CountIf(.[A:A], .Cells(c, 1))
      .Cells(c, 5) = Application.Sum(.Cells(c, 5).Resize(k))
      For x = 8 To LC
       .Cells(c, x) = Application.Sum(.Cells(c, x).Resize(k))
      Next x
      c = c + k - 1
    Next c
    .Range("A2:AB" & LR).RemoveDuplicates Columns:=1, Header:=xlNo
    .Range("A2:AB" & LR).Sort Key1:=.[B2], Order1:=xlAscending
    .Columns("C:D").Delete
    Complementos
   End With
End Sub
#

Instale uma cópia deste novo código em um novo módulo (menu Inserir | Módulo)
Código: Selecionar todos
'insere ~~~> título em nova coluna, fórmulas na nova coluna, bordas
'exclui ~~~> zeros nas colunas dos meses, linhas em que Stock=0 e T Uni=0
Sub Complementos()
 Dim LR As Long, LC As Long, tu As Long, m As Long
  With Sheets("Resumo")
   .Cells.Borders.LineStyle = xlNone
   LR = .Cells(Rows.Count, 1).End(3).Row
   LC = .Cells(1, Columns.Count).End(1).Column + 1
   .Range("A2", .Cells(LR, LC)).Interior.Color = xlNone
   .Cells(1, LC) = "proposta de encomenda"
   .Cells(2, LC).Resize(LR - 1) = "=" & Cells(2, LC).Offset(, -1).Address(0, 0) & "-C2"
   .Range("F2", .Cells(LR, LC - 2)).Replace 0, "", xlWhole
   tu = .Rows(1).Find("T Uni").Column
   .[A1].AutoFilter 3, 0
   .[A1].AutoFilter tu, 0
   If .AutoFilter.Range.Columns(1).SpecialCells(12).Count > 1 Then
    .Range("A2", Cells(LR, LC)).EntireRow.Delete
   End If
   .Cells.AutoFilter
   With .Range("A2:" & .Cells(.Cells(Rows.Count, 1).End(3).Row + 1, LC).Address)
    .Borders(xlInsideHorizontal).LineStyle = xlDouble
    .Borders(xlInsideHorizontal).ThemeColor = 5
   End With
   For m = 3 To .Cells(Rows.Count, 1).End(3).Row Step 2
    .Cells(m, 1).Resize(, LC).Interior.ThemeColor = xlThemeColorDark1
    .Cells(m, 1).Resize(, LC).Interior.TintAndShade = -4.99893185216834E-02
   Next m
  End With
End Sub
#
funcionamento - abra também os 3 arquivos .csv e rode o primeiro código acima, ao final o segundo código será acionado pelo primeiro.
kiko, foliveir84 agradeceu por isso
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord