Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Elenco a discesa filtrato

600 views
Skip to first unread message

LucaVa

unread,
Nov 21, 2011, 3:45:15 PM11/21/11
to
Salve,
avrei bisogno di un aiuto.
Nel foglio "Dipendenti" ho in colonna A tutti i nomi e cognomi dei
dipendenti, mentre in colonna D la data di cessazione del rapporto di
lavoro.
Nel foglio "Orari" dovrei creare una cella con un elenco a discesa che
visualizzi tutti i dipendenti del foglio "Dipendenti" che abbiano la
corrispondente cella in colonna D vuota (cioč senza una data di fine
rapporto e quindi attualmente in servizio)
E' possibile avere l'elenco senza celle vuote?
Grazie mille a chi vorrŕ darmi una mano.

Saluti.
Luca


eliano

unread,
Nov 21, 2011, 5:01:48 PM11/21/11
to
On 21 Nov, 21:45, "LucaVa" <lucaval...@tin.it> wrote:
> Salve,
> avrei bisogno di un aiuto.
> Nel foglio "Dipendenti" ho in colonna A tutti i nomi e cognomi dei
> dipendenti, mentre in colonna D la data di cessazione del rapporto di
> lavoro.
> Nel foglio "Orari" dovrei creare una cella con un elenco a discesa che
> visualizzi tutti i dipendenti del foglio "Dipendenti" che abbiano la
> corrispondente cella in colonna D vuota (cioè senza una data di fine
> rapporto e quindi attualmente in servizio)
> E' possibile avere l'elenco senza celle vuote?
> Grazie mille a chi vorrà darmi una mano.
>
> Saluti.
> Luca

Scusa Luca ma vado di fretta.
A B
Dati Data licenz.
topolino 10/12/2005
topolina
pluto
pippo
paperina
paperino 25/04/2008
qui
quo 11/11/2011
qua
archimede

Applica il filtro automatico (Col.A e B)
Filtra per i dati da copiare (Vuote col.B)
Seleziona i dati da copiare
F5 | Speciale | Solo Celle Visibili | OK
Menu | Modifica | Copia
Seleziona la prima cella della destinazione
Menu | Modifica | Incolla

Ciao
Eliano

r

unread,
Nov 21, 2011, 5:42:34 PM11/21/11
to
On 21 Nov, 21:45, "LucaVa" <lucaval...@tin.it> wrote:
> Salve,
> avrei bisogno di un aiuto.
> Nel foglio "Dipendenti" ho in colonna A tutti i nomi e cognomi dei
> dipendenti, mentre in colonna D la data di cessazione del rapporto di
> lavoro.
> Nel foglio "Orari" dovrei creare una cella con un elenco a discesa che
> visualizzi tutti i dipendenti del foglio "Dipendenti" che abbiano la
> corrispondente cella in colonna D vuota (cioè senza una data di fine
> rapporto e quindi attualmente in servizio)
> E' possibile avere l'elenco senza celle vuote?
> Grazie mille a chi vorrà darmi una mano.
>
> Saluti.
> Luca

puoi creare una colonna di appoggio con i soli valori che ti
interessano (ovviamente usando una formula) poi assegni un nome che la
identifichi (quindi dinamico) e alla fine su quel nome fai puntare la
convalida a elenco ...
diciamo che a a1:a1000 hai assegnato il nome rng
per la prima formula direi qualcosa tipo
=indice(rng;piccolo(se(val.vuoto(scarto(rng;;
3));rif.riga(rng));rif.riga(a1)) ... così se i dati partono da a1, se
no bisogna modificare ...
saluti
r

eliano

unread,
Nov 21, 2011, 6:04:47 PM11/21/11
to
On 21 Nov, 21:45, "LucaVa" <lucaval...@tin.it> wrote:
> Salve,
> avrei bisogno di un aiuto.
> N"el foglio "Dipendenti" ho in colonna A tutti i nomi e cognomi dei
> dipendenti, mentre in colonna D la data di cessazione del rapporto di
> lavoro.
> Nel foglio "Orari" dovrei creare una cella con un elenco a discesa che
> visualizzi tutti i dipendenti del foglio "Dipendenti" che abbiano la
> corrispondente cella in colonna D vuota (cioè senza una data di fine
> rapporto e quindi attualmente in servizio)
> E' possibile avere l'elenco senza celle vuote?
> Grazie mille a chi vorrà darmi una mano.
>
> Saluti.
> Luca

Visto che a Roby continua a fare schifo il Vba, una soluzione
artigianale "che non fa mai male").:-))

