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

Elenchi a tendina dinamici in un foglio (doppia convalida) da liste dinamiche separate di un'altro foglio

Ultimo Aggiornamento: 30/07/2016 12:07
Post: 11
Registrato il: 06/07/2016
Città: MILANO
Età: 35
Utente Junior
2010
OFFLINE
16/07/2016 11:24

Salve a tutti,
ho ancora bisogno del vostro aiuto, questa volta inerente agli elenchi a tendina dinamici inseriti in una situazione un po' particolare.
Spero che il titolo sia eloquente.

Come potete vedere nell'allegato, ho una colonna "Settore" in cui inserisco il nome dei settori di lavoro, poi ho cinque colonne di clienti, una per settore.
Di fianco a ogni cliente ho i suoi dati, e questo crea ovviamente distanza tra i cinque gruppi di clienti.
Quello che vorrei è utilizzare questa pagina con questa organizzazione, e poi avere nella pagina "Dati" la colonna B in cui inserisco da un elenco a tendina il nome del settore (e questo elenco io l'ho già fatto, come potete vedere), poi poter selezionare nella colonna C i clienti di quel settore attraverso un altro elenco a tendina (che dovrà dipendere dal settore scelto nella colonna B).
Infine, vorrei che una volta scelto il nome del cliente, nelle tre colonne successive mi apparissero automaticamente i dati del cliente di fianco al suo nome (comune, codice, id).
Con le poche competenze che ho mi fermo davanti al fatto che tutti gli elenchi sono (e devono essere) dinamici, perché ovviamente è impossibile determinare in che numero siano i clienti, potrebbero essere migliaia.
Facendo varie ricerche su internet ho provato la funzione INDIRETTO (che non funziona perché gli elenchi sono tutti dinamici e perché la pagina di elaborazione dei dati è diversa da quella di inserimento), altre formule che però prevedono che gli elenchi di clienti siano tutti affiancati tra loro (ma se gli devo inserire i dati a fianco non possono esserlo), e altre formule e convalide che però non sono abbastanza abile da modifcare per adattarle al mio caso.

Le prerogative del foglio sono:
- Vorrei che la pagina di inserimento dei dati fosse organizzata nel modo in cui l'ho organizzata;
- gli elenchi devono essere dinamici;
- La paginaa di inserimento dei dati e quella di elaborazione devono essere separate.

Capisco che sia una richiesta piuttosto complessa, però spero possiate aiutarmi.

Grazie mille
Post: 528
Registrato il: 06/04/2013
Utente Senior
2010
OFFLINE
16/07/2016 17:59

Ciao
se ti accontenti di una possibile soluzione con vba, ti allego una prova.
Nel foglio elaborazione la convalida del settore è posta fino alla riga 20 ed è quella da te inserita.

Ho assegnato ai range che contengono i nominativi nel foglio dati, i relativi nomi: FALEGNAMERIA, CARPENTERIA ecc..ecc, tutti dinamici.

La convalida in colonna C del foglio Elaborazione viene creata nel momento in cui in col. B scegli il settore.
Fai delle prove.

Probabilmente ci sarà qualcosa di non previsto. L'automazione è basata sull'evento change del foglio.

saluti
[Modificato da dodo47 16/07/2016 18:14]
Domenico
Win 10 - Excel 2016
Post: 11
Registrato il: 06/07/2016
Città: MILANO
Età: 35
Utente Junior
2010
OFFLINE
16/07/2016 22:18

Ti ringrazio molto.
Appena riesco faccio le prove che mi suggerisci.
Come mai dici che ci possono essere degli imprevisti?
Senza vba non si riesce proprio, vero?
Post: 738
Registrato il: 10/10/2013
Città: VICENZA
Età: 69
Utente Senior
365
OFFLINE
17/07/2016 08:19

Ciao
per poter farlo senza macro si può
ti allego il file

ha alcuni problemi

1)se ti limiti a poche colonne viene una formula umana altrimenti viene leggermente lunga ( sempre chè non intervenga un guru che riesca ad intercettare le colonne di ricerca)

2)la convalida con i nomi ti rimane scritta anche se cambi il settore
perciò bisogna ricordarsi o di azzerarla o di cambiare immediatamente il nome.( in teoria si potrebbe usare una macro per azzerare la cella al cambio convalida,ma sempre di macro si tratta)

perciò vedi tu il vba è leggermente più ostico
ma funziona meglio.
Post: 529
Registrato il: 06/04/2013
Utente Senior
2010
OFFLINE
17/07/2016 08:53

Re:
GioCC, 16/07/2016 22.18:

Ti ringrazio molto. Appena riesco faccio le prove che mi suggerisci. Come mai dici che ci possono essere degli imprevisti? Senza vba non si riesce proprio, vero?



Intendevo qualcosa che mi è sfuggito nella programmazione. Il lavoro va testato da te, io naturalmente l'ho fatto.

Formule: si farà pure, ma se la quantità di dati è corposa.....

saluti

Edit:
sostituisci:

