Ir ao conteúdo
  • Cadastre-se
blp182

RESOLVIDO Adicionar a data na celula sem atualizar

Recommended Posts

Boa tarde pessoal, estou com um problema em minha planilha. É uma planilha de vendas, e estou fazendo a planilha de controle de venda pegar todo produto vendido na planilha de vendas porém quero que quando ele pegue o produto, ele automaticamente insira a data na coluna de data. Tentei usar a seguinte formula em vba:

 

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Column = 2 Then
        Cells(Target.Row, 1).Value = Date
    End If
End Sub
 
Pórem sem sucesso, pois ele não le quando o produto aparece pois existe a formula nesta celula para puxar os dados da planilha de vendas.
 
Por favor, me ajudem, é meio urgente isso.
 
Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite!!

 

já tentou com o evento calculate?

Private Sub Worksheet_Calculate()    If Target.Column = 2 Then        Cells(Target.Row, 1).Value = Date    End IfEnd Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

ZinhoVBA, Tentei agora, porém deu erro de compilação..

 

"Erro em tempo de execução '424':

 

O objeto é obrigatório.

 

Sabe me dizer onde pode estar o problema?

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia!!

 

Veja se funciona.

Private Sub Worksheet_Change(ByVal Target As Range)Dim rInterest As RangeSet rInterest = Range("B2:B" & Rows.Count - 1).PrecedentsIf Intersect(Target, rInterest) Is Nothing Then Exit SubIf Target.Cells.Count > 1 Then Exit SubIf Target = "" Then Exit SubApplication.EnableEvents = FalseRange("A" & Target.Row) = DateApplication.EnableEvents = TrueEnd Sub

Att

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde,

 

Infelizmente não deu certo, para funcionar desta forma, eu teria que mudar manualmente, ai sim funcionaria, mas se eu deixar para toda vez que lançar a venda a mesma vara para o relatorio, ele não reconhece a mudança..

 

Agradeço muito sua ajuda! se voce conseguir algo por favor me avisa amigo!! 

 

Mais uma vez, muito obrigado por tentar me ajudar!! Qualquer novidade me avisa. 

 

Atte,
Marcus

 

Ps.

 

Private Sub Worksheet_Change(ByVal Target As Range)

 
Dim rInterest As Range
Set rInterest = Range("C2:C" & Rows.Count - 1)
 
If Intersect(Target, rInterest) Is Nothing Then Exit Sub
If Target.Cells.Count > 1 Then Exit Sub
If Target = "" Then Exit Sub
 
Application.EnableEvents = False
Range("A" & Target.Row) = Date
Application.EnableEvents = True
 
End Sub
 

 

Na parte do C2:C seria B2:B mesmo, pois é na coluna B mesmo que teria que ocorrer a alteração e lançar a data..

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde!!

 

Uma pergunta, na usa coluna B, você tem formulas ou valores que são digitados na coluna B?

 

Att


Boa tarde!!

 

Vamos considerar que você, tem na coluna B, formulas.

 

Então cada célula da coluna B após ser calculada, a coluna A receberá da data.

 

Então tente.

Private Sub Worksheet_Calculate()Dim c As RangeDim lastRow As LonglastRow = ActiveSheet.Range("B" & Rows.Count).End(xlUp).Row        For Each c In Range("B2:B200")            If c.Value <> 0 Then                Range("A2:A" & lastRow).Value = Date            End If        Next cEnd Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora deu certo zinhovba!

 

Porém ele está colocando a data na coluna toda do A.. não só na linha em que o dado é inserido, mas creio que ja está mais fácil de ser resolvido, vou tentar ver aqui!! Qualquer novidade me avisa meu amigo!

Muito obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde!!

Acontece que se na coluna B, tem formulas de B2 até 1000 então a linha abaixo contará até onde tem formula

lastRow = ActiveSheet.Range("B" & Rows.Count).End(xlUp).Row

Mude essa linha para uma coluna que fique de acordo com o uso que precisa, vamos supor que na coluna C você sempre digitará um dado em baixo do outro, ou seja só na linha em que o dado é inserido, então mude a coluna "B" para a coluna que deseja.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então não tem como fazer isso em celulas com formula? Pois no caso, a coluna B, teria que ter a formula para pegar o produto que seria vendido. Eu fiz um teste e deixei só a primeira linha com formula e ainda sim continuou colocando a data, ai percebi que vai só até A200, creio que o motivo seja esta linha.

For Each c In Range("B2:B200")

O que acha?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Será que tem como criar um script que quando o valor da celula for diferente de nulo, ele ativa o script dando um CTRL + ; na celula que seria a data?

Compartilhar este post


Link para o post
Compartilhar em outros sites

@blp182

 

Tentando ajudar:

 

1. a entrada de dados via teclado será em qual célula, de qual coluna, e de qual planilha?

 

2. após a entrada de dados do item anterior você quer que o código faça o quê, em qual célula, de qual coluna e de qual planilha?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Osvaldo!

Seguinte, na planilha Vendas, será inserido o código de barras do produto e puxará automaticamente o nome do produto, ai na tabela relatório de vendas puxará o nome do produto na coluna B e ai eu gostaria que puxasse a data estática assim que fosse efetuada a venda.. Posso lhe enviar a planilha atualizada daqui a pouco para ver se te ajuda!

Muito obrigado Osvaldo

