Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Menu a tendina condizionato

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

Menu a tendina condizionato

Postdi BG66 » 19/12/20 23:00

Ciao a tutti e Buon Natale anticipato.
Vorrei che il contenuto del menu a tendina delle celle della colonna A (foglio di lavoro "Imp") mi mostrasse solamente gli impianti che nella colonna G del foglio di lavoro "03-07" presentano la parola: SI.

https://www.dropbox.com/scl/fi/evyvnttfghjc668hye14a/Forum_ATS.xls?dl=0&rlkey=k8ksvpow7e9own4vw5xzvt9tp

Grazie in anticipo.
Gene
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 259
Iscritto il: 20/08/16 07:44

Sponsor
 

Re: Menu a tendina condizionato

Postdi Anthony47 » 20/12/20 00:25

Devi crearti un altro elenco che contiene solo i valori che ti interessano; poi usi questo elenco per la convalida.
Ad esempio, in N6 di foglio '03-07':
Codice: Seleziona tutto
=SE.ERRORE(INDICE($C$1:$C$172;PICCOLO(SE($G$6:$G$172="SI";RIF.RIGA($G$6:$G$172);"");RIF.RIGA(A1)));"")

A matrice, quindi Contr-Maiusc-Enter, non il solo Enter
Poi copia verso il basso per quanto pensi che serva; al limite fino a N172

Poi imposta la convalida su questo nuovo elenco

In questo modo pero' immagino che avrai un elenco lunghissimo, con solo un tot di valori compilati in testa. Potresti pertanto creare un "intervallo dinamico" contenente le sole celle compilate.
Per questo, crea (tramite Menu /Formule /Gestione nomi) un nuovo intervallo nominato; chiamalo YConvalida; come "Riferito a" inserisci la formula
Codice: Seleziona tutto
=SCARTO('03-07'!$N$6;0;0;CONTA.SE('03-07'!$G$6:$G$200;"SI");1)

Infine come origine dell'elenco di convalida userai =YConvalida

Buone Feste anche a te
Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17524
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Menu a tendina condizionato

Postdi Marius44 » 20/12/20 00:27

Ciao
Ben ritrovato!

In aggiunta alla soluzione di Anthony (un caro saluto) ti propongo qualcosa con VBA.
Ricordati, comunque, di fare una ricerca in rete, sempre. Ci potevi arrivare anche tu.
Inserisci questo codice nel Modulo di classe del Foglio2("Imp")
Codice: Seleziona tutto
Private Sub Worksheet_Activate()
Dim sh1 As Worksheet, sh2 As Worksheet
Dim ur1 As Long, ur2 As Long, ur3 As Long, i As Long, a As Long
Dim elenco() As String

Set sh1 = Sheets("03-07")
Set sh2 = Sheets("Imp")
ur1 = sh1.Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To ur1
  If sh1.Cells(i, 7) = UCase("si") Then
    a = a + 1
    ReDim Preserve elenco(1 To a)
    elenco(a) = Sheets(1).Cells(i, 3)
  End If
Next i
ur2 = sh1.Cells(Rows.Count, 10).End(xlUp).Row
ur3 = sh2.Cells(Rows.Count, 1).End(xlUp).Row + 1
With sh2
  .Select
  .Cells(ur3, 1).Select
  With Selection.Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:=Join(elenco, ",")
    .IgnoreBlank = True
    .InCellDropdown = True
    .InputTitle = ""
    .ErrorTitle = ""
    .InputMessage = ""
    .ErrorMessage = ""
    .ShowInput = True
    .ShowError = True
  End With
End With
Set sh1 = Nothing
Set sh2 = Nothing
End Sub

Ogni volta che selezioni il foglio1 nella prima riga vuota ti inserisce la convalida dei dati che a fianco hanno SI.
Attento ad una cosa: riporta SOLO il rigo in cui c'è "si", non anche quello sotto.

Fai sapere. Ciao,
Mario
Marius44
Utente Senior
 
Post: 542
Iscritto il: 07/09/15 22:00

Re: Menu a tendina condizionato

Postdi Anthony47 » 20/12/20 00:29

Due proposte in due minuti, credo sia un record...

Buone Feste anche a te, Mario
Avatar utente
Anthony47
Moderatore
 
Post: 17524
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Menu a tendina condizionato

Postdi Marius44 » 20/12/20 00:44

Ciao Anthony
Contraccambio di cuore a te e a Gene ed alle vostre famiglie.
Speriamo che il 2021 sia un poco meglio del precedente.

Ciao,
Mario
Marius44
Utente Senior
 
Post: 542
Iscritto il: 07/09/15 22:00

Re: Menu a tendina condizionato

Postdi BG66 » 20/12/20 11:03

Ciao a tutti.
@Anthony
I tuoi suggerimenti mi hanno stuzzicato e ci ho messo del mio...o quasi!!
Il menu a tendina oltre ad essere condizionato, ora ha la lista che si riduce man mano che seleziono gli impianti :)
https://www.dropbox.com/scl/fi/0x316w61vy180q7i91258/Forum_ATS-Marius.xls?dl=0&rlkey=wrg1yijc7f2j2k2lanm70r5jt

@Marius
Ricordati, comunque, di fare una ricerca in rete, sempre.

Nel tuo CV oltre a mago del VBA dovrai aggiungere anche MASTER googleratore!!
Io non avevo trovato nulla :(
In merito al tuo script:
Per evitare che l'operatore deve fare andata e ritorno sul foglio"Imp" ho provato in coda prima dei
Codice: Seleziona tutto
Set sh1 = Nothing
Set sh2 = Nothing

a farlo fare in automatico inserendo:
Codice: Seleziona tutto
sh1.Range("A1").Select
etc

ma non lavora....

Gene
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 259
Iscritto il: 20/08/16 07:44

Re: Menu a tendina condizionato

Postdi Marius44 » 20/12/20 11:53

Ciao
Ovvio che non può funzionare.
Prova in questo modo:
Nel Modulo del Foglio("03_07") inserisci questo codice
Codice: Seleziona tutto
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("A:A")) Is Nothing Then
  '.... inserisci qui l'intero codice precedente (ovviamente senza SUB ... END SUB)
End If
End Sub

Ogni volta che si seleziona la prima riga vuota del Foglio, viene inserita la CV
Fai sapere. Ciao,
Mario
Marius44
Utente Senior
 
Post: 542
Iscritto il: 07/09/15 22:00

Re: Menu a tendina condizionato

Postdi BG66 » 22/12/20 06:38

Ciao Mario,
ovviamente funziona.

Grazie ancora e alla prossima.
Gene
STAY SAFE
BG66
Excel2010
Avatar utente
BG66
Utente Senior
 
Post: 259
Iscritto il: 20/08/16 07:44


Torna a Applicazioni Office Windows


Topic correlati a "Menu a tendina condizionato":


Chi c’è in linea

Visitano il forum: Nessuno e 15 ospiti