ur = Cells(Rows.Count, 2).End(xlUp).Row

con:

ur = Cells.Find(What:="*", After:=[A1], _
    SearchOrder:=xlByRows, _
    SearchDirection:=xlPrevious).Row

[Modificato da dodo47 17/07/2016 10:19]
Domenico
Win 10 - Excel 2016
Post: 114
Registrato il: 11/03/2014
Città: CASTELLETTO SOPRA TICINO
Età: 57
Utente Junior
Excel 2016
OFFLINE
18/07/2016 18:04

Ciao

Ho aggiornato le formule del foglio di Federico che saluto, per semplificare la ricerca, con la possibilità di gestire in maniera più semplificata eventuali aggiunte di altri settori
Saluti
Marco
Post: 12
Registrato il: 06/07/2016
Città: MILANO
Età: 35
Utente Junior
2010
OFFLINE
18/07/2016 19:05

Grazie mille davvero.
Per quanto riguarda il fatto di azzerare la seconda colonna al cambio della prima, riuscite a darmi una macro per farlo?
Post: 744
Registrato il: 10/10/2013
Città: VICENZA
Età: 69
Utente Senior
365
OFFLINE
18/07/2016 19:53

ciao

metti questa sul foglio
elaborazione


Private Sub Worksheet_Change(ByVal Target As Range)
Dim Settore As Range
Set Settore = Range("B5:B10")

If Not Application.Intersect(Settore, Range(Target.Address)) _
Is Nothing Then
ActiveCell.Offset(0, 1).Select
Selection = ""
End If
End Sub



ciao Konki

va benissimo ma devi gestire l'errore
ora per esempio
se cambia il settore la convalida
a fianco risulta vuota
perciò le celle danno #N/D

un bel SE.ERRORE non ci starebbe male [SM=g27827] [SM=g27827] [SM=g27827] [SM=g27827]
Post: 115
Registrato il: 11/03/2014
Città: CASTELLETTO SOPRA TICINO
Età: 57
Utente Junior
Excel 2016
OFFLINE
19/07/2016 09:08

Ciao Federico

condivido, nella fretta non ho inserito la gestione dell'errore, ma ci vuole!  
 
Post: 13
Registrato il: 06/07/2016
Città: MILANO
Età: 35
Utente Junior
2010
OFFLINE
27/07/2016 14:33

Salve a tutti, sto procedendo abbastanza bene.
Ho però un problema con la macro di azzeramento del menu a tendina.

Riepilogo: ho un menu a tendina che dipende da un'altro.

Nella colonna C ho il primo elenco a tendina (dalla cella C5 alla C255), mentre il secondo elenco a tendina è nella colonna E (ovviamente sempre dalla cella E5 alla E255).

In pratica ho bisogno di una macro che quando cancello il valore nella cella C5 mi svuotasse la cella E5, e così via.

Spero possiate aiutarmi. Grazie mille.
Post: 14
Registrato il: 06/07/2016
Città: MILANO
Età: 35
Utente Junior
2010
OFFLINE
29/07/2016 08:21

Nessuno riesce ad aiutarmi?
La macro postata da Federico460 mi cancella le celle in diagonale
Post: 398
Registrato il: 02/08/2015
Utente Senior
Excel 2013
OFFLINE
29/07/2016 23:25

Ciao a tutti,

@GioCC
il codice che ti ha proposto Federico (un saluto) fa il suo dovere nel file allegato prima.
Tu come hai adattato il codice per il tuo foglio?

Da quello che hai scritto, dovresti modificarlo in questo modo:



Private Sub Worksheet_Change(ByVal Target As Range)
Dim Settore As Range
Set Settore = Range("C5:C255")

If Not Application.Intersect(Settore, Range(Target.Address)) _
Is Nothing Then
ActiveCell.Offset(0, 2).Select
Selection = ""
End If
End Sub



se non funziona nemmeno cosi  e non sei in grado di adattare da solo il codice,  allega un file d'esempio che sia strutturalmente uguale al tuo file originale.
[Modificato da cromagno 29/07/2016 23:27]


"Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."
Post: 3.136
Registrato il: 28/06/2011
Città: AGORDO
Età: 70
Utente Master
2013
OFFLINE
30/07/2016 11:12

Ciao a tutti

Forse non ho capito bene
>>>In pratica ho bisogno di una macro che quando cancello il valore nella cella C5 mi svuotasse la cella E5

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C5:C255")) Is Nothing Then
    Application.EnableEvents = False
    Target.Offset(0, 2).Value = ""
    Application.EnableEvents = True
End If
End Sub


Ps. Cambiato qualcosa nel forum, premo code (vb ok, ok) e non mi incolla il codice?
Appena apro il forum la pagina diventa una pubblicità e devo premere la X (oppure è il mio PC)
Excel 2013
Post: 15
Registrato il: 06/07/2016
Città: MILANO
Età: 35
Utente Junior
2010
OFFLINE
30/07/2016 12:07

Grazie mille, questa funziona!
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 13:08. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com