Condividi:        

Excel 2000 - Convalida dati

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

Excel 2000 - Convalida dati

Postdi proci » 13/02/10 19:56

Buonasera a tutti e grazie ancora ai moderatori per tutto il sostegno che danno.

Ho un problema: ho impostato una tabella "Preventivo" dove nella colonna articolo con la convalida dati ho creato un menu a tendina che propone tutti gli articoli presenti in un altro elenco; vorrei sapere se anziché scorrere tutti gli articoli, digitando sulla cella le prime lettere dell'articolo che sto cercando mi visualizzi solo le voci che iniziano con queste prime lettere; ciò perché gli articoli sono circa un migliaio.

Ho cercato nel forum ed anche in Internet, ma non ho trovato risposta.

Grazie 1000 dell'aiuto.
proci
Utente Junior
 
Post: 22
Iscritto il: 21/11/09 18:05

Sponsor
 

Re: Excel 2000 - Convalida dati

Postdi Anthony47 » 13/02/10 20:43

No, questa e' una proprieta' delle "listbox"; quindi potresti procedere in questo modo: ti programmi una listbox associata alla cella da convalidare, i cui raw data sono i valodi di convalida; puoi definirlo di altezza a piacere (rispetto alle 8 righe del menu' di convalida); metti il controllo Visible=False; con una macro di SelectionChange, quando selezioni la cella rendi il controllo visibile in modo da poterlo compilare; al click del controllo lo rendi nuovamente nascosto, spostando la cella selezionata sulla successiva.

Se questo ampio spunto non e' sufficiente, posta ancora.

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19183
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel 2000 - Convalida dati

Postdi proci » 15/02/10 17:43

Grazie Anthony, ma non vorrei inoltrarmi nei meandri di VBA che peraltro con conosco affatto.

Mi spiego meglio su cosa devo fare, magari c'é una soluzione alternativa:
ho un foglio Anagrafica che contiene codice, descrizione, fornitore e prezzo di circa 1000 articoli; in un altro foglio chiamato Preventivo ho impostato la tabella in modo che selezionando la descrizione dell'articolo in una colonna, in automatico escano gli altri dati sulle altre colonne della stessa riga, e questo funziona.

Gli articoli però sono tanti e vorrei che digitando le prime lettere della descrizione, mi proponga a video solo gli articoli che iniziano con tali lettere; pensavo che con la convalida dati si potesse fare anche questa selezione, ma nel menu' a tendina mi compare tutta la lista degli articoli; diversamente non conosco alternative.

Grazie ancora comunque.
proci
Utente Junior
 
Post: 22
Iscritto il: 21/11/09 18:05

Re: Excel 2000 - Convalida dati

Postdi Flash30005 » 15/02/10 21:23

Quello che ti propongo è una via di mezzo dall'elenco che già hai e continuerai ad usare e una semplificazione attraverso qualche riga di codice del Vba dal foglio dei dati premi ALT + F11 ti troverai in ambiente Vba
incolla l'intero codice qui riportato
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$1" Then
UR = Range("A" & Rows.Count).End(xlUp).Row
    For R = 2 To UR
        If Range("C1").Value = Mid(Range("A" & R).Value, 1, Len(Range("C1"))) Then
            Range("C1").Value = Range("A" & R).Value
            Range("C2").Select
            GoTo esci
        End If
    Next R
End If
esci:
End Sub


Ho considerato in C1 il risultato dell'elenco (convalida) semmai inserirai la cella da te utilizzata al posto di "C1" o "$C$1"
e sostituisci la colonna "A" nel caso non fosse questa la colonna interessata al listino
inoltre nella convalida togli la spunta al tab "Messaggi di errore"

Ti invio il file come test e se ti piace adotti la soluzione
http://rapidshare.com/files/351071825/ConvalidaSemplificata.xls.html
Utilizzo:
in C1 digiti parte della descrizione (es. ff ) e premi invio
la macro troverà nella colonna A1 la prima voce che inizia con il codice parziale (fff), potrebbe non essere la voce da te voluta in quanto avrai più voci che iniziano con quella piccola stringa e a questo punto userai l'elenco a discesa convalidato che ti darà tutte le voci a partire da quella selezionata in poi, chiaramente funziona se il listino è in ordine alfabetico.

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel 2000 - Convalida dati

Postdi proci » 18/02/10 11:06

Ciao Flash e grazie 1000 del prezioso aiuto,

la soluzione che mi proponi funziona e mi sta bene; per la mia applicazione ho però 2 necessità:
1) il risultato dell'elenco (convalida) si trova nel foglio "preventivo" mentre la lista degli articoli dove la convalida attinge si trova nel foglio "alfabetica", entrambi i foglio si trovano nel file "preventivo.xls";
2) il foglio "preventivo" utilizza il risultato dell'elenco (convalida) su più righe in quanto ho bisogna di compilare la tabella da zero inserendo via via nelle varie righe della stessa colonna i vari articoli che devono comporre il prodotto su cui devo stilare il preventivo.

