terça-feira, 15 de outubro de 2013

Como colar dados somente em células visíveis? (Excel) - Atualizado

Este artigo ensina a copiar informações de uma coluna e colar em outra coluna considerando a existência de linhas ocultas ou com filtro.

Imagine a seguinte situação:

Um cliente e/ou uma agência envia para você uma tradução em documento Excel. Este documento contém uma coluna A, em cujas células está armazenado o texto original, e também uma coluna B vazia. Bom, percebe-se que, certamente, o cliente e/ou a agência esperam que você escreva a tradução diretamente na coluna B e, por conseguinte, conclui-se que eles não conhecem uma CAT-Tool ou o seu uso.

Se você é tradutor e usa, ou já usou, uma CAT-Tool sabe do que estou falando: você talvez prefira que o texto venha escrito nas duas colunas – sendo B a cópia de A – e você traduzira a coluna B com uma CAT-Tool.

"Este comando não pode ser usado em seleções múltiplas."



Se você viu a mensagem acima, provavelmente você tentou colar dados nas células visíveis da mesma maneira que você selecionou e copiou: clicando em Página Inicial > Edição > Localizar e Selecionar > Ir Para Especial > Somente células visíveis (Office 2013, 2010, 2007). Não funciona e o jeito é recorrer às macros

Para deixar o documento do jeito que você quer, você espertamente seleciona a coluna A, copia e tenta colar na coluna B e vê que não dá certo, pois existe uma quantidade enorme de linhas ocultas! Curioso, você abre uma linha oculta de descobre que são traduções do próprio cliente e não podem ser alteradas ou apagadas. Insistente, e esperto como sempre, você tenta realizar esse procedimento pelo LibreOffice e acha que dá certo quando, na verdade, não deu, pois percebe que o texto traduzido do cliente foi substituído pelo texto original! "Poxa vida! É um procedimento tão simples! Por que não dá certo?", você pensa e lembra: "Só podia ser a Microsoft!".

O tempo passa e o desespero começa a bater. Finalmente, quase pedindo para sair, você pensa em pedir um novo documento Excel como desejado. E surge uma nova questão: "será que eles vão entender o meu pedido? Com uma macro eu resolveria isso em menos de 1 minuto". Ora! Você tem razão! No meu caso, a macro resolveu a situação em menos de 30 segundos... o problema foi encontrar a macro.

A macro é o que salvará a sua vida (exagero...). Ora, porque sem ela, você demoraria uma eternidade colando manualmente, pois você pode dar o azar de se deparar com centenas ou milhares de linhas ocultas, que podem ou não seguir um padrão! Além disso, neste caso específico, as células/linhas ocultas já estavam preenchidas com a tradução do cliente.



"No Excel: é possível selecionar e copiar informações apenas de células visíveis; mas só é possível colar em células visíveis através de macro."

Em busca da macro perdida

O meu conhecimento em programação é limitado e não consigo escrever códigos bacanas para cada novo problema que aparece. Porém, consigo, ao menos, encontrar uma macro que me sirva e consigo entender – mesmo que mal – o que ela fará quando eu clicar em executar. A dificuldade está mesmo em encontrar a "macro perdida"! E se não encontrar, por que não pedir para alguém mais experiente (nos fóruns de excel) ou mesmo contratar alguém para fazer? Dependendo do caso, pode ser que valha a pena. Para o caso acima, eu a encontrei.

A macro:

Sub Copiar_Celulas_Visiveis()
Set from = Selection
Set too = Application.InputBox("Selecione o intervalo de células de destino", Type:=8)
For Each Cell In from
Cell.Copy
For Each thing In too
If thing.EntireRow.RowHeight > 0 Then
thing.PasteSpecial
Set too = thing.Offset(1).Resize(too.Rows.Count)
Exit For
End If
Next
Next
End Sub

Os arquivos de exemplo

Baixe os arquivos Excel de exemplo aqui e siga o tutorial abaixo:

O tutorial

