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

[Excel 2007]-contenuto alfanumerico nella cella Opzioni
aetio
Inviato: Thursday, January 30, 2014 6:51:49 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
questa macro

Dim col As Integer
Dim Pr As Integer
Dim Tab2 As Integer
Sub confronta_Tabelle2()
'-------edita la pagina TabPivot filtrando i dati di tabella2 (H:AG)
'-------e di Freq. (Col.AH)
'-------Nasconde già i Subtotali
With Sheets("TabPivot")
.Cells.Clear
End With
Intab2 = 8
Ftab2 = 20
Pr = 1
For Tab2 = 1 To 2
Range("AK2:BH" & Rows.Count).ClearContents
Uriga = Range("H" & Rows.Count).End(xlUp).Row
riga = 2
col = 37
n = 34
For A = Intab2 To Ftab2
For i = 3 To Uriga
Cells(riga, col).Value = Cells(i, n).Value
Cells(riga, col + 1) = n
Cells(riga, col + 2) = A
Cells(riga, col + 3) = Cells(i, A).Value
ctrl = True
If ctrl Then
riga = riga + 1
Else
riga = riga
End If
ctrl = False
Next i
Next A
A = 33
Call CreaPivot2
Pr = Pr + 1
Sheets("foglio2").Select
col = col
riga = 2
Intab2 = 21
Ftab2 = 33
Next Tab2
End Sub

a cui è associata ques'altra

Sub CreaPivot2()
'macro abbinata alla "confronta_Tabelle2"
Select Case Tab2
Case 1
colp = 3
Rtab = Sheets("TabPivot").Cells(Rows.Count, colp).End(xlUp).Row + 3
Case 2
colp = 22
Rtab = Sheets("TabPivot").Cells(Rows.Count, colp).End(xlUp).Row + 3
End Select
Set rng = Cells(1, col).CurrentRegion
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
rng.Address).CreatePivotTable TableDestination:=Sheets("TabPivot").Cells( _
Rtab, colp), TableName:="Tabella_pivot" & Pr
Sheets("TabPivot").Select
ActiveSheet.PivotTables("Tabella_pivot" & Pr).SmallGrid = False
With ActiveSheet.PivotTables("Tabella_pivot" & Pr).PivotFields("Numero")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("Tabella_pivot" & Pr).PivotFields("Compon.")
.Orientation = xlRowField
.Position = 2
End With
With ActiveSheet.PivotTables("Tabella_pivot" & Pr).PivotFields("Numero")
.Orientation = xlDataField
.Position = 1
End With
With ActiveSheet.PivotTables("Tabella_pivot" & Pr).PivotFields("Somma di Numero")
.Function = xlCount
.Caption = "conteggio di numero"
End With
With ActiveSheet.PivotTables("Tabella_pivot" & Pr).PivotFields("Tab2")
.Orientation = xlColumnField
.Position = 1
End With
With ActiveSheet.PivotTables("Tabella_pivot" & Pr).PivotFields("Tab1")
.Orientation = xlColumnField
.Position = 1
End With
ActiveSheet.PivotTables("Tabella_pivot" & Pr).ColumnGrand = False
ActiveSheet.PivotTables("Tabella_pivot" & Pr).RowGrand = False

ActiveSheet.PivotTables("Tabella_pivot" & Pr).PivotFields("Numero").Subtotals = _
Array(False, False, False, False, False, False, False, False, False, False, False, False)
Set rng = Nothing
End Sub

