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
========================