Benvenuto Ospite Cerca | Topic Attivi | Utenti | | Log In | Registra

[Excel 2007] Area copy e area Paste di dati filtrati Opzioni
aetio
Inviato: Wednesday, September 15, 2010 5:30:56 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
sto avendo dei problemi con una macro che dovrebbe copiare/incollare dei dati provenienti da una tabella filtrata


Sub filtra_copia1()
Range("C3").Select
Selection.AutoFilter
ActiveSheet.Range("$A$1", Range("$IB$1").End(xlDown)).AutoFilter Field:=3, Criteria1:=Range("C5").Value, _
Operator:=xlAnd
Set area = Range("AI6", Range("IA6").End(xlDown)).SpecialCells(xlCellTypeVisible)
area.Copy Destination:=Sheets("Modulo").Range("b2")
Set area = Nothing
End Sub






i dati da incollare nel foglio Modulo partono da AI6 a IA6 fino a fine tabella filtrata. In questo caso fino alla riga 1632...
La macro invece di scrivere tutto l'intervallo visibile scrive solo fino alla prima riga che trova compilata per intero... e se ne infischia del resto.
ecco alcune foto:

tabella al naturale


tabella filtrata


dati copiati nel foglio modulo




E' evidente che sono un pasticcione!!.......... :)))
Grazie assai, buona serata
eZio

nota:che i Sett. 72'110, 72'107 e 72'103 non abbiano valori nelle loro righe e che il Sett.72'110 NON sia stato copiato E' CORRETTO.
Sponsor
Inviato: Wednesday, September 15, 2010 5:30:56 PM

 
a10n11
Inviato: Wednesday, September 15, 2010 6:40:59 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
il problema è tutto in questa riga:
Set area = Range("AI6", Range("IA6").End(xlDown)).SpecialCells(xlCellTypeVisible)

Infatti con l'istruzione End si estende la selezione dalla cella di partenza fino all'ultima cella occupata.
Nel tuo caso da AI6 a IA62 non ci sono valori quindi l'area definita risulterà AI6:IA62

in questi casi l'uso dell'istruzione End non va bene. Per risolvere il problema, devi intercettare l'ultima riga occupata dalla tabella e definire la tua area.

Immagino che la colonna che rappresenti la lunghezza totale della tabella sia la colonna A

quindi con :
Uriga = Range("A" & Rows.Count).End(xlUp).Row
trovi l'ultima riga della tabella
e con :
Set area = Range("AI6", Range("IA" & Uriga)).SpecialCells(xlCellTypeVisible)
definisci l'area da copiare.

Il tuo codice completo sarà:

Sub filtra_copia1()
Range("C3").Select
Selection.AutoFilter
ActiveSheet.Range("$A$1", Range("$IB$1").End(xlDown)).AutoFilter Field:=3, Criteria1:=Range("C5").Value, _
Operator:=xlAnd
Uriga = Range("A" & Rows.Count).End(xlUp).Row
Set area = Range("AI6", Range("IA" & Uriga)).SpecialCells(xlCellTypeVisible)
area.Copy Destination:=Sheets("Modulo").Range("b2")
Set area = Nothing
End Sub

saluti
Giap

aetio
Inviato: Wednesday, September 15, 2010 7:38:26 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
il problema era proprio quello... non ce l'avrei mai fatta, neanche se ci avessi lavorato sopra tutta notte :)). Ti ringrazio
Buona serata
eZio
Utenti presenti in questo topic
Guest


Salta al Forum
Aggiunta nuovi Topic disabilitata in questo forum.
Risposte disabilitate in questo forum.
Eliminazione tuoi Post disabilitata in questo forum.
Modifica dei tuoi post disabilitata in questo forum.
Creazione Sondaggi disabilitata in questo forum.
Voto ai sondaggi disabilitato in questo forum.

Main Forum RSS : RSS

Aiutamici Theme
Powered by Yet Another Forum.net versione 1.9.1.8 (NET v2.0) - 3/29/2008
Copyright © 2003-2008 Yet Another Forum.net. All rights reserved.