Página 1 de 1
Replace Entre Células
Enviado: 27 Jan 2020 às 11:00
por Saulo
Na planilha anexa, surgiu uma nova demanda e devido a essa necessidade solicito ajuda para agregar a macro já existente, mantendo as atuais funcionalidades consistentes (Com Créditos ao membro Jimmy) a seguinte situação:
Quando houver uma data de reprogramação na célula H11 da planilha “Inserir Pendencia NC”, que seja deletado o campo: “Data Encerramento” na planilha “Registro Pendencia NC” na coluna M.
IMPORTANTE: o replace deve ser do tipo 1:1, ou seja, aplica-se somente ao “Nº Pendência” escolhida na célula H9.
Exemplo: caso o “Nº Pendência” escolhido seja a número 2 então somente a “Data Encerramento” na planilha “Registro Pendencia NC” desta pendencia dever ser deletada mantendo as demais integras.
OBS: A macro em questão encontra-se no botão "ATUALIZAR" na planilha "Inserir Pendencia NC"
Desde já Agradeço
Re: Replace Entre Células
Enviado: 28 Jan 2020 às 08:33
por osvaldomp
Escrevi um novo código pois o seu apresenta várias inconsistências e imperfeições e remendá-lo ficaria ainda pior, então substitua o seu código abaixo
Código: Selecionar todosSub AtualizaPendenciasNCsV1()
Dim WSP As Worksheet
Dim WSIP As Worksheet
Dim WSPLinha As Long, Col
Set WSP = Sheets("Registro Pendencia NC")
Set WSIP = Sheets("Inserir Pendencia NC")
WSPLinha = 7
Do While WSP.Cells(WSPLinha, 1).Value <> ""
If WSP.Cells(WSPLinha, 1).Value = WSIP.Range("H9").Value Then
Salto = 3
For Col = 10 To 15
If Col >= 14 Then Salto = 6
If WSIP.Range("H" & Col).Value <> "" Then WSP.Cells(WSPLinha, Col + Salto).Value = WSIP.Range("H" & Col).Value
Next
If Range("P" & WSPLinha).Value = "Não Eficaz" Then Range("M" & WSPLinha & ":N" & WSPLinha).Value = ""
If Range("N" & WSPLinha).Value <> "" Then Range("M" & WSPLinha).Value = "" '
Exit Do 'Se não houver possibilidade de haver mais linhas com o mesmo N.C., não é necessário seguir o DO/LOOP, logo, pode abortar o DO
End If
WSPLinha = WSPLinha + 1
Loop
WSIP.Range("H9:H15").Value = ""
End Sub
por este
Código: Selecionar todosSub AtualizaPendenciasNCsV2()
Dim nc As Long
nc = Sheets("Registro Pendencia NC").[A:A].Find([H9]).Row
Sheets("Registro Pendencia NC").Cells(nc, 13).Resize(, 4).Value = Application.Transpose([H10].Resize(4).Value)
Sheets("Registro Pendencia NC").Cells(nc, 20).Resize(, 2).Value = Application.Transpose([H14].Resize(2).Value)
[H9:H15] = ""
End Sub
funcionamento - preencha adequadamente o intervalo H9:H15 na planilha
Inserir Pendencia NC e rode o código
obs. verifique, pois me parece que o código que eu sugeri acima torna desnecessário o código existente no módulo da planilha
Registro Pendencia NC ; se for confirmado então exclua aquele código
Re: Replace Entre Células
Enviado: 28 Jan 2020 às 14:47
por Saulo
Prezado osvaldomp 28 Jan 2020 às 09:33
Boa Tarde! Primeiramente muito obrigado por dispor de seu tempo para ajudar-me.
Então...
Concordo plenamente com Você, porem peço se possível, que Você analise o código anterior, pois nele tem uma regra estabelecida quanto ao resultado da verificação oriundo da célula H13 da planilha “Inserir Pendencia NC” e que faz alterações na planilha “Registro Pendencia NC” nos campos: Data Encerramento e Data Reprogramação caso o resultado seja igual a “Não Eficaz”.
Pois bem...
O único ajuste a ser feito no seu código para que possamos utilizá-lo a partir de agora é o seguinte: Caso o resultado da verificação seja igual a “Eficaz”, as datas existentes nas colunas: M, N e O, na planilha "Registro Pendencia NC" devem ser mantidas.
OBS: Anexo planilha já com seu código.
Desde já Agradeço
Re: Replace Entre Células
Enviado: 28 Jan 2020 às 15:22
por osvaldomp
Saulo escreveu:
Caso o resultado da verificação seja igual a “Eficaz”, as datas existentes nas colunas: M, N e O, na planilha "Registro Pendencia NC" devem ser mantidas.
O código não utiliza critérios para limpar ou não limpar células na planilha
Registro Pendencia NC.
Conforme eu observei no post anterior (
funcionamento - preencha adequadamente o intervalo H9:H15 na planilha Inserir Pendencia NC e rode o código), o código irá replicar na planilha destino exatamente como estiverem as células no intervalo H9:H15 na planilha de origem, ou seja, células preenchidas serão replicadas preenchidas e células vazias serão replicadas vazias. Então se você deixar vazias as células H9 e H10 elas serão replicadas vazias em M:N.
Não lhe atende dessa forma ?
Re: Replace Entre Células
Enviado: 29 Jan 2020 às 07:53
por Saulo
Prezado osvaldomp » 28 Jan 2020 às 16:22 Bom dia!
Obrigado por dispor de seu tempo em ajudar-me.
Sua solução está excelente, porém como dito anteriormente é necessário que todas as vezes que for atualizar um
“Nº Pendência” na planilha “Inserir Pendencia NC” e digitar uma “Data Verificação” e “Resultado Verificação” = “Eficaz” , os campos: “Data Encerramento” ou “Data Reprogramação” na planilha “Registro Pendencia NC” devem se manter íntegros.
O objetivo é um módulo de consulta que vou desenvolver, pois temos que analisar quando uma determina Não Conformidade foi concluída e quando foi verificada e por este motivo necessitamos das datas “Data Encerramento” e “Data Verificação” com o respectivo “Resultado Verificação”
Por gentileza faça o seguinte teste (na 1ª planilha anexada que contem o Código anterior): na planilha “Inserir Pendencia NC” escolha na célula “H9” a NC 0002/2019 e depois coloque uma “Data Encerramento” na célula “H10”, após confirmar através do botão “Atualizar” os dados migram para planilha “Registro Pendencia NC”, depois com a mesma NC 0002/2019 coloque uma “Data Verificação” com “Resultado Verificação” = “Não Eficaz”, note que após confirmação a “Data Encerramento” será “brancada” na planilha “Registro Pendencia NC”.
Desculpe os transtornos , e se for possível, peço que avalie a possibilidade de implementar em seu código a regra acima.
OBS: Anexo planilha já com seu 1º código.
Desde já agradeço
Replace Entre Células
Enviado: 29 Jan 2020 às 10:21
por Saulo
Prezado osvaldomp 28 Jan 2020 às 16:22
Muito Obrigado.
Atenciosamente