Condividi:        

Scelta da elenco a discesa che ne apre un altro

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Scelta da elenco a discesa che ne apre un altro

Postdi Ricky0185 » 22/10/24 11:27

Buongiorno, difficile trovare un titolo adeguato alla richiesta.
Nel file allegato cliccando sulla cella azzurra di Foglio2 si apre una elenco a discesa con nomi memorizzati su Foglio1 e cliccando su uno di essi lo stesso viene trascritto in altra zona del foglio, precisamente in colonna B con la data a sinistra.
In corrispondenza del nome inserito vorrei che alla sua destra fosse scritto A SCELTA il contenuto di una delle celle a destra di quella azzurra. Pensavo ad un secondo elenco a discesa che si aprisse alla scelta del nome scelto all’apertura dell’elenco che si apre cliccando sulla cella azzurra, ma proprio non so come fare, riesco solo ad isolare i dati compresi da O500:R500 con la funzione “Filtro”, ma non a renderli selezionabili in coda alla prima scelta. Cioè clicco su uno dei nomi che compaiono nell'elenco che si apre cliccando sulla cella azzurra e mi si apre un elenco dei dati contenuti nelle celle O500:R500. Quindi nella prima cella vuota della colonna B compare il nome scelto (e data odierna alla sinistra) con alla sua destra il dato scelto fra O500 e R500.
Un saluto
R
Ricky0185
Utente Senior
 
Post: 303
Iscritto il: 10/12/19 20:38

Sponsor
 

Re: Scelta da elenco a discesa che ne apre un altro

Postdi Anthony47 » 22/10/24 19:04

Una "cosa" che forse risponde solo parzialmente alla tua domanda e' questa aggiunta alla tua Sub Worksheet_Change che inserisce una Convalida nella colonna M della riga modificata:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$N$500" Then
Application.EnableEvents = False
    Me.Range("B504").End(xlDown).Offset(1, 0).Value = Target.Value
    Range("b504").End(xlDown).Offset(0, -1) = Date
    Range("b504").End(xlDown).Offset(0, 11).Select
    Range("N500").Value = "Dom"
   
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=$O$500:$R$500"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = "Scegli"
        .ErrorTitle = "Noooo!"
        .InputMessage = "Valore da elenco"
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
   
    Application.EnableEvents = True
End If
End Sub

Penso che il blocco aggiunto sia ben visibile
Prova...
Avatar utente
Anthony47
Moderatore
 
Post: 19432
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Scelta da elenco a discesa che ne apre un altro

Postdi Ricky0185 » 23/10/24 06:27

All'inizio non funzionava dopo molteplici prove, poi mentre colazionavo si è accesa la lampadina, il posto dove doveva comparire la scelta
Codice: Seleziona tutto
Range("b504").End(xlDown).Offset(0, 11).Select

era in una colonna nascosta. Spostato ed ecco la nuova convalida funzionante. Grazie.
Spiegami una cosa: nel grossissimo file da cui ho estratto, dopo averlo al 99% pulito e spersonalizzato, quello che ho allegato, solo cliccando sulle cella "convalidata" appare la lista quindi con scelta immediata, su quello ridotto invece appare solo la freccetta e la lista appare solo cliccandoci sopra.
Un'ultima domanda: potresti indicarmi il codice da inserire in una macro che mi spazzoli i dati di una colonna e mi dica quante volte il valore (nome) della cella in cui mi trovo si trova nella colonna.
Ti ringrazio e saluto.
Buona giornata
R
Ricky0185
Utente Senior
 
Post: 303
Iscritto il: 10/12/19 20:38

Re: Scelta da elenco a discesa che ne apre un altro

Postdi Ricky0185 » 23/10/24 06:47

Esempio: ..... if F1 compare nella colonna 0 (o 1 o 2 o 3) volte then....
Ricky0185
Utente Senior
 
Post: 303
Iscritto il: 10/12/19 20:38

Re: Scelta da elenco a discesa che ne apre un altro

Postdi Anthony47 » 23/10/24 11:11

Non sono al pc, ma prova
Codice: Seleziona tutto
If application.worksheetfunction.countif(activecell.entirecolumn,activecell.value)>xx then

Più tardi potrò fare altre prove
Avatar utente
Anthony47
Moderatore
 
Post: 19432
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Scelta da elenco a discesa che ne apre un altro

Postdi Ricky0185 » 23/10/24 12:11

Buongiorno, cancella/dimentica l'ultimo post, non l'ho capito neanch'io.
Ed anche la seconda richiesta a cui prontamente hai risposto e di cui ti chiedo scusa.
Molto velocemente ho provato questo file, frutto di un copia-incolla tra diversi altri, ma è troppo attorcigliato pur raggiungendo l’obbiettivo. Forse Select case ? Ma non ci so fare. Potresti vedere, senza fretta, se si può snellire/abbellire?
Infine vorrei sapere perché la cella “convalidata” sul file originale si apre già a cascata mentre su questo file allegato ridotto si deve cliccare sulla freccetta per vedere la cascata.
Ciao
Ricky0185
Utente Senior
 
Post: 303
Iscritto il: 10/12/19 20:38

Re: Scelta da elenco a discesa che ne apre un altro

Postdi Anthony47 » 23/10/24 22:34

Io il file l'ho scaricato e pure aperto, ma non capisco che cosa dovrebbe fare e quindi che cosa potrei aggiungervi io

