Menu a tendina o convalida dati elenco

Versione Completa   Stampa   Cerca   Utenti   Iscriviti     Condividi : FacebookTwitter
mocric
00sabato 9 aprile 2016 19:02
Menu a tendina o convalida dati elenco
Ciao,
avrei bisogno di aiuto: ho creato un menu a tendina, ma vorrei poter visualizzare da questo menu del testo inserito in una tabella specifica (come già fatto) ma quando rilascio il menu e quindi si visualizza la cella (in questa stessa cella) vorrei poter vedere il testo, ma senza gli ultimi 2 caratteri. Provando in una cella diversa con la formula stringa.estrai riesco ad eliminare i caratteri scelti, ma il problema è che non riesco a visualizzarli nella cella...... Capisco che la cosa sembra un tantino contorta e quindi allego il file di esempio composto da 3 fogli:
- Prezziario (foglio con tabella d’origine)
- Normale (foglio compilato d’esempio con convalida dati e prezzi automatici)
- Risultato (foglio con immagine e spiegazione di quello che ho bisogno di ottenere)
Purtroppo non posso fare in altro modo (non posso creare un’altro menu a tendina per la colonna dei prezzi o altro) e quindi il risultato dev’essere come descritto nell’immagine del 3° foglio di excel; so che il risultato è fattibile tramite le formule testuali, ma non so dove le devo posizionare e nemmeno quale..
Spero che possiate aiutarmi
Grazie
GiuseppeMN
00domenica 10 aprile 2016 00:54
Buona sera, Mocric.

Molto probabilmente sbaglio qualche cosa io, ma, nel Tuo allegato la descrizione ottenuta dal Menu Convalida dati è già come la desideri.

Quello a cui posso pensare è che nelle Convalida dati il Campo che desideri venga proposto non sia:
-    Descrizione
ma:
-    DescrVisibile

Voglio dire, il Menu Convalida dati proponga, ad esempio:
-    Escavatore cingolato ql 210 64
e Tu voglia riportare nella Tua Descrizione:
-    Escavatore cingolato ql 210
In questo caso, potremmo risolvere con VBA.
Resterebbe sempre il problema degli importi decimali e gli importi < 10 o >= 100 €; per risolvere questo problema avrei bisogno di una Colonna d'appoggio nel Foglio di lavoro Prezziario nella quale riportare il numero di caratteri da cancellare (per gli importi attualmente proposti, potrebbero essere: 1 , 2, 3, 4)

A margine di quanto sopra, controllorei le "DescrVisibile"; alcune sono incongruenti (vedi Record Trasporto).
Un controllino lo farei anche su "Descrizione".  
Poi, ovviamente, vedi Tu.


A disposizione.

Buon fine settimana.

Giuseppe
mocric
00domenica 10 aprile 2016 08:07
Buonasera Giuseppe,
grazie per avermi risposto
Sono neofita nel mondo excel, nel senso che fino ad ora l'ho usato solo per fare calcoli minimi (non avendolo mai conosciuto come si deve) e a dire il vero mi ha sempre"spaventato" un pò perchè non ho mai capito bene tutte le sue immense formule e nessuno me le ha mai spiegate...... Questa settimana ho voluto capire un pò meglio il suo macchinoso, complesso e svariato utilizzo e mi si è aperto un mondo [SM=x423028] ....Hai ragione nel dire che ci sono un pò di incongruenze e quelle le sistemo (sai com'è: tra una prova e l'altra.....) [SM=x423023]
Comunque hai capito benissimo quando dici:

il Menu Convalida dati proponga, ad esempio:
- Escavatore cingolato ql 210 64
e Tu voglia riportare nella Tua Descrizione:
- Escavatore cingolato ql 210

