Página 1 de 1

Código para localizar e substituir

Enviado: 24 Mai 2022 às 21:58
por LeoHenrique
Olá pessoal !

Existe um código que faça a mesma função do Ctrl + L no excel ? Procurei e não achei nada !
É que no final de um código que tenho, faço manualmente, procuro uma informação específica, e caso localizo, substituo.
Como se fosse o Ctrl + L do excel usando o comando de substituir, caso localizar o conteúdo procurado.

Se alguém souber como montar, desde já agradeço.

Re: Código para localizar e substituir

Enviado: 24 Mai 2022 às 23:28
por osvaldomp
Pesquise sobre a função "Find". ;)

Re: Código para localizar e substituir

Enviado: 25 Mai 2022 às 14:24
por LeoHenrique
Ok, Osvaldo ! Obrigado !!

Pesquisei e adaptei o código abaixo para o que preciso, mas ainda não funcionou... se puder ver o que está errado, agradeço.
Em anexo segue planilha para testar. Obrigado !

Sub FindValue()
Dim c As Range
Dim firstAddress As String
With Worksheets("Atualizado_Sell_Out").Range("AJ7:AJ10000")
Set c = .Find(Sheets("Destaque_Col").Range("J3"), LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Value = Sheets("Destaque_Col").Range("K4")
Set c = .FindNext(c)
Loop While Not c Is Nothing
End If
End With
End Sub

Re: Código para localizar e substituir

Enviado: 25 Mai 2022 às 17:55
por osvaldomp
Olá, @LeoHenrique .

Vou analisar o seu código e em seguida coloco aqui alguma sugestão.

Me parece que você está tentando utilizar uma macro para "inverter" datas do formato mm/dd para dd/mm, é isso?

Lembro de ter lido alguma postagem sua há dias em que você comentou que as datas são alteradas de dd/mm para mm/dd ao importar os dados de outro arquivo.

Os dados são importados manualmente ou via macro ou outra forma?
Você já tentou corrigir para que as datas não sejam invertidas ao importar os dados ?

Re: Código para localizar e substituir

Enviado: 26 Mai 2022 às 09:43
por LeoHenrique
Bom dia Osvaldo !!

Muito obrigado pela ajuda...

Osvaldo = Me parece que você está tentando utilizar uma macro para "inverter" datas do formato mm/dd para dd/mm, é isso?
R: Sim, uso uma macro para isso, inclusive foi você que montou, ficou top !! Em anexo a planilha segue a macro que uso para importar as datas de outra aba. "Replica Datas" é o nome da macro.


Osvaldo = Você já tentou corrigir para que as datas não sejam invertidas ao importar os dados ?
R: Sim... neste fórum há um tempo atrás, mas parece que é um erro do excel... se tiver como corrigir, ficará perfeito, não necessitará de um código para acertar o outro.

Se puder corrigir, ficará melhor ainda, caso não, um código que localize a data que está na aba "Destaque_Col" célula "J3" e alterar para a data que está na mesma aba, célula "K3" e assim sucessivamente.

Obrigado, novamente !

Re: Código para localizar e substituir

Enviado: 27 Mai 2022 às 22:52
por osvaldomp
Olá, @LeoHenrique .
Consegui corrigir no primeiro código, agora ele replica as datas corretamente. Utilize o código abaixo, que já está corrigido, no lugar do anterior.

A origem do problema é que os dados que estão na planilha Nao_Faturados possivelmente são importados de algum outro Sistema e as "datas" que são lançadas na coluna Z são textos que se parecem com datas, não são datas reais.

Aí, o VBA ao ler na célula o texto 03/06/2022, esperto que é, ele entende isso como uma data, e como ele estudou em escolas dos EUA, ele interpreta como mm/dd, ou seja, mar 06. Então ele pergunta para o Windows, como a máquina está configurada para representar 06 mar 2022 e obtém a resposta: coloque 06/03/2022. Por isso é que ele troca 03/06/2022 por 06/03/2022.

Isso só ocorre com as "datas" cujo dia seja de 01 a 12. Por exemplo, se o texto for 17/08/2022, o VBA tenta entender como mm/dd, mas na escolinha lhe ensinaram que o maior número que representa mm é 12, ou seja, não existe mês 17. Então ele conclui que aquilo não é uma data e pra evitar confusão ele foi treinado pra não mexer, por isso que essas "datas" não são alteradas, e ele replica como um texto: 17/08/2022.

Para contornar eu acrescentei ao código os comandos para transformar as colunas Y:Z em datas reais. Veja se agora atende.
#
Código: Selecionar todos
Sub ReplicaDatasV2()
 Dim ref As Range, dat As Range, refAdd As String
  Application.ScreenUpdating = False
  Range("AI7:AI" & Cells(Rows.Count, 2).End(3).Row).Value = ""
  With Sheets("Nao_Faturados")
   If Application.IsText(.[Y2]) Then
    .Columns("Y:Y").TextToColumns , FieldInfo:=Array(1, 4)
   End If
   If Application.IsText(.[Z2]) Then
    .Columns("Z:Z").TextToColumns , FieldInfo:=Array(1, 4)
   End If
  End With
  For Each ref In Range("B7:B" & Cells(Rows.Count, 2).End(3).Row)
   Set dat = Sheets("Nao_Faturados").[G:G].Find(ref.Value)
    If Not dat Is Nothing Then
     refAdd = dat.Address
     Do
      ref.Offset(, 33) = IIf(ref.Offset(, 33).Value = "", _
       dat.Offset(, 19).Value, ref.Offset(, 33).Value & Chr(10) & dat.Offset(, 19).Value)
      Set dat = Sheets("Nao_Faturados").[G:G].FindNext(After:=dat)
     Loop While dat.Address <> refAdd
    End If
  Next ref
End Sub


Re: Código para localizar e substituir

Enviado: 30 Mai 2022 às 17:49
por LeoHenrique
Muito obrigado novamente Osvaldo !!!! Funcionou perfeitamente !!

Agradeço a atenção e a resolução do problema !!

Abraço

Re: Código para localizar e substituir

Enviado: 30 Mai 2022 às 19:34
por Alexandreman10
Muito bom

Re: Código para localizar e substituir

Enviado: 12 Jul 2022 às 11:14
por andrecdan
Olá! Estive lendo a solução para este problema das datas. No meu caso é um formulario que criei como sistema de vendas onde eu salvo sempre a data e hora das vendas, no entanto a data sempre vem em formato mm/dd. Como consigo fazer para que a data saia no formato dd/mm?

Re: Código para localizar e substituir

Enviado: 12 Jul 2022 às 11:38
por osvaldomp
Olá, @andrecdan .

Sugestão: disponibilize uma amostra do seu arquivo Excel. Veja no final das minhas postagens como anexar arquivos aqui no fórum.

Re: Código para localizar e substituir

Enviado: 12 Jul 2022 às 14:40
por andrecdan
O arquivo está muito grande para anexar, ele tem pouco mais de 5MB.

Posso lhe enviar por e-mail?

Re: Código para localizar e substituir

Enviado: 12 Jul 2022 às 14:51
por osvaldomp
osvaldomp escreveu: 12 Jul 2022 às 11:38 Sugestão: disponibilize uma amostra do seu arquivo Excel.
Para verificar um problema de formatação de datas não precisamos de um arquivo com 5MB, por isso eu sugeri uma amostra, ou seja, meia dúzia de linhas com dados na planilha, com o tal formulário que você citou, com todos os códigos envolvidos e com as necessárias explicações do resultado que está obtendo atualmente e o resultado desejado.