ricerca codice in area dinamica
Hai un problema con Excel? 
ricerca codice in area dinamica
di robybarc data: 11/09/2015 11:39:46
Ciao a tutti,
ho un problema con la ricerca di un codice in un'area dinamica ( che non è sempre la stessa ) nella colonna M inizialmente vuota.
Nella colonna M, a partire dalla cella M31 fino a Mxx ( la lunghezza è variabile ) inserisco un codice "S" a fianco dei clienti che devo stampare.
Quando trovo la "S" sovrascrivo una "X" e seleziono i dati alla sua destra, ( stessa riga 50 colonne a destra che copio in un'altro foglio in un'area di stampa ).
Eseguo questo processo per ogni "S" che trova nell'area selezionata.
Ho provato a stilare questo codice ma non riesco a completarlo.
Grazie
Roberto
Sub StampaFatture()
' mi da il numero di "S" contenuti nell'area selezionata
Dim Rng As Range
Dim x As Long
Sheets("FT").Select
Range("M31", Range("M1048567").End(xlUp)).Select
' assegno il nome "AreaS" all'area selezionata che contiene le "S"
ActiveWorkbook.Names.Add Name:="AreaS", RefersTo:=Selection
Set Rng = Range("AreaS")
x = Application.CountA(Rng)
' il messaggio mi dice quante "S" trova
' ma purtroppo se erroneamente inserisco un altro carattere conteggia anche quello
MsgBox x
' se non trova fatture da stampare va alla fine
If x = 0 Then
GoTo FineStampaFatture
End If
For K = 1 To x ' esegue il ciclo di stampa fatture per il totale di "S" trovate
Sheets("FT").Select
' da qui in poi non trovo la formula corretta per selezionare la cella
' che contiene la "S" e procedere
If Cells("AreaS") = "S" Then
ActiveCell.Select
ActiveCell = "X"
ActiveCell.Offset(0, 0).Select
ActiveCell.Resize(1, 50).Select
' da qui in poi copio i dati in un'altra area e proseguo con altre istruzioni
' che non dovrei avere problema a compilare
End If
Next
GoTo FineStampa
FineStampaFatture:
MsgBox "NON HO TROVATO FATTURE DA STAMPARE"
FineStampa:
End Sub |
di totygno71 data: 11/09/2015 12:06:27
Perchè un ciclo?
Non ti basterebbe un semplice filtro sulla colonna M utilizzando come criterio la lettera "S"?
di Albatros54 data: 11/09/2015 12:45:44
Ho apportate alcune modifiche al tuo codice ,il codice gira , provalo.
Albatros54
Sub StampaFatture()
' mi da il numero di "S" contenuti nell'area selezionata
Dim Rng As Range
Dim x As Long
Sheets("FT").Select
Range("M31", Range("M1048567").End(xlUp)).Select
' assegno il nome "AreaS" all'area selezionata che contiene le "S"
ActiveWorkbook.Names.Add Name:="AreaS", RefersTo:=Selection
Set Rng = Range("AreaS")
x = Application.CountIf(Rng, "S") '<<<<==Modificato
' il messaggio mi dice quante "S" trova
' ma purtroppo se erroneamente inserisco un altro carattere conteggia anche quello
MsgBox x
' se non trova fatture da stampare va alla fine
If x = 0 Then
GoTo FineStampaFatture
End If
For K = 1 To x ' esegue il ciclo di stampa fatture per il totale di "S" trovate
Sheets("FT").Select
' da qui in poi non trovo la formula corretta per selezionare la cella
' che contiene la "S" e procedere
For Each cl In Rng '<<<==MODIFICATO
If cl = "s" Then '<<<<==MODIFICATO
cl.Select
ActiveCell = "X"
'ActiveCell.Offset(0, 0).Select
ActiveCell.Resize(1, 50).Select
' da qui in poi copio i dati in un'altra area e proseguo con altre istruzioni
' che non dovrei avere problema a compilare
End If
Next
Next
GoTo FineStampa
FineStampaFatture:
MsgBox "NON HO TROVATO FATTURE DA STAMPARE"
FineStampa:
End Sub
|
di robybarc data: 11/09/2015 13:35:09
Ciao totygno71
purtroppo sono all'inizio della programmazione VBA e il tuo suggerimento non rientra nelle mie conoscenze, sto applicando alcuni criteri di ricerca che già conosco e li adatto alle mie esigenze ( anche se impropri od obsoleti ), magari quando capirò cosa si può fare con un ciclo e applicare un filtro sulla colonna M utilizzando come criterio la lettera "S" metterò in pratica il tuo suggerimento.
Nel frattempo lo salvo nelle istruzioni da approfondire.
Grazie per il supporto
Roberto
di robybarc data: 11/09/2015 13:38:42
Ciao Albatros54,
il tuo codice soddisfa le mie esigenze, studierò le modifiche apportate per imparare la logica del tuo codice e per applicarlo in ricerche simili nel mio programma.
Grazie infinite
Roberto
Vuoi Approfondire?