Notifications
Clear all

Copiar se a célula estiver amarela

9 Posts
4 Usuários
0 Reactions
2,199 Visualizações
(@jnexcel)
Posts: 0
New Member
Topic starter
 

Prezados, boa tarde!

alguém poderia me ajudar nessa questão abaixo?

eu preciso copiar as informações de uma planilha para outra dentro de uma mesma pasta de trabalho.

Quero copiar apenas as células que estão em amarelo sem alterar a estrutura da planilha.

exsite alguma função SE ou IF em VBA que consegue fazer isso?

segue link da planilha

https://www.sendspace.com/file/wqz77n

muito obrigado a todos.

 
Postado : 30/09/2019 11:19 am
(@mprudencio)
Posts: 0
New Member
 

A pergunta é a seguinte:

Que criterio vc utiliza para pintar a celula de amarelo?

Use esse mesmo criterio no vba.

 
Postado : 30/09/2019 4:41 pm
(@faraha)
Posts: 0
New Member
 

Boa noite JNEXCEL, é estranho chamar alguém assim rsrs

Conforme o colega Prudencio informou talvez seria mais fácil utilizar um critério único para pintar e copiar e colar as células, porém talvez algumas das células seja pintada manualmente.
Então elaborei o seguinte código:

Segue link com download da sua planilha modificada:
https://www.sendspace.com/file/hwbgrc

Segue o código que realiza a tarefa desejada:

Sub teste()
Dim B As Worksheet, G As Worksheet, E As Worksheet
Dim ULg As Integer, ULe As Integer, Z As Integer, Y As Integer, Contar As Integer
Dim CorCriterio As Long

Set B = Sheets("BD")     'na sua planilha exemplo criei uma nova aba chamada "BD"
Set G = Sheets("geral")
Set E = Sheets("errados")

Application.ScreenUpdating = False

CorCriterio = B.Cells(1, 2).Interior.ColorIndex

ULg = G.Cells(Rows.Count, 1).End(xlUp).Row

For x = 2 To ULg
ULe = E.Cells(Rows.Count, 1).End(xlUp).Row
Contar = 0

For Y = 2 To 3
If G.Cells(x, Y).Interior.ColorIndex = CorCriterio Then
Contar = Contar + 1
End If
Next Y

If Contar > 0 Then
G.Range("A" & x & ":C" & x).Select
Selection.Copy
E.Select
E.Range("A" & ULe + 1).Select
ActiveSheet.Paste
Application.CutCopyMode = False
G.Select
End If

Next x

Application.ScreenUpdating = True
End Sub

Segue uma explicação do que fiz:
1 - Vamos dizer que você enjoe de amarelo e apartir da data X você queira mudar a cor que a macro avalia para copiar e colar para azul;
Para isto você teria que mudar o código e não acho isto prático, pois muitas vezes esquecemos o que significa o código que nós mesmo criamos.
Por isto foi criada uma nova aba chamada "BD" na pasta de trabalho e na célula "A2" basta pintar a cor que deseja que a macro realizará a sua ação.
Obs: Não era necessário criar uma nova aba, é mais por questão de estética... :D

2 - Fiz uma variável "Contar" para contar caso a cor desejada apareça na coluna 2 ou 3 da aba "geral", caso ocorra em uma das células é adicionado 1 a "Contar", cujo valor inicial é 0.

3 - E por fim um IF para caso "Contar" seja maior que 0 em alguma linha, então copia e cola esta linha abaixo da última linha preenchida na aba "errados".

Caso tenha dificuldades em adaptar o código a sua rotina é so se manifestar.
Espero ter ajudado!

 
Postado : 30/09/2019 6:08 pm
(@coutinho)
Posts: 0
New Member
 

Farah, as sua ideia e rotna são validas, mas só tem um porem, no exemplo do JNEXCEL ele utiliza a "Formatação Condicional" em todo o Range, então a rotina copia todas as celulas, o idela seria ele preencher manualmente.

[]s

 
Postado : 01/10/2019 7:51 am
(@faraha)
Posts: 0
New Member
 

Obrigado pela colocação Coutinho! Acabei tentando atender a necessidade do colega, porém negligenciei parte das informações.

 
Postado : 01/10/2019 8:39 pm
(@jnexcel)
Posts: 0
New Member
Topic starter
 

Agradeço pela atenção de vocês.

só uma dúvida, no meu caso não teria como resolver, então?

 
Postado : 02/10/2019 6:08 am
(@faraha)
Posts: 0
New Member
 

Bom dia JNEXCEL,

Teria sim, só como está utilizando uma formatação condicional para pintar as células, pelo código VBA que passei não é possível verificar a cor da célula, por ser formatação condicional.

Como o colega Prudêncio sugeriu, a melhor forma seria utilizar a mesma condição que está utilizando para a formatação como instrução para o VBA copiar e colar as células.

Caso não consiga realizar a adaptação na sua rotina enviarei uma explicação mais tarde.

 
Postado : 02/10/2019 6:59 am
(@coutinho)
Posts: 0
New Member
 

Agradeço pela atenção de vocês.
só uma dúvida, no meu caso não teria como resolver, então?

Existem algumas Functions que lidam com Formatação Condicional e acredito que tem como se adaptar, assim que eu tiver um tempinho vou procurar ajustar o seu modelo e envio.

MPrudencio e FarahA, pelo que entendi ele não tem uma rotina que preenche formatando as celulas, acredito que a formatação condicional foi manual mesmo, JNEXCEL me corrija se estiver errado.

[]s

Mauro Coutinho

 
Postado : 02/10/2019 1:01 pm
(@coutinho)
Posts: 0
New Member
 

JNEXCEL, MPrudencio, FarahA, segue o modelo adaptado.

Utilizei a mesma rotina do colega FarahA, ajustando a mesma com as Functions do site abaixo, as Fontes tambem estão mencionadas na Rotina, acredito que da para enxugar um pouco mais, mas fiz meio na pressa aqui no serviço.

JNEXCEL, o principio segue o mesmo explicado no post do FarahA quanto a aba BD e a cor em A1 a qual está com a mesma formatação condicional definida na Aba Geral, não temo como explicar tudo, de uma olhada no site abaixo sobre as functions e na sequencia vamos procurar ir esclarecendo.

Se não quiser usar mais uma aba a (BD) em seu modelo, voce pode definir o numero ad cor diretamente na rotina alterando a seguinte linha :
Essa Linha :
'CorCriterio = GetFillColorIndex(rng)

Por essa
CorCriterio = 6
Vale Lembrar que a definição de cor que usou é do tipo SÓLIDA, por isso que acho a sugestão do colega FaraH valida.

Faça os testes e qq coisa retorne.

Fontes:
http://www.jorgepaulino.com/2011/02/exc ... tacao.html
http://www.jorgepaulino.com/2011/01/exc ... tacao.html

Modelo Copia Celulas Conforme Cor Formatação Condicional
https://www.sendspace.com/file/2h19ys

[]s
Mauro Coutinho
Administrador

 
Postado : 02/10/2019 1:36 pm