Abra o arquivo "2. Cores - Linhas com células da coluna B preenchidas estão ocultas.xlsx". Ele já foi traduzido. O objetivo aqui é colar a tradução já feita na coluna B, que é a coluna correta e:

1. Pressione ALT+F11 para abrir a tela do Microsoft Visual Basic


Figura 1

2. Clique em Inserir e depois em Módulo

Figura 2


3. Depois que a nova janela se abrir, cole o código da macro

Figura 3

4. Salve

Figura 4

5. Clique em Sim se aparecer uma tela perguntando "sim" ou "não"

Figura 5

6. Feche a tela do Microsoft Visual Basic

Figura 6

7. Selecione as células da coluna A (origem) que serão copiadas para a coluna B (destino). Em seguida, clique em Localizar e Selecionar e depois em Ir para especial*

Figura 7

8. Selecione Somente células visíveis e depois em OK.

Figura 8


9. Note que o formato da seleção se altera:

Figura 9

10. Clique em Macros, conforme figura 10.

Figura 10

11. Selecione a macro e clique em executar:

Figura 11

12. Uma caixa de diálogo aparece: é a macro sendo executada.

Figura 12

13. Para evitar erros, selecione com o mouse o intervalo de células de destino, o intervalo aparece escrito automaticamente na caixa de texto e pressione OK**

Figura 13

14. Depois de pressionar OK, a caixa de diálogo desaparece e somente as células visíveis selecionadas contendo o texto traduzido são copiadas para as células de destino. As células ocultas permanecem quietas, sem alteração, como deve ser.

Figura 14

15. Como o cliente enviou o arquivo Excel com as linhas ocultas, é normal que o documento lhe seja retornado assim. Você pode exibir as células ocultas, mas faça Ctrl+Z depois de terminar a verificação.

Figura 15

16. Todas as linhas visíveis (lembre-se de fazer Ctrl+Z).

Figura 16

17. A coluna A, que deveria estar em português, está em inglês. Apenas copie e cole o texto de backup por cima***


Figura 17


* Para não ter de corrigir o título, selecione somente as células visíveis que foram traduzidas. Lembre-se de selecionar o mesmo intervalo na coluna B.
** Em situações em que o intervalo seja muito longo, é melhor selecionar a primeira célula do intervalo, usar a barra de rolamento para ir até a última célula do intervalo e selecioná-la com o Shift pressionado.
*** Este passo é necessário se você traduzir a coluna A para depois usar a macro. Também é possível primeiro usar a macro, para preencher as células vazias com o texto a ser traduzido, para então traduzir.


Informações importantes:

A macro foi testada novamente durante a produção do tutorial e funciona.
Se você não sabe bem como usar uma macro, veja aqui e aqui.
Traduzi o nome da macro e o texto da caixa de diálogo e a original pode ser encontrada neste endereço.

========================
DMF = Daniel Mendes Fernandes
www.dmftradutor.com
========================

9 comentários:

  1. Oi, Raýra! Para que eu possa ajudar, preciso do seguinte:
    1) Qual a versão do seu Excel?
    2) Pode descrever que tipo de erro acontece?
    3) Se possível, envie printscreen do erro.

    ResponderExcluir
  2. Olá, Anônimo. Obrigado pelo comentário.
    Para te ajudar, preciso das seguintes informações:
    1) Qual a versão do seu Excel?
    2) Descreva o tipo de erro que acontece?
    3) Se possível, envie printscreen do erro.

    ResponderExcluir
  3. Excel 2007
    Aparece um erro de compilação: Variável não definida

    ResponderExcluir
    Respostas
    1. Oi, Bruno! Obrigado pelo comentário. Você foi o primeiro a me dar uma pista. Vou refazer o processo para ver o que pode estar acontecendo. Abraço!

      Excluir
    2. Bruno, atualizei o artigo e coloquei um tutorial. Caso ainda dê problema, lembre-se de alterar as "configurações da central de confiabilidade" para usar as macros.

      Excluir