Notifications
Clear all

Selecionar Informações do autofiltro

17 Posts
3 Usuários
0 Reactions
3,821 Visualizações
(@lucasjau)
Posts: 0
New Member
Topic starter
 

I ae pessoal, blz ...
To montando uma planilha onde na linha 1 (A:S) tem o autofiltro, eu gostaria de selecionar informações que estão na coluna S (19), copiar e colar para outra planilha.
Alguem sabe como selecionar apenas os dados filtrados, ou seja, as células visíveis através de uma macro
Eu usei essa VBA, porem ela não funcionou muito bem, pois ela não selecionava todos os dados, só selecionava as 3 primeiras linhas ...

Sub Macro2()
'
' Macro2 Macro
'

'
ActiveSheet.Range("A:S").AutoFilter Field:=19, Criteria1:= _
"=Aguardando Movimentação", Operator:=xlOr, Criteria2:="=Em Aberto"
Sheets("Extrusão").Visible = True
Sheets("Extrusão").Select
Dim nLinIni As Integer, nLinhas As Long, rng As Range
'Define a linha inicial
nLinhas = 2
While Range("A" & nLinhas).Value <> ""
'Encontra a linha final preenchida
If Range("B" & nLinhas).Value <> "" Then
If rng Is Nothing Then
Set rng = Range("A" & nLinhas, "S" & nLinhas)
Else
Set rng = Union(rng, Range("A" & nLinhas, "S" & nLinhas))
End If
End If
nLinhas = nLinhas + 1
Wend
'Seleciona o intervalo
rng.Select
Selection.Copy
Sheets("Programação").Select
Application.Goto Reference:="R3C1"
Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
, SkipBlanks:=False, Transpose:=False
ActiveSheet.Range("A:S").AutoFilter Field:=19
Range("A3").Select
Application.CutCopyMode = False
ActiveWorkbook.Save
Sheets("Extrusão").Select

End Sub

 
Postado : 09/07/2014 9:39 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Já tentou usar ?

Selection.SpecialCells(xlCellTypeVisible).Select
    Selection.copy

Att

 
Postado : 09/07/2014 10:08 am
(@lucasjau)
Posts: 0
New Member
Topic starter
 

Boa tarde,
intão esse código funcionou, porem ele copia a planilha inteira, até o cabeçalho (linha A1 inteira),
no entanto, a planilha que receberá a cópia já tem o cabeçalho idêntico e tem um limite, tipo da linha 3 até a linha 50 para receber os dados copiados
Preciso encaixar esses dados copiados nesse limite de linhas da utra planilha
Tem algum código pra selecionar só as linhas preenchidas, e não todas as visíveis?

Vlw pelo ajuda!

 
Postado : 10/07/2014 11:11 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Enquanto não uma resposta satisfatória, poderia postar seu arquivo modelo, simulando o antes e depois do que deseja?

Att

 
Postado : 10/07/2014 11:29 am
(@lucasjau)
Posts: 0
New Member
Topic starter
 

Você tem algum email de contato, não estou conseguindo anexar a planilha?

 
Postado : 10/07/2014 11:57 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Você pode depositar seu arquivo modelo, aqui mesmo no fórum desde que seja compactado, ou pode postar em site gratuito como send space e depositar o link aqui.

Att

 
Postado : 10/07/2014 12:05 pm
(@lucasjau)
Posts: 0
New Member
Topic starter
 

<font><font> https://www.sendspace.com/file/1skwei</font></font>

Segue o link do arquivo

Att

 
Postado : 10/07/2014 12:36 pm
(@edcronos)
Posts: 1006
Noble Member
 

cara eu fiz, mas vc tem que ve sua planilha, não tem nada ali para que ela fique desse tamanho
de qualquer forma testa aí

Sub Macro2()
   Dim nLinhas As Long

    Sheets("Extrusão").Range("A:S").AutoFilter Field:=19, Criteria1:="=Aguardando Movimentação", Operator:=xlOr, Criteria2:="=Em Aberto"
    Sheets("Extrusão").Visible = True
 
k = 0
For UL = 1 To 19
nLinhas = Sheets("Extrusão").Cells((Rows.Count), UL).End(xlUp).Row
If nLinhas >= k Then k = nLinhas
Next
Sheets("Extrusão").Range("A" & 2, "S" & nLinhas).Copy