esegue egregiamente il suo enorme lavoro.
Ora, ho una serie di tabelle in cui nelle celle della col.AH anziché un numero (es.9) c'è scritto un codice alfanumerico (es.9G)
[è l'unica variazione rispetto alle tabelle in cui le macro funzionano alla perfezione]
Eseguendo le macro viene restituito un
Errore di run-time '1004'
Impossibile trovare la proprietà PivotFields per la classe PivotTable.


Nel modulo VBa della Sub CreaPivot2
la riga che sopra è scritta in rosso viene evidenziata in giallo.

Come posso istruire la macro affinché possa lavorare col codice alfanumerico (es.9G)?

Grazie assai, buona serata
eZio


.
Sponsor
Inviato: Thursday, January 30, 2014 6:51:49 PM

 
a10n11
Inviato: Thursday, January 30, 2014 6:58:33 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
edit..
a memoria ,si fanno solo confusioni.
l'errore fa riferimento alla generazione stessa della tabella. quindi l'errore è da tutt'altra parte.
saluti
Giap

aetio
Inviato: Friday, January 31, 2014 12:04:33 AM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
a10n11 ha scritto:

edit..
a memoria ,si fanno solo confusioni.
l'errore fa riferimento alla generazione stessa della tabella. quindi l'errore è da tutt'altra parte.


ah!... allora devo scovare dove si nasconde quel subdolo guastafeste.
Grazie assai,
eZio
aetio
Inviato: Friday, January 31, 2014 10:40:36 AM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
so che forse mi merito una bocciatura: in modo assolutamente empirico ho provato a commentare il gruppo di istruzioni
a cui apparteneva la riga evidenziata nell'avviso di errore, precisamente
With ActiveSheet.PivotTables("Tabella_pivot" & Pr).PivotFields("Somma di Numero")
.Function = xlCount
.Caption = "conteggio di numero"
End With

della sub CreaPivot2
col risultato che ora funziona tutto fino al termine senza restituire errori.
Ho quindi fatto un pò di prove random, col risultato che i dati della TabPivot confrontati con le tabelle a cui si riferiscono sono tutti esatti e collimano alla perfezione.
A questo punto però mi chiedo: cosa ho escluso dal lavoro della macro? Credo le righe dei "totali" della TabPivot, che però a me in questa ricerca non interessano, per cui se è solo quello il problema (ed è procedimento ammesso)... non c'è problema. ;-))

Grazie assai, buona giornata
eZio
aetio
Inviato: Sunday, February 02, 2014 5:30:51 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
EDIT.
a10n11 ha scritto:

a memoria ,si fanno solo confusioni.

Hai pienamente ragione...
ho preparato un file Esempio per meglio definire il problema.

Grazie assai, buona serata
eZio



aetio
Inviato: Tuesday, February 04, 2014 10:37:11 AM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
EDIT..

Inserendo manualmente i dati mancanti nelle col.B e U del foglio TabPivot e
facendo eseguire la sub che generava l'errore (evidenziaInTabella4)
il foglio CATASTE si compila regolarmente senza più restituire errore.
Credo quindi in modo assai verosimile che l'errore sia generato proprio da quei dati mancanti
non so però individuare il motivo della mancata compilazione delle col. B e U


Grazie assai (quanta pazienza che hai!!)
eZio
aetio
Inviato: Tuesday, February 04, 2014 3:28:08 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
RI-EDIT (!!)


Finalmente sono riuscito a capire il problema che ho esposto qui sopra... ( :-)) )
l'errore era in questa sub

Sub Per_filtro_tabella_Pivot()
With Sheets("TabPivot")
Uriga = .Range("D" & Rows.Count).End(xlUp).Row
col = 3
col2 = 2
For i = 1 To 2
For n = 6 To Uriga
If IsNumeric(.Cells(n, col)) And .Cells(n, col).Value > 0 Then
.Cells(n, col2).Value = .Cells(n, col)
Else
If .Cells(n, col) = "" And .Cells(n, col + 1) <> "" Then
.Cells(n, col2).Value = .Cells(n - 1, col2)
End If
End If
Next n
col = 22
col2 = 21
Next i
End With
End Sub

che, siccome siamo di fronte ad un valore di tipo NumeroLettera (es.3G), la riga scritta in rosso andava modificata così:

If Not IsNumeric(.Cells(n, col)) And .Cells(n, col).Value > 0 Then

Quindi questo problema nel problema è risolto. [Halleluya!!]

Resta comunque da comprendere il motivo per cui devo commentare quelle righe per far funzionare le macro (abbinate) confronta_Tabelle2 e CreaPivot2. L'unica differenza che c'è fra queste tabelle e quelle in cui si esegue perfettamente la macro CreaPivot2 "standard" (quella senza le righe commentate, nelle tabelle di soli numeri) è che la col. AH anziché essere un numero è espressa con un valore alfanumerico.
Forse può essere utile questo dettaglio: la tabella compilata in foglio2 (col.AH:AN), nel momento della restituzione dell'errore, è arrivata esattamente all'ultima cella della tabella di sinistra compilata in foglio TabPivot (col.20 di foglio2).quindi c'è qualche ostacolo "tecnico" che impedisce di compilare anche la tabella di destra (col.21:33 di foglio2).
Dato che con quelle righe commentate la macro restituisce tabelle con i dati che mi interessano esatti, non so se in tal modo innesco altri problemi. In ogni caso se hai inserito quelle righe nella macro ci sarà stato un validissimo motivo (che a me sfugge).

(Nota: nel foglio TabPivot dell'esempio la tabella di destra è più alta di quella di sinistra: è solo dovuto al fatto che le tabelle di origine dell'esempio (quelle di Foglio 2) non contengono tutti i codici. In realtà la tabella di des. è sempre alta come qella di sin.)


Grazie assai
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.