Infine, un'altro problema: il foglio "alfabetica" del file "preventivo.xls" prende i dati dal file "anagrafica.xls": ora, quando apro solo il file "preventivo.xls" e scelgo di non aggiornare i collegamenti all'altro file, il foglio "alfabetica" mi mostra i dati ottenuti con il "CERCA.VERT" indirizzato su un foglio preciso dell'altro file, ma non quelli ottenuti con il "CERCA.VERT" su uno dei fogli dell'altro file, trovati con la funzione "INDIRETTO"; in questi ultimi mi appare la voce "#RIF!"; spero di essere stato chiaro.

Grazie ancora, ciao
proci
Utente Junior
 
Post: 22
Iscritto il: 21/11/09 18:05

Re: Excel 2000 - Convalida dati

Postdi Flash30005 » 18/02/10 14:38

Per il punto 1 devi modificare la macro
copia questa
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$1" Then
UR = Worksheets("Anagrafica").Range("A" & Rows.Count).End(xlUp).Row
    For R = 1 To UR
        If Range("C1").Value = Mid(Worksheets("Anagrafica").Range("A" & R).Value, 1, Len(Range("C1"))) Then
            Range("C1").Value = Worksheets("Anagrafica").Range("A" & R).Value
            Range("C2").Select
            GoTo esci
        End If
    Next R
End If
esci:
End Sub

inoltre devi creare l'elenco nel foglio Anagrafica selezionando tutte le righe interessate (anche abbondantemente e vuote) nominando questo elenco con "ElencoAna"
Poi in C1 devi convalidare non più un range di celle ma devi mettere
=ElencoAna
--------
Per il punto2 qualsiasi cosa dica posso sbagliare perché dovrei avere i fogli dati e capire come intervenire in maniera efficace

Per il Punto3 penso dipenda dal fatto che i file collegati al codice INDIRETTO debbano essere aperti,
altrimenti non funziona.

Fai sapere
Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel 2000 - Convalida dati

Postdi proci » 20/02/10 10:20

ciao Flash, grazie ancora,

- il punto 1, con la tua modifica, funziona ottimamente;

- il punto 3 ho capito, l'uso della funzione INDIRETTO comporta che il foglio richiamato dalla funzione sia in un file aperto;

- il punto 2 significa che sul foglio "preventivo" compilo tante righe quanti sono gli articoli che devono comporre il prodotto: per ogni riga che vado a compilare c'é la cella relativa (B1 nella riga 1, B2 nella 2, ecc.) dove ho già inserito la convalida dati e dove vorrei poter eseguire la stessa azione del punto 1.

Grazie 1000 dell'aiuto

ciao
proci
Utente Junior
 
Post: 22
Iscritto il: 21/11/09 18:05

Re: Excel 2000 - Convalida dati

Postdi Flash30005 » 20/02/10 22:59

proci ha scritto:- il punto 2 significa che sul foglio "preventivo" compilo tante righe quanti sono gli articoli che devono comporre il prodotto: per ogni riga che vado a compilare c'é la cella relativa (B1 nella riga 1, B2 nella 2, ecc.) dove ho già inserito la convalida dati ...


Ehmm.., io sono rimasto ad una sola cella di convalida (C1, credo del foglio "Alfabetica") come puoi riempire più righe del foglio "preventivo" prendendo il dato da una singola cella (C1)?

Fai sapere
Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel 2000 - Convalida dati

Postdi proci » 20/02/10 23:21

Ciao Flash,

mi spiego meglio, il mio foglio preventivo é così composto:

Articolo Codice Fornitore Q.tà Prezzo Un. Prezzo Tot.
Antenna B0058 Pippo 2 12,00 24,00
Caldaia C0044 Pluto 4 25,00 100,00

