| | 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 | |
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 |
| | 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!
|
|
|