Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Elimina dati nella lista dopo selezione da menu a tendina

Ultimo Aggiornamento: 07/09/2017 19:43
Post: 1
Registrato il: 05/09/2017
Età: 31
Utente Junior
2013
OFFLINE
05/09/2017 23:57

Ciao a tutti,

sono Mauro.

E' stato un piacere venire a conoscenza di questo forum: una vera manna per chi come me non ci capisce molto di excel, avrò l'opportunità di imparare tanto! [SM=x423047]

Vi chiedo subito un consiglio.

Ho una lista di valori univoci all'interno di uno sheet ed ho creato da essa un menu a tendina per alcune celle dello stesso sheet che voglio popolare.
Vorrei che man mano che seleziono una voce del menu a tendina, la stessa voce venisse sottratta alla lista, così da "assottigliarla" sempre più per le scelte successive (i valori con cui popolo le celle vuote non si ripetono mai).

Non so se mi sono spiegato bene, provo anche con un esempio:
La lista (celle D1:D4) contiene quattro elementi: "Cane", "Gatto", "Topo", "Criceto".
Dalla lista, attraverso il Convalida Dati, creo il menu a tendina nelle celle A1:A4.
Se nella cella A1 dalla tendina scelgo "Cane", nella cella A2 le opzioni di scelta dovranno essere solo "Gatto", "Topo" e "Criceto". Scelto "Gatto" per A2, quando seleziono A3 mi dovranno uscire "Topo" e "Criceto". Scelto "Topo" per A3, in A4 mi uscirà solo "Criceto".

Non ho alcun problema, nel caso, a far girare sul foglio una Macro, ad esempio piazzando un pulsante a cui assegnarla e premendolo per avere un "refresh" della lista prima di ogni scelta successiva alla prima.

Grazie in anticipo per il tempo dedicatomi e per il prezioso supporto che sicuramente mi saprete dare.

Saluti e alla prossima!
Post: 3.430
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
ONLINE
06/09/2017 00:30

Ciao Mauro

Per fare quello che chiedi non vedrei altro che il VBA; ho un'idea che domani provo a mettere in pratica.

Una curiosità: ma quando hai esaurito le voci come deve essere ripopolata la convalida?

Alfredo
Post: 3.431
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
ONLINE
06/09/2017 13:02

Ciao Mauro

Ti ho allegato un file dove ho cercato di interpretare la tua richiesta.

Sul foglio1 ti ho messo una casella combinata ed un pulsante (che ripopola la combo)

Se ti posizioni in A1 e nella combo scegli una voce questa sarà inserita nella cella.

Se vai su A2 e riapri la combo vedrai che la voce inserita in A1 non sarà più disponibile.

E cos' via in A3, A4 etc.

Questo il codice abbinato alla combo

vb
Private Sub ComboBox1_Click()
Dim ind As Integer
ind = Worksheets("Foglio1").ComboBox1.ListIndex
ActiveCell.Value = ComboBox1.Value
Worksheets("Foglio1").ComboBox1.RemoveItem (ind)
End Sub


e questo quello relativo al pulsante.

vb
Sub Popola()
Worksheets("Foglio1").ComboBox1.Clear
Worksheets("Foglio1").ComboBox1.AddItem "cane"
Worksheets("Foglio1").ComboBox1.AddItem "gatto"
Worksheets("Foglio1").ComboBox1.AddItem "topo"
Worksheets("Foglio1").ComboBox1.AddItem "criceto"
End Sub



Alfredo
Post: 1
Registrato il: 05/09/2017
Età: 31
Utente Junior
2013
OFFLINE
06/09/2017 14:22

Ciao Alfredo,

innanzitutto un grazie enorme, ho dato un'occhiata al tuo suggerimento e sembra sposare quasi al 100% le mie necessità. [SM=g27836]

Mi chiedevi:
"Una curiosità: ma quando hai esaurito le voci come deve essere ripopolata la convalida?"
Le voci in realtà non si esauriranno, le celle da popolare sono sempre in numero minore rispetto agli elementi a disposizione per la scelta. In ogni caso, mi sta anche bene il tuo bottone "Ripopola" che rimette in gioco tutti gli elementi.

