Problema com macro e formula


#1

Bom Dia a todos, Sou Andre, e completamente leiogo em excel =).
Desenvolvi uma planilha e estou tendo dificuldade em resolver um problema com macros
vou incerir o link do arquivo para que fique mais facil de resolver.
-> http://ge.tt/1Z24Gqt2

O problema é o seguinte:

Quando vou na aba HOME onde se localiza os campos, DATA, SEMANA, INDICE, etc…
Abaixo deste campo, criei um macro onde pencho os valores desejados e esta macro envia esses valores para duas novas abas, DIARIO e HISTORICO
Na aba Historico,la em cima onde esta escrito RESULTADO LIQUIDO, PONTOS etc… eu quero que ele some todos os valores que foram enviados so que
toda vez que eu envio uma macro a formula desce junto com a macro, assim perco o calculo verdadeiro, ja tentei utilizar $ este simbolo na celula para congelar mas nao funciona.
como posso faze para resolver esse problema?

E nao fiquem espantados com a confusao nas macros, sou leigo e aquilo deve estar uma loucura, se alguem puder se disponibilizar para dar uma melhorada no funcionamento agradeco tambem!

Obigado desde ja pela ajuda.


#2

você que somar os pontos por que o resultado liquido já esta somando?


#3

Ola William,
Nao, quero somar os pontos de GAIN e LOSS, o problema é que cada vez que envio a macro para o HISTORICO a minha formula no gain e loss descem juntos


#4

Boas @afornalha, os dados não podem ser colados no fim da tabela?
Assim o seu problema fica resolvido.


#5

Ola Galamba,
Como assim no fim da tabela?


#6

controle de meta e risco 2019.xlsm (39,5 KB)

AFORNALHA SEGUE A PLANILHA CORRIGIDA E COM O CÓDIGO MELHORADO


#7

ESSE E O CÓDIGO PARA APLICAÇÃO, DA PARA ADAPTAR AOS DEMAIS OBJETIVOS QUE QUEIRA FAZER.


#8

Caraca William, mandou muito bem cara, eu sou leigo com excel e ja fazia um bom tempo que estava tentado resolver esse pproblema,
Esta tabela que voce criou posso aplicar tbm nas outras abas?
pode me explicar como finciona essa tabela?
Muito obrigado


#9

pode sim, com apenas algumas adaptações. na verdade você seleciona a guia inserir e aplica a formatação de tabela. vou gravar um tutoria para meu canal e posta aqui o link.


#10

Obrigado William,
esta funcionalidade que voce criou ficou exelente, unico problema é que quando eu clicava em enviar na aba home ele copiava os dados para historico e ao mesmo tempo diario, depois da modificacao ele copia os dados somente para o historico


#11

faz uma adaptação para ele lançar também no diário, replica esse código e chama ele ai dentro desse que já esta pronto.


#12

Baixa o modelo com os códigos prontos.controle de meta e risco 2019.xlsm (41,8 KB)


#13

depois você altera a mensagem de saída de lançamento de informações da maneira que preferir.


#14

Bom Dia William, desculpa o incomodo e muito obrigado pela força
Nao adianta, eu estou batendo a cabeca por uma coisa que tenho certeza que é mais simples que andar pra frente.
Neste caso se eu quiser copiar meu resultado que se encontra no topo da aba DIARIO, para a mesma aba Diaria, so algumas celulas ao lado como faço?
tentei criar um novo codigo me baseado nos codigos que vc fez man sem chance

Public Sub Lanca_Diario_Clique()
Dim DadosHome3 As ListObject 'Variaveis para a aba diario
Dim NovoDIARIO As ListRow

'Prepara os objetos para receber valores
Set DadosdIARIO = Sheets("DIARIO").ListObjects("tbDIARIO")
Set NovoDIARIO = DadosDIARIO.ListRows.Add
    
'Define os valores de cada coluna na tabela tbDIARIO
NovoDIARIO.Range(1, 1) = Sheets("DIARIO").Range("J7")
NovoDIARIO.Range(1, 2) = Sheets("DIARIO").Range("K7")
NovoDIARIO.Range(1, 3) = Sheets("DIARIO").Range("L7")
NovoDIARIO.Range(1, 4) = Sheets("DIARIO").Range("M7")
NovoDIARIO.Range(1, 5) = Sheets("DIARIO").Range("N7")
NovoDIARIO.Range(1, 6) = Sheets("DIARIO").Range("O7")

MsgBox "Cadastrado com sucesso.", vbInformation, "Lançamento de Histórico"
Sheets("DIARIO").Range("A7:G500").ClearContents

End Sub


#15

se for na mesma tabela e na mesma aba, não precisa criar um novo código, o que tem que ser feito e criar uma nova coluna na tabela que ja existe e depois acresentar essa celula no código VBA como por exemplo, NovoDIARIO.Range(1, 6) = Sheets(“DIARIO”).Range(“O7”)
NovoDIARIO.Range(1, 7) = Sheets(“DIARIO”).Range(“O7”) >>> ficaria assim, como acrescentei um novo campo na tabela preciso mudar no vba apontando para esse novo campo. isso e feito na mesma rotina e não necessariamente em outra rotina, so faria em outra caso essas informações tivessem que ser salvas em outra tabela ou outra aba, que pelo o que entendi não e o caso aqui. resumindo altera no mesmo codigo mais antes acresenta um novo campo na tabela por que o VBA esta reconhecendo o objeto tabela e não celulas normais do Excel, lembra que inserimos um objeto tabela então ele só reconhece o que estiver dentro dele.


#16

Bom Dia William, o que eu aueria fazer na aba Diario é a mesma coisa que vc fez na minha aba home, utilizando um botao para enviar os dados copiados a unica diferenca é que ele vai estar copiando informaca de uma aba para a mesma aba, eu tentei esse codigo, como vc explicou, mas nao tem jeito
Public Sub Lanca_Diario_Clique()
Dim Dadosdiario As ListObject
Dim NovoDIARIO As ListRow

'Prepara os objetos para receber valores
Set Dadosdiario = Sheets(“DIARIO”).ListObjects(“tbDIARIO”)
Set NovoDIARIO = Dadosdiario.ListRows.Add

NovoDIARIO.Range(1, 1) = Sheets(“DIARIO”).Range(“J4”)
NovoDIARIO.Range(1, 2) = Sheets(“DIARIO”).Range(“K4”)
NovoDIARIO.Range(1, 3) = Sheets(“DIARIO”).Range(“L4”)
NovoDIARIO.Range(1, 4) = Sheets(“DIARIO”).Range(“M4”)
NovoDIARIO.Range(1, 5) = Sheets(“DIARIO”).Range(“N4”)

MsgBox “Cadastrado com sucesso.”, vbInformation, “Lançamento de Histórico”
Sheets(“DIARIO”).Range(“A7:G500”).ClearContents
End Sub


#17

me reenvia ela aqui.


#18

é so isso que quero fazer


#19

Você quer pegar as informações de Diário e jogar na mesma aba mais em uma tabela diferente e isso?


#20

sim, pegar as informacoes onde contem os resultados e jogar em outra trabela na mesma aba e em seguida limpar a tadela onde conteve todas as informacoes anteriores