ma esattamente nella cella del menu a tendina (proprio come vedi nell'immagine inserita nel foglio risultato)....
Perdonami, ma abbi pazienza, non so cos'è VBA

Credevo che con la formula nella colonna denominata StrinaEstrai avrei potuto fare qualcosa (magari utilizzando le colonne perEstrai e StringaEstrai)
GiuseppeMN
00domenica 10 aprile 2016 13:31
Buona giornata, Mocric;
cerco di rispondere punto per punto.

@ mocric ; scrive


Credevo che con la formula nella colonna denominata StrinaEstrai avrei potuto fare qualcosa (magari utilizzando le colonne perEstrai e StringaEstrai)


Credo si possa fare, ma avresti bisogno di una Colonna d'appoggio nel Foglio di lavoro "Normale"; potrai non stampare il contenuto della Colonna d'appoggio, ma, la Colonna servirebbe.

@ mocric ; scrive


Perdonami, ma abbi pazienza, non so cos'è VBA


Nel File in allegato, ho utilizzato:
nel Modulo "Servizio"

Option Explicit

Sub Analizza()
Application.ScreenUpdating = False
Dim Prz As Long, x As Long

    With Worksheets("Prezziario")
        Prz = .Range("A" & Rows.Count).End(xlUp).Row
    For x = 2 To Prz
        If Cells(ActiveCell.Row, 1) = .Cells(x, 4) Then
            Cells(ActiveCell.Row, 1) = Left(Cells(ActiveCell.Row, 1).Value, Len(Cells(ActiveCell.Row, 1).Value) - .Cells(x, 5))
                Exit For
        End If
    Next x
        End With
Application.ScreenUpdating = True
End Sub


in Microsoft Excel Oggetti Foglio2 (Normale), l'evento:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim NRc As Long

    NRc = Range("A" & Rows.Count).End(xlUp).Row
        If Not Intersect(Target, Range("A10:A" & NRc)) Is Nothing Then Analizza
End Sub


Nel caso in cui questo tipo di gestione sia di tuo gradimento, nel Foglio di lavoro "Prezziario", possiamo adottare la stessa tecnica per il Range "I3:I15".


A disposizione.

Buon fine settimana.

Giuseppe
mocric
00domenica 10 aprile 2016 15:34
O caspiterina.....
Non ce l'avrei mai fatta....Per me è arabo!
Adesso cerco di capire come hai fatto [SM=x423024]
e ammetto che non so se lo comprenderò al 100%..... [SM=x423039]
GRAZIE mille è proprio quello che dovevo ottenere!!!
Mi hai fatto un super regalo.... Grazie Grazie Grazie
GiuseppeMN
00domenica 10 aprile 2016 19:34
Buona sera, Mocric;
in realtà quella che ho proposto è la strada più impervia.

Voglio dire, ho cercato di concretizzare alla lettera quello che avevi chiesto:

@ mocric; , scrive:


... ma quando rilascio il menu e quindi si visualizza la cella (in questa stessa cella) vorrei poter vedere il testo, ma senza gli ultimi 2 caratteri.


Solo per chiarezza, propongo la soluzione che avrei adottato da subito.
Option Explicit

Sub Analizza()
Application.ScreenUpdating = False
Dim Prz As Long, x As Long

    With Worksheets("Prezziario")
        Prz = .Range("A" & Rows.Count).End(xlUp).Row
    For x = 2 To Prz
        If Cells(ActiveCell.Row, 1) = .Cells(x, 4) Then
            Cells(ActiveCell.Row, 1) = .Cells(x, 1)
                Exit For
        End If
    Next x
        End With
Application.ScreenUpdating = True
End Sub

In questo modo nel Foglio di lavoro "Prezziario" non avresti più la necessità di avere la Colonna che "conta i caratteri da eliminare" e il risultato sarebbe ugualmente quello desiderato.



A disposizione.

Buona serata.

Giuseppe
mocric
00domenica 10 aprile 2016 21:06
In effetti funziona anche così..... Certo che prima mi "spaventavano" le innumerevoli formule di excel, ma adesso mi rendo conto che quelle sono niente....Excel vive di vita propria!!!! :-)
Sto ancora cercando di capire quello che hai fatto e non demordo; forse con un pò di pazienza ce la farò....
Toglimi una curiosità gli spazi tra il nome e il prezzo sono fatti in modo da non far capire ad excel che sono "duplicati", vero? altrimenti lui vede valori uguali e quindi li somma o qualcosa di simile, vero? Dici che almeno questo l'ho capito?
Grazie ancora per il tuo aiuto
GiuseppeMN
00lunedì 11 aprile 2016 09:22
Buona giornata, Mocric.

Leggo solo ora.

@ mocric, scrive:


Sto ancora cercando di capire quello che hai fatto e non demordo; forse con un pò di pazienza ce la farò....


Temo che come primo passo verso a VBA, l'approccio non sia dei più semplici; se lo ritieni opportuno possiamo approfondire le varie istruzioni utilizzate.

@ mocric, scrive:


Toglimi una curiosità gli spazi tra il nome e il prezzo sono fatti in modo da non far capire ad excel che sono "duplicati", vero? altrimenti lui vede valori uguali e quindi li somma o qualcosa di simile, vero? Dici che almeno questo l'ho capito?


Credo sia esattamente come dici Tu.
Vorrei aggiungere che possono esserci alternative a questo tipo di gestione; ma, visto che la Procedura funziona, direi che va bene così.



A disposizione.

Buon Lavoro e buona serata.