Il problema che ho rilevato è il seguente: mettiamo che ho popolato la cella A1 con "Cane", mi sposto sulla cella A2 e posso scegliere solo tra "Gatto", "Topo" e "Criceto". Proprio come volevo, ma... Se la mia scelta per A2 deve essere "Gatto" e, per sbaglio, seleziono "Topo", nel momento in cui svuoto la A2 per mettere "Gatto" non avrò più la possibilità di selezionare "Topo" per le rimanenti celle A3 e A4 da popolare, a meno di un "Ripopola" che però rimette in gioco tutti gli elementi, compreso "Cane" che non vorrrei più trovare in lista.

Ti torna?

Sarebbe possibile ovviare a questo inconveniente?

Grazie ancora per il preziosissimo supporto.


Post: 3.432
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
ONLINE
06/09/2017 17:32

Ci devo pensare Mauro.

Alfredo
Post: 16
Registrato il: 13/08/2015
Città: COMO
Età: 60
Utente Junior
excel 2016
OFFLINE
07/09/2017 08:52

Ciao a tutti e un saluto a Alfredo,
una soluzione al tuo ultimo quesito potrebbe essere quella di contare i dati sul foglio, se ci sono non li metti più nella tendina, se non ci sono (quindi anche se li togli, li rimetti.
Ho adattato il codice di Alfredo da mettere nel modulo di classe del Foglio1:

Option Explicit
Private Sub ComboBox1_Click()
Dim ind As Integer
ind = Worksheets("Foglio1").ComboBox1.ListIndex
ActiveCell.Value = ComboBox1.Value
Worksheets("Foglio1").ComboBox1.RemoveItem (ind)
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Worksheets("Foglio1").ComboBox1.Clear
If WorksheetFunction.CountIf(Cells, "cane") = 0 Then
Worksheets("Foglio1").ComboBox1.AddItem "cane"
End If
If WorksheetFunction.CountIf(Cells, "gatto") = 0 Then
Worksheets("Foglio1").ComboBox1.AddItem "gatto"
End If
If WorksheetFunction.CountIf(Cells, "topo") = 0 Then
Worksheets("Foglio1").ComboBox1.AddItem "topo"
End If
If WorksheetFunction.CountIf(Cells, "criceto") = 0 Then
Worksheets("Foglio1").ComboBox1.AddItem "criceto"
End If
End Sub
Post: 5.244
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
07/09/2017 09:04

Convalida ad esclusione
Ciao cercando nei miei archivi, penso che questa sia la soluzione, ha bisogno di un elenco completo a cui fare riferimento ed un elenco per alimentare la convalida, non ha bisogno del VBA.

Basta cancellare il nome inserito per averlo di nuovo nella lista.

Ciao By Sal [SM=x423051]

[Modificato da by sal 07/09/2017 09:07]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 2
Registrato il: 05/09/2017
Età: 31
Utente Junior
2013
OFFLINE
07/09/2017 19:43

Re: Convalida ad esclusione
by sal, 07/09/2017 09.04:

Ciao cercando nei miei archivi, penso che questa sia la soluzione, ha bisogno di un elenco completo a cui fare riferimento ed un elenco per alimentare la convalida, non ha bisogno del VBA.

Basta cancellare il nome inserito per averlo di nuovo nella lista.

Ciao By Sal [SM=x423051]




Non ho ancora avuto modo di testare la soluzione proposta da ges64, che intanto ringrazio.

Per una questione di tempo, ho iniziato da quella di by sal, che in effetti si avvicina tanto al mio obiettivo.
Ma c'è ancora una piccola cosa che non va: se volessi estendere le celle da popolare con menu a tendina anche ad alcune colonne adiacenti e non consecutive (nel tuo esempio, oltre alle celle della colonna A vorrei popolare anche quelle in C), come potrei adattare le formule? [SM=x423017]


Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 15:29. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com