Notifications
Clear all

Salvar Valores da Célula

19 Posts
2 Usuários
0 Reactions
2,834 Visualizações
(@jpherarth)
Posts: 0
New Member
Topic starter
 

Prezados amigos, preciso de uma grande ajuda! Eis a situação:

Tenho uma planilha com várias sheets (+- 100) e em quase todas (não todas) existem valores preenchidos das colunas A até F, com estes nomes: planilhas AAA, BBB, CCC e assim por diante. O que eu gostaria é o seguinte: em outra planilha na mesma pasta , estão células que atualizam os valores de suas células todo segundo com base em um software que tenho. Nesta planilha, existem as linhas com nomes das outras planilhas da pasta de trabalho: por exemplo, AAA na célula A1, BBB em A2, CCC em A3 e por ai vai.

Eu preciso então, de duas coisas! Primeiro uma macro que grave cada valor que a célula atualize,e liste esses valores. Por exemplo: o valor da célula fica mudando de 10 pra 11,50 pra 12 pra 10,80 pra 11,xxx pra xx,xx e por aí vai. Eu precisaria que esses valores fossem "copiados e colados" em forma de lista, do momento que eu abrisse a planilha no dia até as 11h da manhã. Depois, ela pararia de registrar esses valores nesta lista.

Segundo: como é uma lista pra cada planilha, eu preciso que a lista fique na Coluna G de cada planilha correspondente. E que, no dia seguinte, os valores da coluna G fossem apagados, gerando assim uma nova lista que só dura um dia.

Difícil né gente?

Precisamo unir as forças pra resolver isso! O problema é que a maioria desses dados são confidenciais, então não posso simplesmente publicá-la.

Agradeço antecipadamente

 
Postado : 23/01/2015 8:59 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Ao menos poste seu arquivo modelo compactado aqui no fórum!!

Att

 
Postado : 23/01/2015 9:43 am
(@jpherarth)
Posts: 0
New Member
Topic starter
 

http://www.4shared.com/file/QsWx7hEVce/ ... emplo.html

este é um arquivo exemplo

 
Postado : 23/01/2015 10:43 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Eu sinto muito, mas no serviço eu não consigo acessar esses sites de hospedagem de arquivos!

Caso não poder postar aqui, aguarde o pessoal lhe responder!

Att

 
Postado : 23/01/2015 1:42 pm
(@jpherarth)
Posts: 0
New Member
Topic starter
 

Caro Alexandre, como faço pra postar aqui?

 
Postado : 23/01/2015 1:51 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Veja:
viewtopic.php?f=7&t=3841

Att

 
Postado : 23/01/2015 1:53 pm
(@jpherarth)
Posts: 0
New Member
Topic starter
 

Segue

 
Postado : 23/01/2015 1:56 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Veja o anexo, faça os teste e por favor Click na mãozinha!!!!
Mude a linha

If Time >= #11:27:00 AM# Then

Para:

If Time >= #11:00:00 AM# Then

Fontes:
http://www.globaliconnect.com/excel/ind ... Itemid=475
http://www.ozgrid.com/Excel/run-macro-on-time.htm

Att

 
Postado : 27/01/2015 8:29 am
(@jpherarth)
Posts: 0
New Member
Topic starter
 

Prezado Alex, código muito interessante! Mas me diga uma coisa, é possivel, ao invés de copiar as formulas, copiar os valores apenas ?

e como podemos adaptar este código para que evitemos utiliazar o copia e cola, utilizando o .value no lugar? para que fique mais rápido. sao váaarias planilhas