Ps, a data seria puxada na coluna A da planilha relatório de vendas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja se entendi corretamente.
Instale o código abaixo no módulo da planilha "Vendas".
Remova o código existente no módulo da planilha "Relatorio de Vendas" (arquivo do post #5).

Funcionamento:
Ao inserir um código de produto na coluna "A" da planilha "Vendas" o código abaixo lançará na primeira linha vazia da planilha "Relatorio de Vendas" a data atual e o nome do produto, respecivamente nas colunas "A" e "B".
 

Private Sub Worksheet_Change(ByVal Target As Range)  Dim LR As Long    If Target.Count > 1 Then Exit Sub    If Target.Column > 1 Then Exit Sub      With Sheets("Relatorio de Vendas")        LR = .Cells(Rows.Count, 1).End(xlUp).Row        .Cells(LR + 1, 1) = Date: .Cells(LR + 1, 2) = Cells(Target.Row, 4)      End WithEnd Sub


Sugestão - (não tem a ver com a questão acima) na planilha "Vendas", a partir da coluna "D" para a direita, em lugar de utilizar fórmulas com a função "SE", utilize a função "PROCV". Algumas fórmulas estão com 17 vezes a função "SE" (?).
Assim, nos casos de inclusão de produto, alteração no código ou na descrição do produto, você vai passar horas atualizando as fórmulas com "SE" ao passo que, nesses casos, você não precisará mexer nas fórmulas com "PROCV".

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perfeito, deu certinho!

 

Muito obrigado Osvaldo!

 

Como funcionaria com o PROCV Osvaldo, você poderia me ajudar com isso tambem? Não sei como trabalhar com PROCV

 

Só mais uma coisa se não for pedir muito, para eu fazer puxar da linha D até a M no caso eu teria que alterar esta linha né:

.Cells(LR + 1, 1) = Date: .Cells(LR + 1, 2) = Cells(Target.Row, 4)

Novamente meu amigo, muito obrigado, você me ajudou muito mesmo!


A planilha está deste jeito

 

http://www.4shared.com/file/yPHo7Puxce/yerbalaife__1_.html

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só mais uma coisa se não for pedir muito, para eu fazer puxar da linha D até a M no caso eu teria que alterar esta linha né:

.Cells(LR + 1, 1) = Date: .Cells(LR + 1, 2) = Cells(Target.Row, 4)

 

Exatamente, substitua pela linha abaixo

.Cells(LR + 1, 1) = Date: .Cells(LR + 1, 2).Resize(, 10).Value = Cells(Target.Row, 4).Resize(, 10).Value

Quanto ao PROCV o Mestre Adalberto já colocou as fórmulas pra você, aproveitando as tabelas da planilha "Controle

Estoque".

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perfeito meu amigo!! Vocês estão me ajudando muito!!!

 

Muito obrigado @Patropi


Deu certo @osvaldomp!!

 

Porém ele copia na celula equivalente a da tabela vendas.. Por exemplo, se eu vendo um produto da tabela M ele copia pra celula K do relatorio de vendas.. Mas a data continua certo!! 

 

Teria como eu deixar aparecendo o produto sempre na celula B do relatorio de vendas? Tentei a seguinte Formula:

.Cells(LR + 1, 1) = Date: .Cells(LR + 1, 2) = Cells(Target.Row, 4).Resize(, 10).Value

Mas não deu certo, pois ai não aparece valor nenhum em nenhuma celula..

 

Mas agradeço muito sua ajuda!! Na verdade de todos vocês!! Estão me salvando

 

Se puder me ajudar só com esse probleminha mais, ficarei muito grato!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porém ele copia na celula equivalente a da tabela vendas.. Por exemplo, se eu vendo um produto da tabela M ele copia pra celula K do relatorio de vendas.. Mas a data continua certo!! 

 

Teria como eu deixar aparecendo o produto sempre na celula B do relatorio de vendas? Tentei a seguinte Formula:

 

Como você não respondeu com precisão a todas as dúvidas que coloquei no post #5 eu escrevi o código para atender as poucas informações que você passou. É necessário que você descreva com exatidão o que quer, se não o fizer vamos ficar atirando no escuro...

Por exemplo, na planilha "Relatório de Vendas", que é destino dos dados, na coluna "B" o título da coluna é "Produtos", porém na planilha "Vendas", origem dos dados não existe coluna "Produtos" (?). Então você precisa dizer o quê vai onde. Ou seja cada dado da origem onde será colocado no destino. De forma precisa. Disponibilize exemplos, se necessário para esclarecer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendo, falha minha,

 

O que eu gostaria era que ele pegasse os dados da tabela Venda como esta pegando, porém quando fosse para a tabela Relatorio de vendas, ele mandasse tudo somente para a coluna B, independente da coluna que ele é inserido na planilha Venda, por exemplo:

 

Coloco um Codigo de Barras como se fosse lançar a venda, por exemplo o 8477 que seria na coluna D que é de Shake da tabela de vendas e o produto é "Shakeira". Gostaria que aparecesse a "Shakeira" na coluna B do Relatório de vendas, assim como, se eu colocasse o código 1151BR que é da coluna G que é de Nutrição inteligente, e o produto é "Fiberbond", também aparecesse na coluna B do Relatório de vendas.

 

Deu para entender meu amigo? E desculpe-me pelos transtornos.


@osvaldomp acho que agora vai dar para entender!

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Experimente este:
 

Private Sub Worksheet_Change(ByVal Target As Range)  Dim LR As Long, prod As Long    If Target.Count > 1 Then Exit Sub    If Target.Column > 1 Then Exit Sub      With Sheets("Relatorio de Vendas")        LR = .Cells(Rows.Count, 1).End(xlUp).Row        prod = Rows(Target.Row).Find("*", LookIn:=xlValues).Column        .Cells(LR + 1, 1) = Date: .Cells(LR + 1, 2) = Cells(Target.Row, prod)      End WithEnd Sub
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Perfeito meu amigo, muito obrigado mesmo!! 

 

Me desculpem os transtornos, rodou perfeitamente agora!

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×