Sheets("Programação").Cells(2, 1).PasteSpecial Paste:=xlPasteValues
ActiveWorkbook.Save
    
End Sub

Até

 
Postado : 10/07/2014 3:58 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Para constar, a planilha está "desse tamanho" devido a aba Programação. Apesar de estar aparentemente limpa, o Excel considera o usedrange até a célula 1 milhão e pouco (Posicione na célula A5 e precione simultaneamente Alt+Ctrl+End; exclua essas linhas e salve o arquivo; deverá ficar com algo em torno de 40kb

 
Postado : 10/07/2014 4:14 pm
(@edcronos)
Posts: 1006
Noble Member
 

mais uma que eu não sabia

mas esse usedrange serve para q
é realmente tão necessário?

 
Postado : 10/07/2014 4:33 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Isso apenas a "Fabriquinha" do Tio Bill (entenda como Microsoft) pode responder.

 
Postado : 10/07/2014 5:07 pm
(@edcronos)
Posts: 1006
Noble Member
 

bem se nem vc que está nisso a pelo menos deste 2009 imagina eu...

Segue uma alteração da macro,
como não entendi oq era explicado só fiz para oq estava especifico na macro
mas é muito facil modificar para outras necessidades.

Att.

 
Postado : 10/07/2014 5:26 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Reinaldo, não seria : Ctrl + Shift + End ?

Eu não gosto muito de usar UsedRange, pelo fato de o excel enxergar celulas vazias como se estivessem preenchidas, isto pode ser explicado mais facilmente da seguinte forma:
1° ) Abra o excel, não digite nada;
2° ) Selecione algumas celulas;
3° ) Selecione formatar celulas e escolha qualquer formato, como não digitamos nada, para nós as celulas estão vazias, mas para o Excel não, elas estão preenchidas com a formatação, agora tecle simultaneamente Ctrl + Shift + End e será selecionada todas as celulas que acabou de formatar, então a grosso modo, é mais ou menos isto o que UsedRange entende.

A mesma coisa acontecerá se em uma coluna a ultima celula preenchida for A10, e selecionarmos ela e apagar o conteudo usando o Delete, ela estará vazia de valor, mas não da formatação, então ainda assim em uma rotina para saber a ultima celula preenchida se utilizarmos UsedRange ele informará a A10.

O ideal é limpar a celula usando "Limpar Tudo", veja que no Menu tem Limpar Conteudo, Limpar Formato e Limpar Tudo.

[]s

 
Postado : 10/07/2014 7:58 pm
(@edcronos)
Posts: 1006
Noble Member
 

Mauro ,
vc falou que não gosta de usar, então isso não é uma coisa automática do excel, ou é?

fui olha a minha planilha e tinha mesmo em áreas que não tem nenhuma informarão ou formatação

mas mesmo com 3 plans recheadas de dados algo como 6000 linha x 140 colunas mais dezenas de formatações condicionais com formulas e mais uma aba de analises fora as macros
isso tudo e apenas tem o tamanho da plan que ele postou 9Mb

o UsedRange pode ter sido causado pelo efeito sanfona da minha planilha que muda de tamanho constantemente ??

não achei "Limpar Tudo"

eu tento controlar o máximo possível o tamanho da minha planilha pq o planejado é ela tabalhar com pelo menos 3x mais dados que irão variar de tamanho e tipo e serão trocadas pelas macros para analises .

tem alguma forma de evitar que o UsedRange extrapole na planilha?

att.

 
Postado : 11/07/2014 7:00 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Mauro,
Realmente é o shift (no meu teclado a tecla com seta para maiúscula).
Lembrando que após o limpar tudo ou exclusão das linhas/colunas desejadas deve-se salvar a planilha para que seja "visualizado essa limpeza". Aparentemente, somente após a operação de salvar, e que é dado o refresh nessa área de memoria do Excel.
Ed,
Pelo pouco que conheço, a maneira e evitar esses espaços e rotineiramente verificar se o espaço utilizado está conforme o visualizado.
No VBA também não gosto de utilizar o UsedRange para definição de a linhas/colunas/range, pois eventualmente poderá trazer essas informações desencontradas

 
Postado : 11/07/2014 7:57 am
Página 1 / 2