Quanto al list del convalida che si apre da solo potrebbe essere dovuto a un codice che, raggiunta la cella, simula un Alt-FrecciaGiù
Come ad esempio fatto aggiungendo la riga SendKeys a quella Worksheet_Change che ti avevo modificato ieri sera e che mi pare non ne hai fatto nulla:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$N$500" Then
Application.EnableEvents = False
    Me.Range("B504").End(xlDown).Offset(1, 0).Value = Target.Value
    Range("b504").End(xlDown).Offset(0, -1) = Date
    Range("b504").End(xlDown).Offset(0, 11).Select
    Range("N500").Value = "Dom"
   
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=$O$500:$R$500"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = "Scegli"
        .ErrorTitle = "Noooo!"
        .InputMessage = "Valore da elenco"
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With
    SendKeys "%{down}"

    Application.EnableEvents = True
End If
End Sub
Avatar utente
Anthony47
Moderatore
 
Post: 19432
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Scelta da elenco a discesa che ne apre un altro

Postdi Ricky0185 » 24/10/24 00:16

Non è che non ne ho fatto niente, l'ho applicata ed il file l'ho salvato nella dir "macro" per applicarla in altre occasioni, naturalmente dopo aver trovato la mia soluzione.. La tua raggiunge l'obbiettivo che avevo chiesto, ma ho continuato a scavare finchè effettivamente con un solo clic sulla cella validata veniva riportato in altra zona del foglio nome e valore accanto, che con la tua soluzione si raggiunge con due passaggi. Anche se con molti antiestetici "if". Si tratta del mio secondo lavoro e più precisamente della registrazione pagamenti rate: quando arriva il pagamento clicco sula cella validata, scelgo il nome e la macro lo scrive in fondo alla colonna Entrate e dopo aver spazzolato la colonna con anche i nomi, se non ne trova, accanto al nome scrive Pgamento prima rata etc. etc., se ne trova uno scrive Pagamento seconda etc. etc. e così via. Risparmio una decina di secondi nel non scrivere Pagamento etc. etc. a mano. Utile neee.
Alla prossima. Buona notte
R
Ricky0185
Utente Senior
 
Post: 303
Iscritto il: 10/12/19 20:38

Re: Scelta da elenco a discesa che ne apre un altro

Postdi Anthony47 » 24/10/24 11:46

Il riferimento "a quella Worksheet_Change che ti avevo modificato ieri sera e che mi pare non ne hai fatto nulla" era per dirti da dove partire per vedere la lista di convalida che si apre a sola.

Rileggendo i tuoi messaggi penso anche di aver capito che suggerimento stavi cercando...

Che penso siano condensate in QUESTA istruzione messa alla fine del tuo loop:
Codice: Seleziona tutto
         Wend
      Next Cell
'   ActiveCell = Count
Done:
ActiveCell.Value = Range("N500").Offset(0, Count).Value     '<<< QUESTA

End Sub

QUESTA sostituisce i tuoi If /then

Ho lasciato il tuo loop For Each Cell In Range("B500:B600") /Next Cell (invece di condensarlo in 1 CountIf come avevo suggerito io) perchè sembra di capire che la cella possa non essere "uguale" al nome ma puo' anche solo "includere" il nome, anche piu' volte e allora bisogna contarle piu' volte.
Avatar utente
Anthony47
Moderatore
 
Post: 19432
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Scelta da elenco a discesa che ne apre un altro

Postdi Ricky0185 » 24/10/24 13:34

Questo si che è imparare: 12 righe di if messe in soffitta da un'istruzioncina di 50 caratteri.
Inizialmente anch'io avevo usato il Conta.Se, ma poi mi dava risultati impossibili.
Sempre un grandissimo GRAZIE.
Ciao
R
Ricky0185
Utente Senior
 
Post: 303
Iscritto il: 10/12/19 20:38

Re: Scelta da elenco a discesa che ne apre un altro

Postdi Ricky0185 » 26/10/24 12:05

Il Diavolo fa le pentole ma ......
Dopo che abbiamo (che hai) fatto un capolavoro, gli acconti o i saldi come li inserisco?
Elementare Watson.....torni alla prima soluzione (doppia convalida) allungando la lista delle scelte.
O c'è un'altra soluzione? A te l'ardua risposta.
Ciao e buon WE.
R
Ricky0185
Utente Senior
 
Post: 303
Iscritto il: 10/12/19 20:38

Re: Scelta da elenco a discesa che ne apre un altro

Postdi Anthony47 » 26/10/24 14:55

E io che ne so dove sono "i saldi"?? Un piccolo indizio, ad esempio anche solo una immagine dei tuoi dati?
Avatar utente
Anthony47
Moderatore
 
Post: 19432
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Scelta da elenco a discesa che ne apre un altro

Postdi Ricky0185 » 26/10/24 18:59

Lascia perdere Anthony, va più che bene applicare la tua prima soluzione (seconda convalida) naturalmente integrando la lista con "Acconto" e "Saldo", ambedue per le 4 rate. In totale la cascata sarà di 12 voci. Quando intravedo una ipotetica via per risolvere il quesito, allora torno a romperti.
Ciao
R
Ricky0185
Utente Senior
 
Post: 303
Iscritto il: 10/12/19 20:38


Torna a Applicazioni Office Windows


Topic correlati a "Scelta da elenco a discesa che ne apre un altro":


Chi c’è in linea

Visitano il forum: Nessuno e 17 ospiti