Hi everyone, this is my first post and i new in vba.
i create 3 macros for a excel template, that get the data from the first sheet ("Dados") and do some filter in this data in the other 3 sheets. I upload this file in a internal system, that will use this template for download the data from other users.
After downloading from the system, only one macro is working ("atualizarDetalheNegociacao"), and macros ("atualizarResumoItem", "atualizarResumoTotal") IS NOT WORKING.
All sheets with macro have the same name of the macro
Here are the Macros:
i create 3 macros for a excel template, that get the data from the first sheet ("Dados") and do some filter in this data in the other 3 sheets. I upload this file in a internal system, that will use this template for download the data from other users.
After downloading from the system, only one macro is working ("atualizarDetalheNegociacao"), and macros ("atualizarResumoItem", "atualizarResumoTotal") IS NOT WORKING.
- I compare my template file BEFORE uploading, but is the same thing code, nothing change.
- I try to make a new sheet inside the template with the problem, using the same code, but the same error happens with the other two macros ("atualizarResumoItem", "atualizarResumoTotal"). The macro "atualizarDetalheNegociacao" continues to work, witch for me is strange;
- I try to copy the code for the template with the problem to the template working, everthing works fine;
All sheets with macro have the same name of the macro
Here are the Macros:
VBA Code:
Sub atualizarDetalheNegociacao()
' Get the worksheets
Dim shRead As Worksheet, shWrite As Worksheet
Set shRead = ThisWorkbook.Worksheets("Dados")
Set shWrite = ThisWorkbook.Worksheets("Detalhes da Negociação")
'mantem headers
Dim rg As Range
Set rg = ThisWorkbook.Worksheets("Detalhes da Negociação").Range("A1").CurrentRegion
rg.Offset(1).ClearContents
'se existe filtro mostre tudo
If shRead.FilterMode = True Then
shRead.ShowAllData
End If
'Range de dados é a aba Dados
Dim rgData As Range, rgCriteria As Range
Set rgData = shRead.Range("A1").CurrentRegion
'aplicar os dados com base nos filtros
rgData.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=shWrite.Range("A2")
shDetalhesNegocicao.Rows(2).EntireRow.Delete
End Sub
VBA Code:
Sub atualizarResumoItem()
' Get the worksheets
Dim shRead As Worksheet, shWrite As Worksheet
Set shRead = ThisWorkbook.Worksheets("Dados")
Set shWrite = ThisWorkbook.Worksheets("Resumo Por Item")
'manter headers
Dim rg As Range
Set rg = ThisWorkbook.Worksheets("Resumo Por Item").Range("A1").CurrentRegion
rg.Offset(1).ClearContents
If shRead.FilterMode = True Then
shRead.ShowAllData
End If
'Range de dados é a aba Dados
Dim rgData As Range, rgCriteria As Range
Set rgData = shRead.Range("A1").CurrentRegion
'Criterio é : fornecedores com Status Participante Desqualificado = Não
Set rgCriteria = ThisWorkbook.Worksheets("Filtros").Range("A1").CurrentRegion
rgData.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=rgCriteria _
, CopyToRange:=shWrite.Range("A2")
'Remove de maneira prática as linhas que não são necessárias
'Deletar linha duplica do Header
Rows(2).EntireRow.Delete
shResumoItem.Activate
'Ordernar por menor valor
Range("E2", Range("E2").End(xlDown)).Sort Key1:=Range("E1"), Order1:=xlAscending
'manter somente os menores valores removendo duplicatas baseado no nome do fornecedor/empresa
ActiveSheet.UsedRange.RemoveDuplicates Columns:=1, Header:=xlYes
End Sub
VBA Code:
Sub atualizarResumoTotal()
' Get the worksheets
Dim shRead As Worksheet, shWrite As Worksheet
Set shRead = ThisWorkbook.Worksheets("Dados")
Set shWrite = ThisWorkbook.Worksheets("Resumo Total")
'manter headers
Dim rg As Range
Set rg = ThisWorkbook.Worksheets("Resumo Total").Range("A1").CurrentRegion
rg.Offset(1).ClearContents
'colunas a serem enviadas para a aba
shWrite.Range("A1").Value = "Empresa"
''shWrite.Range("B1").Value2 = "Melhor Preço Unitário"
shWrite.Range("B1").Value = "Ciclo"
shWrite.Range("C1").Value = "Forma de Pagamento"
shWrite.Range("D1").Value2 = "Preço Total"
shWrite.Range("E1").Value = "Incoterm"
shWrite.Range("F1").Value = "Incoterm extra"
shWrite.Range("G1").Value = "Local do incoterm"
shWrite.Range("H1").Value2 = "Vencimento da proposta"
shWrite.Range("I1").Value = "Moeda respondida"
'se possui filtro mostra os dados
If shRead.FilterMode = True Then
shRead.ShowAllData
End If
Dim rgData As Range, rgCriteria As Range
Set rgData = shRead.Range("A1").CurrentRegion
'aplicar os dados com base nos filtros
Set rgCriteria = ThisWorkbook.Worksheets("Filtros").Range("A1").CurrentRegion
rgData.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=rgCriteria _
, CopyToRange:=shWrite.Range("A1:I1")
End Sub
Sub somaFornecedoresFiltro()
Dim ar As Variant
Dim i As Long
Dim j As Long
Dim n As Long
Dim str As String
n = 1
ar = shResumoTotal.Cells(1, 1).CurrentRegion.Value 'Aonde começar a buscar os dados (cabeçalhos contam)
With CreateObject("Scripting.Dictionary")
For i = 2 To UBound(ar, 1)
str = ar(i, 1) 'Qual coluna será usada como chave para filtrar
If Not .exists(str) Then
n = n + 1
For j = 1 To UBound(ar, 2)
ar(n, j) = ar(i, j)
Next
.Item(str) = n
Else
For j = 4 To 4 'range que deve ser feito os cálculos. Caso precise aumentar trocar o segundo 4, exemplo ler da 4 até 6, logo for 4 To 6
ar(.Item(str), j) = ar(.Item(str), j) + ar(i, j)
Next
End If
Next
End With
Set rg = ThisWorkbook.Worksheets("Resumo Total").Range("A1").CurrentRegion 'limpar dados para inserir apos filtro
rg.Offset(1).ClearContents
shResumoTotal.Range("A2").Resize(n, UBound(ar, 2)).Value = ar 'voltar os dados pr
Rows(2).EntireRow.Delete 'deletar o cabeçalho que vai ser copiado duas vezes
End Sub
Comparative Map - DESQUALIFICADO (1).xlsm | |||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | AA | AB | AC | AD | AE | AF | AG | AH | AI | AJ | AK | AL | AM | AN | AO | AP | AQ | AR | AS | |||
1 | Código do Item | Descrição | Quantidade de itens | Empresa | Melhor Preço Unitário | Endereço por RFQ | Ciclo | Participante Premiado | Forma de Pagamento | Preço Unitário | Preço Total | Preço Total Convertido | Prazo de Entrega em Dias | Melhor Preço Por Item | Valor do Frete | Base IPI | % IPI | NCM | Base ICMS | % ICMS | Substituição tributária | ID Item | Incoterm | Incoterm extra | Local do incoterm | Vencimento da proposta | Tipo do item | Moeda respondida | Preço de ultima compra | Valor de referencia | CFOP | Origem do Material | Unidade de Medida | Valor do frete incluso no preço unitário | Total dos impostos internacionais | Impostos internacionais inclusos | ICMS Incluso | Alíquota do ISS | ISS Incluso | Alíquota do PIS | PIS Incluso | Alíquota do Cofins | Cofins Incluso | IPI Incluso | Participante Desqualificado | ||
2 | 01 | Item 01 | 1,00000 | BRUNO GAMES 7.0 FORNECEDOR 001 | 200,00000 | VERDADEIRO | 1 | FALSO | 60 dias | 200,00000 | 200,00000 | 0,00000 | 20 | VERDADEIRO | 0,00000 | 0,00000 | 0,00000 | 0,00000 | 0,00000 | Not informed | 175196 | CFR | Fornecedor | RJ1 | 31/05/2022 00:00:00 | Goods | BRL | 0,00000 | 190,00000 | metro | No | 0,00000 | No | No | 0 | No | 0 | No | 0 | No | No | No | |||||
3 | 01 | Item 01 | 1,00000 | Empresa 02 - Tijolos | 200,00000 | VERDADEIRO | 1 | FALSO | 60 dias | 500,00000 | 500,00000 | 0,00000 | 50 | FALSO | 0,00000 | 0,00000 | 0,00000 | 0,00000 | 0,00000 | Not informed | 175196 | CFR | Fornecedor | RJ1 | 31/05/2022 00:00:00 | Goods | BRL | 0,00000 | 190,00000 | metro | No | 0,00000 | No | No | 0 | No | 0 | No | 0 | No | No | No | |||||
4 | 02 | item 02 | 1,00000 | BRUNO GAMES 7.0 FORNECEDOR 001 | 100,00000 | VERDADEIRO | 1 | FALSO | 60 dias | 300,00000 | 300,00000 | 0,00000 | 20 | FALSO | 0,00000 | 0,00000 | 0,00000 | 0,00000 | 0,00000 | Not informed | 175197 | CFR | Fornecedor | RJ1 | 31/05/2022 00:00:00 | Service | BRL | 0,00000 | 200,00000 | metro | No | 0,00000 | No | No | 0 | No | 0 | No | 0 | No | No | No | |||||
5 | 02 | item 02 | 1,00000 | Empresa 02 - Tijolos | 100,00000 | VERDADEIRO | 1 | FALSO | 60 dias | 100,00000 | 100,00000 | 0,00000 | 50 | VERDADEIRO | 0,00000 | 0,00000 | 0,00000 | 0,00000 | 0,00000 | Not informed | 175197 | CFR | Fornecedor | RJ1 | 31/05/2022 00:00:00 | Service | BRL | 0,00000 | 200,00000 | metro | No | 0,00000 | No | No | 0 | No | 0 | No | 0 | No | No | No | |||||
Dados |
Comparative Map - DESQUALIFICADO (1).xlsm | ||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | AA | AB | AC | AD | AE | AF | AG | AH | AI | AJ | AK | AL | AM | AN | AO | AP | AQ | AR | AS | AT | |||
1 | Código do Item | Descrição | Quantidade de itens | Empresa | Melhor Preço Unitário | Endereço por RFQ | Ciclo | Participante Premiado | Forma de Pagamento | Preço Unitário | Preço Total | Preço Total Convertido | Prazo de Entrega em Dias | Melhor Preço Por Item | Valor do Frete | Base IPI | % IPI | NCM | Base ICMS | % ICMS | Substituição tributária | ID Item | Incoterm | Incoterm extra | Local do incoterm | Vencimento da proposta | Tipo do item | Moeda respondida | Preço de ultima compra | Valor de referencia | CFOP | Origem do Material | Unidade de Medida | Valor do frete incluso no preço unitário | Total dos impostos internacionais | Impostos internacionais inclusos | ICMS Incluso | Alíquota do ISS | ISS Incluso | Alíquota do PIS | PIS Incluso | Alíquota do Cofins | Cofins Incluso | IPI Incluso | Participante Desqualificado | |||
2 | 01 | Item 01 | 1,00000 | BRUNO GAMES 7.0 FORNECEDOR 001 | 200,00000 | ######## | 1 | FALSO | 60 dias | 200,00000 | 200,00000 | 0,00000 | 20 | ######## | 0,00000 | 0,00000 | 0,00000 | 0,00000 | 0,00000 | Not informed | 175196 | CFR | Fornecedor | RJ1 | 31/05/2022 00:00:00 | Goods | BRL | 0,00000 | 190,00000 | metro | No | 0,00000 | No | No | 0 | No | 0 | No | 0 | No | No | No | ||||||
3 | 01 | Item 01 | 1,00000 | Empresa 02 - Tijolos | 200,00000 | ######## | 1 | FALSO | 60 dias | 500,00000 | 500,00000 | 0,00000 | 50 | FALSO | 0,00000 | 0,00000 | 0,00000 | 0,00000 | 0,00000 | Not informed | 175196 | CFR | Fornecedor | RJ1 | 31/05/2022 00:00:00 | Goods | BRL | 0,00000 | 190,00000 | metro | No | 0,00000 | No | No | 0 | No | 0 | No | 0 | No | No | No | ||||||
4 | 02 | item 02 | 1,00000 | BRUNO GAMES 7.0 FORNECEDOR 001 | 100,00000 | ######## | 1 | FALSO | 60 dias | 300,00000 | 300,00000 | 0,00000 | 20 | FALSO | 0,00000 | 0,00000 | 0,00000 | 0,00000 | 0,00000 | Not informed | 175197 | CFR | Fornecedor | RJ1 | 31/05/2022 00:00:00 | Service | BRL | 0,00000 | 200,00000 | metro | No | 0,00000 | No | No | 0 | No | 0 | No | 0 | No | No | No | ||||||
5 | 02 | item 02 | 1,00000 | Empresa 02 - Tijolos | 100,00000 | ######## | 1 | FALSO | 60 dias | 100,00000 | 100,00000 | 0,00000 | 50 | ######## | 0,00000 | 0,00000 | 0,00000 | 0,00000 | 0,00000 | Not informed | 175197 | CFR | Fornecedor | RJ1 | 31/05/2022 00:00:00 | Service | BRL | 0,00000 | 200,00000 | metro | No | 0,00000 | No | No | 0 | No | 0 | No | 0 | No | No | No | ||||||
6 | ||||||||||||||||||||||||||||||||||||||||||||||||
Detalhes da Negociação |