In un modulo standard, ad esempio Modulo1, in un file di prova copia
la seguente macro:

Public Sub prova()
Dim sh1 As Worksheet, sh2 As Worksheet, R As Long
Dim rng As Range, dip As Object, UR As Long
Set sh1 = ThisWorkbook.Worksheets("Dipendenti")
Set sh2 = ThisWorkbook.Worksheets("Orari")
UR = sh1.Cells(Rows.Count, "A").End(xlUp).Row
Set rng = sh1.Range("A2:A" & UR)
sh2.Range("A1").Value = sh1.Range("A1").Value
R = 2
For Each dip In rng
If dip.Offset(0, 3).Value = "" Then
sh2.Cells(R, 1).Value = dip.Value
R = R + 1
Else
End If
Next
End Sub

Il file è composto da due fogli:
il foglio Dipendenti che contiene a Colonna A i nominativi dei
dipendenti ed in colonna D le date di dimissioni o di licenziamento
il foglio Orari che conterrà a colonna A i nominativi dei dipendenti
in forza alla data.

Facci sapere
Eliano

eliano

unread,
Nov 21, 2011, 6:09:17 PM11/21/11
to
Ciao Roby.
Ho la vaga impressione che se continui con l'efficace sostituzione di
macro con formule e funzioni potremmo prendere in seria considerazione
l'uso di prodotti della concorrenza, con grande gioia di zio Bill &
Company.
Di nuovo complimenti e saluti cordiali a tutti,
Eliano

LucaVa

unread,
Nov 26, 2011, 6:35:29 AM11/26/11
to

"eliano" <falini...@virgilio.it> ha scritto nel messaggio
news:66b5cac5-7ff1-44d2...@a16g2000yqk.googlegroups.com...
On 21 Nov, 21:45, "LucaVa" <lucaval...@tin.it> wrote:
> Salve,
> avrei bisogno di un aiuto.
> N"el foglio "Dipendenti" ho in colonna A tutti i nomi e cognomi dei
> dipendenti, mentre in colonna D la data di cessazione del rapporto di
> lavoro.
> Nel foglio "Orari" dovrei creare una cella con un elenco a discesa che
> visualizzi tutti i dipendenti del foglio "Dipendenti" che abbiano la
> corrispondente cella in colonna D vuota (cioč senza una data di fine
> rapporto e quindi attualmente in servizio)
> E' possibile avere l'elenco senza celle vuote?
> Grazie mille a chi vorrŕ darmi una mano.
>
> Saluti.
> Luca

Visto che a Roby continua a fare schifo il Vba, una soluzione
artigianale "che non fa mai male").:-))

In un modulo standard, ad esempio Modulo1, in un file di prova copia
la seguente macro:

Public Sub prova()
Dim sh1 As Worksheet, sh2 As Worksheet, R As Long
Dim rng As Range, dip As Object, UR As Long
Set sh1 = ThisWorkbook.Worksheets("Dipendenti")
Set sh2 = ThisWorkbook.Worksheets("Orari")
UR = sh1.Cells(Rows.Count, "A").End(xlUp).Row
Set rng = sh1.Range("A2:A" & UR)
sh2.Range("A1").Value = sh1.Range("A1").Value
R = 2
For Each dip In rng
If dip.Offset(0, 3).Value = "" Then
sh2.Cells(R, 1).Value = dip.Value
R = R + 1
Else
End If
Next
End Sub

Il file č composto da due fogli:
il foglio Dipendenti che contiene a Colonna A i nominativi dei
dipendenti ed in colonna D le date di dimissioni o di licenziamento
il foglio Orari che conterrŕ a colonna A i nominativi dei dipendenti
in forza alla data.

Facci sapere
Eliano

Ciao Eliano,
scusa il ritardo, ho avuto grossi problemi.
Ho provato il tuo codice, ma non risponde alle mie esigenze.
Infatti mi crea un elenco e non un elenco a discesa in una cella.

Questa mattina, girando sul NG, ho trovato questo codice postato da Fernando
Cinquegani nel 2004

https://groups.google.com/group/microsoft.public.it.office.excel/browse_thread/thread/a69d3c1c8f482ac5/b5c4e2553cfd347b?hl=it&lnk=gst&q=elenco+discesa+for+each#b5c4e2553cfd347b