Sub AleVBA_14263()
Dim Names As String
Dim cell
Dim sht As Worksheet
'Application.ScreenUpdating = 0
With ThisWorkbook.Worksheets("Plan1")
For Each cell In .Range("A2", .Range("A2").End(xlDown))
For Each sht In ThisWorkbook.Worksheets
If sht.Name = cell.Value Then
sht.Activate
.Range("B" & cell.Row & ":B" & cell.Row).Copy
sht.Range("G" & sht.Rows.Count).End(xlUp).Offset(1, 0).Select
ActiveSheet.PasteSpecial xlPasteValues
End If
Next sht
Next cell
End With
'Worksheets("Plan1").Activate
'Application.ScreenUpdating = 1
End Sub

 
Postado : 27/01/2015 10:28 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!]

Tente assim..

ActiveSheet.Paste
                    With sht.UsedRange
                        .Value = .Value
                    End With

E por favor Click na mãozinha!!!
Att

 
Postado : 27/01/2015 11:06 am
(@jpherarth)
Posts: 0
New Member
Topic starter
 

Alex, help me! Agora que reparei um detalhe!

Eu não quero que a planilha coloque os valores de segundo em segundo, mas sim, quando os valores forem atualizados. Não necessariamente isso ocorre de segundo em segundo. é possível?

E outra, enquanto a planilha rodar essa macro, ficarei impossibilitado de utilizá-la?

 
Postado : 27/01/2015 12:37 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Fica complicado saber exatamente o você vai fazer, por isso quando postamos a resposta ela é baseado na sua dúvida.

Eu não quero que a planilha coloque os valores de segundo em segundo, mas sim, quando os valores forem atualizados. Não necessariamente isso ocorre de segundo em segundo. é possível?

, você sabe exatamente quando que os dados mudam?
Caso saiba então mude a seguinte linha

dTime = Now + TimeSerial(0, 0, 1)

sintax:....dTime = Now + TimeSerial(Horas, Minutos, Segundo)

E outra, enquanto a planilha rodar essa macro, ficarei impossibilitado de utilizá-la?

Eu não entendi, porque não? tu fez algum teste?

Obs: O código foi feito de uma forma primitiva, tu deverá adaptar à sua necessidade.

Att

 
Postado : 27/01/2015 12:54 pm
(@jpherarth)
Posts: 0
New Member
Topic starter
 

Certo, sua pergunta é bem coerente!

A planilha é alimentada por outro software externo, então os valores mudam a qualquer momento mas não é um intervalo de tempo específico. Logo, os valores só devem ser transmitidos para a coluna que vc montou quando forem alterados. Partindo desse princípio, essa lista nunca teria dois valores iguais um após o outro.

Usando essa mesma planilha como modelo, é possível colocar o mesmo código de forma que ele faça tudo sem alterar as informações na tela, para que eu possa continuar utilizando a planilha neste período que vai rodar a macro? é só usar como está ou tem que adaptar o código?

 
Postado : 27/01/2015 1:07 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

A planilha é alimentada por outro software externo, então os valores mudam a qualquer momento mas não é um intervalo de tempo específico. Logo, os valores só devem ser transmitidos para a coluna que vc montou quando forem alterados. Partindo desse princípio, essa lista nunca teria dois valores iguais um após o outro.

Use o evento Private Sub Worksheet_Change(ByVal Target as Range)
https://msdn.microsoft.com/en-us/librar ... =office.15).aspx
http://www.globaliconnect.com/excel/ind ... Itemid=475
###############

Usando essa mesma planilha como modelo, é possível colocar o mesmo código de forma que ele faça tudo sem alterar as informações na tela, para que eu possa continuar utilizando a planilha neste período que vai rodar a macro? é só usar como está ou tem que adaptar o código?

Use o evento Application. ScreenUpdating = False
http://www.cpearson.com/excel/optimize.htm
http://chandoo.org/wp/2012/03/22/vba-ma ... echniques/

Att

 
Postado : 27/01/2015 1:27 pm
(@jpherarth)
Posts: 0
New Member
Topic starter
 

Cara muito obrigado! Estou me batendo um pouco com os códigos, pode dar uma luz

Muito obrigado! Já está ajudando um monte!

 
Postado : 27/01/2015 1:47 pm
Página 1 / 2