i dati delle colonne Codice, Fornitore, Q.tà, Prezzo Un. vengono presi con il CERCA.VERT da un altro foglio; io ho fatto la convalida dati su tutta la colonna "Articolo" mediante consenti elenco =Articoli (elenco presente nell'altro foglio); all'inizio il foglio Preventivo é vuoto, poi man mano, riga per riga, vado ad inserire i vari articoli: per individuare la descrizione corretta apro la linguetta dell'elenco a discesa e scelgo l'articolo voluto con il metodo che tu mi hai già risolto per la cella di una riga; il problema é che questa selezione la devo fare ad ogni riga nella colonna articolo.

Scusami se non sono stato chiaro prima.

Grazie
proci
Utente Junior
 
Post: 22
Iscritto il: 21/11/09 18:05

Re: Excel 2000 - Convalida dati

Postdi Flash30005 » 21/02/10 00:43

proci ha scritto:... il problema é che questa selezione la devo fare ad ogni riga nella colonna articolo.
...


Beh, del resto un programma non può sapere quali articoli hai intenzione di inserire nel preventivo.

Se in Articolo hai inserito la "Convalida facilitata" non so cosa altro potrei fare per agevolare questa operazione.

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel 2000 - Convalida dati

Postdi proci » 21/02/10 11:37

Scusa Flash, ma ho l'impressione che tu non mi abbia capito; sicuramente non mi sono espresso bene.

Allora, le tue istruzioni VBA funzionano perfettamente per una singola cella; però non so modificarle per estenderle a più celle della stessa colonna in quanto nel compilare il preventivo, ho impostato la convalida in tutta la colonna Articolo (ovviamente riferita ai dati di uno stesso elenco) e ad ogni riga vorrei selezionare un articolo diverso (tra quelli dell'elenco) attraverso l'elenco a discesa convalidato opportunamente filtrato dai codici VBA che tu mi ha dato.

Infatti, allo stato attuale nella cella (es.C1) digitando parte della descrizione mi compare la prima voce che inizia con il codice parziale, ma quando vado nella riga successiva (es.C2) questo non funziona e l'elenco a discesa convalidato mi propone indistintamente tutti gli articoli dell'elenco stesso.

Purtroppo non posso postarti il file in quanto non é mio, ma di un amico che sto aiutando.

Grazie ancora della pazienza.

Ciao
proci
Utente Junior
 
Post: 22
Iscritto il: 21/11/09 18:05

Re: Excel 2000 - Convalida dati

Postdi Flash30005 » 21/02/10 14:34

(se non ho i fogli con i dati e un esempio pratico di cosa si vuole, a volte ho difficoltà a capire il problema.
Il detto: "un disegno vale più di 1.000 parole" per me calza perfettamente ;) )

Ok,
allora tu vorresti estendere la stessa funzione che hai in C1 anche in C2, C3 etc

Quante righe prevedi di avere in un preventivo? (per evitare di realizzare una supermacro per 65.000 righe)

Fai sapere
Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel 2000 - Convalida dati

Postdi proci » 21/02/10 14:54

Ciao Flash,

non te la prendere, non posso postare i fogli con i dati perché non sono miei ma di un mio amico che sto aiutando ed essi contengono dati riservati, per cui cerca di capirmi.

Tornando alla questione, dalla tua risposta vedo che hai afferrato il mio problema; ti posso dire che 100 righe sono più che sufficienti per il preventivo di prodotti che contengono dai 10 agli 80 articoli circa.

Grazie 1000.
proci
Utente Junior
 
Post: 22
Iscritto il: 21/11/09 18:05

Re: Excel 2000 - Convalida dati

Postdi Flash30005 » 21/02/10 15:58

I dati sensibili possono essere cambiati con dati non veri, comunque prova questa macro
Codice: Seleziona tutto
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.EnableEvents = False
CheckArea = "C1:C100"
If Not Application.Intersect(ActiveCell, Range(CheckArea)) Is Nothing Then
    If (Selection.Rows.Count + Selection.Columns.Count) > 2 Then Exit Sub

passo = 1
    If Selection.Value <> 0 Then
        Application.ScreenUpdating = False
        Application.Calculation = xlManual
ArtV = ActiveCell.Value
RArt = Target.Row
        UR = Range("A" & Rows.Count).End(xlUp).Row
    For R = 1 To UR
        If ArtV = Mid(Range("A" & R).Value, 1, Len(ArtV)) Then
            ActiveCell.Value = Range("A" & R).Value
            GoTo esci
        End If
    Next R
esci:
End If
End If
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub

Chiaramente ogni cella deve essere convalidata nella stessa maniera (togliendo l'opzione su "messaggi di errore")
Appena digiti e dai invio non succede nulla ma a momento che ricleccherai nella cella avrai il primo valore dell'elenco per selezionarne altri della lista convalidata

Fai sapere
Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel 2000 - Convalida dati

Postdi Flash30005 » 21/02/10 18:32

Correggo la macro precedente con questa più immediata
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
CheckArea = "C1:C100"
If Not Application.Intersect(ActiveCell, Range(CheckArea)) Is Nothing Then
    If (Selection.Rows.Count + Selection.Columns.Count) > 2 Then Exit Sub
        Application.ScreenUpdating = False
        Application.Calculation = xlManual
RArt = Target.Row
ArtV = Target.Value
    If ArtV <> 0 Then
        UR = Range("A" & Rows.Count).End(xlUp).Row
    For R = 1 To UR
        If ArtV = Mid(Range("A" & R).Value, 1, Len(ArtV)) Then
            Target.Value = Range("A" & R).Value
            GoTo esci
        End If
    Next R
esci:
End If
End If
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel 2000 - Convalida dati

Postdi proci » 21/02/10 19:01

Ciao Flash,

ECCEZIONALE, funziona benissimo!!!!
Grazie infinite del tuo splendido aiuto. Ora il "Preventivo" va benissimo.

Una sola cosa non capisco, anche se é ininfluente sul risultato: quando termino il preventivo, con una macro lo copio in un altro foglio e ciò é OK; a questo punto nel cancellare le celle (C1:C100) ho 2 comportamenti diversi, e precisamente:
1) se cancello selezionando tutte le celle (C1:C100) con il mouse e premo il tasto CANC: alla successiva digitazione la tua macro NON funziona;
2) se cancello le celle (C1:C100) una ad una con tasto CANC: alla successiva digitazione la tua macro FUNZIONA.