Funziona perfettamente e mi crea l'elenco a discesa che volevo io.
Solo che non č stato fatto per filtrare i dati in base alle celle vuote
presenti su un'altra colonna.

Io non saprei proprio come muovermi....
Tu sei capace di adattarlo alle mie esigenze?

Grazie comunque per esserti interessato al mio problema.

Saluti.
Luca




eliano

unread,
Nov 26, 2011, 11:05:54 AM11/26/11
to
On 26 Nov, 12:35, "LucaVa" <lucaval...@tin.it> wrote:
> "eliano" <falinieli...@virgilio.it> ha scritto nel messaggionews:66b5cac5-7ff1-44d2...@a16g2000yqk.googlegroups.com...
> On 21 Nov, 21:45, "LucaVa" <lucaval...@tin.it> wrote:
>
> > Salve,
> > avrei bisogno di un aiuto.
> > N"el foglio "Dipendenti" ho in colonna A tutti i nomi e cognomi dei
> > dipendenti, mentre in colonna D la data di cessazione del rapporto di
> > lavoro.
> > Nel foglio "Orari" dovrei creare una cella con un elenco a discesa che
> > visualizzi tutti i dipendenti del foglio "Dipendenti" che abbiano la
> > corrispondente cella in colonna D vuota (cioè senza una data di fine
> > rapporto e quindi attualmente in servizio)
> > E' possibile avere l'elenco senza celle vuote?
> > Grazie mille a chi vorrà darmi una mano.
>
> > Saluti.
> > Luca
>
> Visto che a Roby continua a fare schifo il Vba, una soluzione
> artigianale "che non fa mai male").:-))
>
> In un modulo standard, ad esempio Modulo1, in un file di prova copia
> la seguente macro:
>
> Public Sub prova()
> Dim sh1 As Worksheet, sh2 As Worksheet, R As Long
> Dim rng As Range, dip As Object, UR As Long
> Set sh1 = ThisWorkbook.Worksheets("Dipendenti")
> Set sh2 = ThisWorkbook.Worksheets("Orari")
> UR = sh1.Cells(Rows.Count, "A").End(xlUp).Row
> Set rng = sh1.Range("A2:A" & UR)
> sh2.Range("A1").Value = sh1.Range("A1").Value
> R = 2
> For Each dip In rng
> If dip.Offset(0, 3).Value = "" Then
> sh2.Cells(R, 1).Value = dip.Value
> R = R + 1
> Else
> End If
> Next
> End Sub
>
> Il file è composto da due fogli:
> il foglio Dipendenti che contiene a Colonna A i nominativi dei
> dipendenti ed in colonna D le date di dimissioni o di licenziamento
> il foglio Orari che conterrà a colonna A i nominativi dei dipendenti
> in forza alla data.
>
> Facci sapere
> Eliano
>
> Ciao Eliano,
> scusa il ritardo, ho avuto grossi problemi.
> Ho provato il tuo codice, ma non risponde alle mie esigenze.
> Infatti mi crea un elenco e non un elenco a discesa in una cella.
>
> Questa mattina, girando sul NG, ho trovato questo codice postato da Fernando
> Cinquegani nel 2004
>
> https://groups.google.com/group/microsoft.public.it.office.excel/brow...
>
> Funziona perfettamente e mi crea l'elenco a discesa che volevo io.
> Solo che non è stato fatto per filtrare i dati in base alle celle vuote
> presenti su un'altra colonna.
>
> Io non saprei proprio come muovermi....
> Tu sei capace di adattarlo alle mie esigenze?
>
> Grazie comunque per esserti interessato al mio problema.
>
> Saluti.
> Luca

Ciao Luca.
Mi dispiace se hai avuto problemi, ma adesso speriamo che si siano
risolti.

Volutamente non ho inserito nella macro l'istruzione per il filtro
automatico, dal momento che, avendo ottenuto una lista "pulita",
potevi attivare se e quando necessario semplicemente così:

Nel Foglio "Orari" che in colonna A contiene la lista dei dipendenti,
seleziona la cella A1, quindi clicca su Dati-->Filtro-->Filtro
Automatico.

Ma nel caso queste operazioni risultassero superiori alle tue
forze :-)) aggiungi alla macro, prima di End Sub questa istruzione:

