Encontrar um dado na plan. e acrescentar dados na mesma linha


#1

Olá a todos,
Já faz um tempo que procuro em fóruns uma maneira de resolver meu problema.
É uma planilha de férias, onde:
Coluna A - Nome dos funcionários
Coluna B e C - Período aquisitivo, onde.
EX: B2: 01/01/2016 / C2: =soma (b2+365)
Coluna D – Data Limite para férias/ Ex: =C2+335 (Onde, por obrigatoriedade, é a data limite para dar férias ao funcionário.)
Coluna E – 2ª Férias Vencida: =se (D2<B$3+30; “Vencida”;“Dentro do Prazo”) Retorna o valor na coluna se estiver faltando 30 dias para vencer a segunda férias.
O que eu queria fazer é automatizar o lançamento das férias. Digitar numa célula qualquer o nome do funcionário e executar a macro. E com esse funcionário encontrado executar outra macro para lançar as férias, ou seja, acrescentar 365 dias (1 ano de período aquisitivo) na célula B2, alterando as outras célula que contem fórmula, deixando a planilha sempre atualizada.
Se puderem me ajudar com algum código, nem que seja um esboço, eu consigo otimizá-lo para se encaixar em minha planilha.

Agradeço a atenção.


#2

Olá, @Obhelyskus. Tudo bem?

Se for somente acrescentar 365 à coluna B, basta capturar o valor atual e e somar 365. Por exemplo:

Activesheet.Range("B3").Value = Activesheet.Range("B3").Value +365


#3

Funciona perfeitamente, Xavier, muito obrigado, porém para lançar férias para a célula B4 eu teria que alterar o código também. A ideia é digitar numa célula qualquer o nome do funcionário e colocar um botão de busca, nisso ele encontra o funcionário e se eu lançar as férias (essa linha de código que você passou) elá só ira acrescentar os 365 na linha correspondente desse funcionário que eu busquei na planilha.
Ex: Digito Roberto de Souza em “E1” e vou em buscar (Com um botão já programado) então encontro o funcionário da busca em “A32”, nesse caso eu lanço as férias mas só irá acrescentar os 365 na linha 32, onde estão os dados deste funcionário.
Obrigado


#4

Fala, @Obhelyskus.

Então, aí você vai precisar fazer um laço de repetição para fazer as buscas e usar variáveis para alterar as linhas. Por exemplo:

Funcionario = Activesheet.Range("E1").Value
For i = 3 to Activesheet.Range("A3").End(xlDown).Row
  Activesheet.Range("A" & i).Select
  If Activecell.Value = Funcionario Then
    Activecell.Offset(0,1).Value =  Activecell.Offset(0,1).Value + 365
    Exit Sub
  End If
Next i

#5

Tudo bem, Xavier? Você de novo pra me ajudar ^^
Deu um erro de Compilação em “If Activecell.Value = Funcionario”, creio que seja pela falta de “Then”, se é que era pra ter. Nisso deu o erro "Loop sem Do"
Não sei se é relevante mas estou usando um Botão Controle Activex para fazer a procura/Lançar as férias.
Segue imagem da planilha, apenas encontrando a busca, Ex em E1, e acrescentando 365 em B4, dará certo.
https://imgur.com/29ZLpfQ
Todos os nomes na Coluna A é simplesmente pra teste.


#7

Olá, Obhelyskus.
Fiz uma planilha como você deseja e segue o link abaixo:
https://mega.nz/#!cxtUzDra!8WkBrMU7dxHz2z25SzWMEmmW1qWmi-bmoWk6Ex-X9dg

  • Na data final será inserido +365 e na data limite será (data final + 335).
  • Basta alterar os nomes e a data inicial.
    Tenha um bom proveito.

#8

Tudo bem, Bruno?
Testei aqui e só funciona uma vez,a não ser que você altere a a data de inicio, e alterei as linhas para função soma, “=B6+365” que seria a data final,e “=C6+335” para a data limite. Nisso ela não funcionou também, não lançou a férias.
A planilha que estou tentando otimizar tem mais de 250 linhas. Upei outra imagem que descreve melhor o que pretendo fazer, acho que não expliquei direito antes.
https://imgur.com/CmgCWEE


#9

Olá, você tem skype? seria melhor para te explicar como funciona e você me dizer como quer.


#10

Não uso o Skype :frowning:


#11

Nem um outro meio de comunicação?
Criei outra outro formulário com mais opções.
link > https://mega.nz/#!Q081TTgQ!QgtAnNig_1gCBSu920N7V3EC3PI4C-SJNjCQb5sk-cE
Mantenha o modelo dos dados da “Plan1” substituindo somente seus valores.


#12

Bom dia,
Funcionou perfeitamente, Bruno, um dia espero escrever códigos assim, bem complexos (Pelo menos pra mim).
Obrigado a todos :smiley:


#13

Fala, @Obhelyskus. Beleza?

Realmente. Eu escrevi o código diretamente aqui e cometi 2 errinhos (problema de escrever código fora do editor de VBA). Tem que inserir o “Then” no “If” e trocar a palavra, “Loop” para “Next i”. Fiz a edição no código da minha resposta.


#14

É um prazer poder ajudar! :slight_smile:
Ah, e do lado esquerdo onde tem uma imagem você pode colocar foto do funcionário. Caso queria saber como fazer é só entrar em contato comigo por e-mail: bruno2elias@hotmail.com


#15

Tudo bem, Pessoal?
São 260 funcionários acho que iria pesar um “pouco” a planilha inserindo as fotos, mas ficou bom daquele jeito mesmo, obrigado Bruno e Xavier, não só pela resposta mas pelos códigos que me passaram, gosto de analisar o máximo de código possível pra aprender.
Obrigado e até mais