Se hai la spiegazione bene, altrimenti non importa; ho già creato una macro che cancella ad una ad una le celle.
proci
Utente Junior
 
Post: 22
Iscritto il: 21/11/09 18:05

Re: Excel 2000 - Convalida dati

Postdi Flash30005 » 21/02/10 20:07

spero tu abbia usato la seconda macro delle ore 18:32
per evitare quell'errore devi spostare la riga
Application.EnableEvents = False
dopo la condizione
If (Selection.Rows.Count + Selection.Columns.Count) > 2 Then Exit Sub
in questa maniera:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
CheckArea = "C1:C100"
If Not Application.Intersect(ActiveCell, Range(CheckArea)) Is Nothing Then
    If (Selection.Rows.Count + Selection.Columns.Count) > 2 Then Exit Sub
Application.EnableEvents = False
        Application.ScreenUpdating = False
        Application.Calculation = xlManual
RArt = Target.Row
ArtV = Target.Value
    If ArtV <> 0 Then
        UR = Range("A" & Rows.Count).End(xlUp).Row
    For R = 1 To UR
        If ArtV = Mid(Range("A" & R).Value, 1, Len(ArtV)) Then
            Target.Value = Range("A" & R).Value
            GoTo esci
        End If
    Next R
esci:
End If
End If
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub

Comunque ricopia questa macro e prova

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel 2000 - Convalida dati

Postdi proci » 21/02/10 20:21

Ciao Flash,

si avevo già usato la seconda macro delle 18:32 ed é per quello che ne ero entusiasta; poi con l'ultima macro hai risolto anche il problema del CANC.

Ancora grazie infinite anche del tempo dedicato e della pazienza.

Buona settimana.
proci
Utente Junior
 
Post: 22
Iscritto il: 21/11/09 18:05

Re: Excel 2000 - Convalida dati

Postdi stelo » 30/08/10 19:41

ciao flash
ho lo stesso problema di proci cercare in una lista di nominativi attraverso convalida ma cercando alfabeticamente ho copiato il tuo codice ma non funziona io utilizzo excel 2007,mi puoi aiutare?
stelo
Newbie
 
Post: 2
Iscritto il: 17/08/10 09:51

Re: Excel 2000 - Convalida dati

Postdi Flash30005 » 30/08/10 23:08

Ciao Stelo e benvenuto nel Forum

Vorrei poterti aiutare ma come hai visto la macro postata funziona se i dati sono distribuiti come sono previsti nella macro.
La miglior cosa è l'invio, da parte tua, del foglio dati e descrivere esattamente, sul foglio, cosa vuoi ottenere

Fai sapere
ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "Excel 2000 - Convalida dati":


Chi c’è in linea

Visitano il forum: Nessuno e 31 ospiti