Sheets("Orari").Range("A1").AutoFilter

Cordialmente
Eliano

LucaVa

unread,
Nov 27, 2011, 4:32:45 AM11/27/11
to

"eliano" <falini...@virgilio.it> ha scritto nel messaggio
news:6f14a5ae-8204-4ed6...@u6g2000vbg.googlegroups.com...
On 26 Nov, 12:35, "LucaVa" <lucaval...@tin.it> wrote:
> "eliano" <falinieli...@virgilio.it> ha scritto nel
messaggionews:66b5cac5-7ff1-44d2...@a16g2000yqk.googlegroups.
com...
> On 21 Nov, 21:45, "LucaVa" <lucaval...@tin.it> wrote:
>
> > Salve,
> > avrei bisogno di un aiuto.
> > N"el foglio "Dipendenti" ho in colonna A tutti i nomi e cognomi dei
> > dipendenti, mentre in colonna D la data di cessazione del rapporto di
> > lavoro.
> > Nel foglio "Orari" dovrei creare una cella con un elenco a discesa che
> > visualizzi tutti i dipendenti del foglio "Dipendenti" che abbiano la
> > corrispondente cella in colonna D vuota (cioč senza una data di fine
> > rapporto e quindi attualmente in servizio)
> > E' possibile avere l'elenco senza celle vuote?
> > Grazie mille a chi vorrŕ darmi una mano.
>
> > Saluti.
> > Luca
>
> Visto che a Roby continua a fare schifo il Vba, una soluzione
> artigianale "che non fa mai male").:-))
>
> In un modulo standard, ad esempio Modulo1, in un file di prova copia
> la seguente macro:
>
> Public Sub prova()
> Dim sh1 As Worksheet, sh2 As Worksheet, R As Long
> Dim rng As Range, dip As Object, UR As Long
> Set sh1 = ThisWorkbook.Worksheets("Dipendenti")
> Set sh2 = ThisWorkbook.Worksheets("Orari")
> UR = sh1.Cells(Rows.Count, "A").End(xlUp).Row
> Set rng = sh1.Range("A2:A" & UR)
> sh2.Range("A1").Value = sh1.Range("A1").Value
> R = 2
> For Each dip In rng
> If dip.Offset(0, 3).Value = "" Then
> sh2.Cells(R, 1).Value = dip.Value
> R = R + 1
> Else
> End If
> Next
> End Sub
>
> Il file č composto da due fogli:
> il foglio Dipendenti che contiene a Colonna A i nominativi dei
> dipendenti ed in colonna D le date di dimissioni o di licenziamento
> il foglio Orari che conterrŕ a colonna A i nominativi dei dipendenti
> in forza alla data.
>
> Facci sapere
> Eliano
>
> Ciao Eliano,
> scusa il ritardo, ho avuto grossi problemi.
> Ho provato il tuo codice, ma non risponde alle mie esigenze.
> Infatti mi crea un elenco e non un elenco a discesa in una cella.
>
> Questa mattina, girando sul NG, ho trovato questo codice postato da
Fernando
> Cinquegani nel 2004
>
> https://groups.google.com/group/microsoft.public.it.office.excel/brow...
>
> Funziona perfettamente e mi crea l'elenco a discesa che volevo io.
> Solo che non č stato fatto per filtrare i dati in base alle celle vuote
> presenti su un'altra colonna.
>
> Io non saprei proprio come muovermi....
> Tu sei capace di adattarlo alle mie esigenze?
>
> Grazie comunque per esserti interessato al mio problema.
>
> Saluti.
> Luca

Ciao Luca.
Mi dispiace se hai avuto problemi, ma adesso speriamo che si siano
risolti.

Volutamente non ho inserito nella macro l'istruzione per il filtro
automatico, dal momento che, avendo ottenuto una lista "pulita",
potevi attivare se e quando necessario semplicemente cosě:

Nel Foglio "Orari" che in colonna A contiene la lista dei dipendenti,
seleziona la cella A1, quindi clicca su Dati-->Filtro-->Filtro
Automatico.

Ma nel caso queste operazioni risultassero superiori alle tue
forze :-)) aggiungi alla macro, prima di End Sub questa istruzione:

Sheets("Orari").Range("A1").AutoFilter

Cordialmente
Eliano


Ok. Funziona.
Grazie mille.
Luca


0 new messages