Notifications
Clear all

Shift de celulas

11 Posts
2 Usuários
0 Reactions
1,726 Visualizações
(@johnsmith)
Posts: 36
Eminent Member
Topic starter
 

Olá, acredito que a solução para minha necessidade seja apenas através de macro, como não conheço programação VBA, gostaria de saber se alguém poderia me ajudar. talvez depois de ter o código, posso tentar adaptar.

a ideia é, para cada valor que eu colocar em A1, B1, C1, por exemplo, ir colocando os valores a partir da coluna E1, como se fosse um histórico do que foi digitado. se depois eu digitar outros valores em A1, B1 e C1, então os valores de E1-F1-G1 serao colocados em H1-I1-J1 e assim por diante.....

tem um exemplo de planilha, caso fique difícil de entender o que eu quero expressar..... http://www.4shared.com/file/dAjGLe-aba/tst-shift.html

agradeço a ajuda desde já.

Grato.

 
Postado : 07/06/2014 12:04 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

johnsmith,

Boa Noite!

Segue seu arquivo após a inserção de códigos de VBA que faz o que você está querendo: Criar um histórico linear do que for digitado na faixa de células A2:C3.
Creio que é assim que você estava pretendendo.

A execução da macro está automática a partir do momento que você digitar a última célula da faixa. Ou seja, sempre que você digitar na célula C3 e teclar ENTER, a macro copia os dados, inicialmente para a faixa E2:G3 e, daí em diante, para as colunas seguintes.

É importante esclarecer que a palavra "hist-1" que é colocada acima de cada conjunto de dados, bem como as seguintes (hist-2, hist-3... hist-n) precisam de um registro na própria planilha para que o mesmo seja lido e colocado o próximo número. Esse número está registrado na célula XFD1048576. Ou seja: na última célula da planilha. Essa coluna (XFD) eu deixei oculta, pois se precisar imprimir a planilha, não ter que imprimir até a última coluna. Se precisar alterar o número dos históricos, basta reexibir a coluna, ir até a célula XFD1048576 e modificar o número que lá está.

Espero ter ajudado e que seja dessa forma.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 07/06/2014 4:11 pm
(@johnsmith)
Posts: 36
Eminent Member
Topic starter
 

Caro Wagner,

É isso mesmo, valeu!!! Obrigado.

Agora, só mais uma dica para eu tentar dar uma adaptada, baseado na ideia. Se eu tiver vários códigos, datas e status para colocar, como posso fazer? Supondo que preciso adicionar código, data e status nas linhas abaixo.

Obrigado novamente.....

 
Postado : 07/06/2014 6:24 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

johnsmith,

Bom Dia!

Peço que vote positivamente no tópico, clicando na mãozinha ao lado da ferramenta Citar no canto superior direito da tela.

Quando à sua segunda demanda, você precisa colocar mais código semelhante ao que já existe no evento Worksheet_Change da Plan1, antes das linhas abaixo:

[code]
    End If
    Application.EnableEvents = True
[/code]

Ou seja, para cada nova linha onde vá existir um novo conjunto de dados, você deve testar para saber qual é a célula atualmente clicada (Target.Value). Veja que o primeiro IF do código que aí está testa se a célula que foi atualizada foi a C3 (If Target.Address = "$C$3" Then). Assim, você precisará inserir outros testes referentes a outras linhas.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 08/06/2014 6:48 am
(@johnsmith)
Posts: 36
Eminent Member
Topic starter
 

olá Wagner,

obrigado pelas informações, mas imagine que eu tenha várias linhas - 100,200,300....a quantidade de IFs e códigos ficariam inviáveis. Pensei que poderia colocar algo do tipo:

enquanto $Cn <> "" faça a regra

como não conheço VBA, minha adaptação seria apenas nas quantidades de células envolvidas e o titulo de cada uma delas.

teria como ajudar nisso? deixando o código mais aberto para uma quantidade livre?

grato novamente.

 
Postado : 08/06/2014 8:07 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Ok. Segue nova versão adaptada para várias linhas.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 08/06/2014 10:07 am
(@johnsmith)
Posts: 36
Eminent Member
Topic starter
 

ola Wagner,

é isso mesmo, valeu....agora, não sei se reparou, quando vc tem 2 ou mais valores em celular na coluna de A até C, e vc altera uma delas, a A - 1 esta sendo copiada junto.

exemplo:

A1: aaa B1: 01/01/2014 C1: st1
A2: bbb B2: 02/01/2014 C2: st2
A3: ccc B3: 03/01/2014 C3: st3

se você alterar a linha A3, as informações de A2 estão sendo copiadas também.

vc programou dessa forma, ou tem como ajustar isso?

Grato.

 
Postado : 08/06/2014 10:29 am
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Ok.

Segue correção.

É que o entendimento por escrito é complexo. Tem que ser assim mesmo para irmos afinando o entendimento.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 08/06/2014 12:58 pm
(@johnsmith)
Posts: 36
Eminent Member
Topic starter
 

olá Wagner,

sera que vc anexou a planilha correta corrigida? parece que continua com o mesmo comportamento, isto é, uma vez alterada uma determinada célula, a célula de cima continua sendo copiada....

grato.

 
Postado : 08/06/2014 1:05 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

É... acho que era a planilha errada.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 08/06/2014 3:48 pm
(@johnsmith)
Posts: 36
Eminent Member
Topic starter
 

Agora, sim, obrigado.....

 
Postado : 08/06/2014 4:12 pm