Giuseppe
mocric
00lunedì 11 aprile 2016 10:33
Grazie
Grazie ancora per la tua pazienza infinita..... Tranquillo non ci penso proprio a toccare nemmeno una virgola di quello che hai fatto..... è tutto perfetto così....era solo una mia curiosità giusto per capire se almeno una piccola sciocchezza di excel l'avevo capita... grazie grazie grazie

[SM=x423047]
GiuseppeMN
00lunedì 11 aprile 2016 15:01
Buona sera, moric, o preferisci ti chiamo Cristina?

Sei veramente sicura valesse la pena proseguire quì?

Bastava chiedere e avremmo trovato una soluzione Quì.


La vita è bella perchè è varia; non si finisce mai di imparare.


Giuseppe
mocric
00lunedì 11 aprile 2016 15:24
Scusami, non voleva essere un'affronto e non era proprio mia intenzione offenderti, ma dato che il problema più grosso me lo avevi risolto e visto che alla mia domanda di curiosità la tua risposta era stata (Vorrei aggiungere che possono esserci alternative a questo tipo di gestione; ma, visto che la Procedura funziona, direi che va bene così.) l'avevo interpretata come se per te fosse un'argomento chiuso; e dato il super lavoro che avevi fatto, mi sembrava di chiederti troppo e di approfittarne e non volevo..... Scusa credevo che magari altri avrebbero trovato risposta al problema dei prezzi e degli spazi (dato che purtroppo questo file non lo utilizzerò solo io, ma anche una persona che ne sa ancora meno di me e vuole tutte le cose a posto dato che è una persona perfettina!....


alfrimpa
00lunedì 11 aprile 2016 15:37
Ciao Cristina

Premesso che la pratica del crossposting è, a mio avviso, deprecabile tant'è che su alcuni forum è vietata dal regolamento, quando ti ho risposto su Forumexcel.it non avevo visto questa discussione.

Dopo aver visto il file di Giuseppe (che saluto) mi pare che questo faccia esattamente quello che hai chiesto quindi che necessità c'era di porre la stessa domanda altrove?

Se c'erano problemi irrisolti andava fatta altra domanda o qui o da un'altra parte.
mocric
00lunedì 11 aprile 2016 15:43
Ok, Alfredo, chiedo scusa anche a te.
Mi sono presa i miei meritati cazziatoni e chiedo scusa a tutti, come scritto sopra..... è la prima volta che utilizzo il canale dei forum ed è la prima volta che mi cimento un pò con excel.... scusate se avevo interpretato il lavoro di Giuseppe per lui chiuso e se non ho chiesto a lui di avere il file con le altre piccole correzioncine......
scusate scusate scusate scusate
alfrimpa
00lunedì 11 aprile 2016 16:31
Comunque Cristina a Napoli diciamo: "Scurdammece 'o passato" (Dimentichiamo il passato).

Se ci sono ancora questioni irrisolte prova a proporle e se posso, con il permesso di Giuseppe [SM=x423053], proverei (ammesso che ci riesca, a darti il mio contributo.
GiuseppeMN
00lunedì 11 aprile 2016 16:44
Buona sera, Alfredo.

In realtà il Foglio di lavoro "Prezziario" poteva benissimo prevedere la "Descrizione" senza spazi finali (vedi immagine allegata).

Poi, come Tu mi insegni, visto che si è già aperto il mondo VBA, ricavare il prezzo unitario senza Formule è come togliere il gelato dalle mani di un Bambino.

Se proprio vogliamo essere pignoli, andrebbero gestiti i Record con Prezzo / Totale non valorizzato; mi sembra ce ne siano solo diciassette (17).

Ma questo è solo un dettaglio.




Buona serata.

Giuseppe
mocric
00lunedì 11 aprile 2016 18:38
Grazie per la comprensione, mi ero presa malissimo!
Pensavo che non mi avreste perdonata
mocric
00lunedì 11 aprile 2016 18:46
Giuseppe, come al solito io non capisco quello che intendi, ma se per assurdo io volessi vedere nel menu a tendina: il nome del materiale 3 spazi e il numero del prezzo (es."Camion 3 assi 40") è fattibile dal file che mi hai passato tu (dato che era perfetto) senza che poi mi si sommino tutti i 40 che ci sono? Perché ci ho provato, ma dopo, quando vado nel foglio corretto invece di trovare prezzo €40,00 trovo un'altro valore; anche perché se un indomani dovessi aggiungere un'altro materiale con la stessa cifra, lo posso fare?
Sempre se sei ancora disposto ad aiutarmi; altrimenti grazie per tutto quello che hai fatto
Questa è la versione 'lo-fi' del Forum Per visualizzare la versione completa clicca qui
Tutti gli orari sono GMT+01:00. Adesso sono le 03:16.
Copyright © 2000-2024 FFZ srl - www.freeforumzone.com