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

Convalida dati.

Ultimo Aggiornamento: 18/06/2019 16:16
Post: 18
Registrato il: 19/09/2018
Età: 57
Utente Junior
excel 2007
OFFLINE
15/06/2019 17:31

Buon pomeriggio a tutti,
sono alle prese con un quesito "strano", fino ad ora le macro che creavo rispondevano alle mie esigenze.
Ma in un foglio di lavoro (foglio4) ho un intervallo di celle (e37:e39) che ho associato a un elenco con il convalida dati. l'origine dei dati e' in altro foglio Foglio1!$AC1:$AC17. Praticamente e' una lista di importi unitari per redigere una fattura.
Senza usare la macro se nella cella e37 inserisco manualmente un valore non presente nell'intervallo (Foglio1!$AC1:$AC17) l'errore avviso da me creato e':valore non presente in tabella, continuare ? Se volessi confermare io vorrei che tale valore va ad aggiungersi all'intervallo sopramenzionato, ma ovviamente non lo fa.
Allora ho creato la macro, che vi sottoriporto ma qui nascono le rogne.

(Sub Macro_TEST_CONVALIDADATI()
'
' Macro_TEST_CONVALIDADATI Macro
'

'
Range("E37:E39").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertWarning, Operator _
:=xlBetween, Formula1:="=Foglio1!$AC1:$AC17"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = "Avviso Errore"
.InputMessage = ""
.ErrorMessage = "Valore non presente in tabella. inserire?"
.ShowInput = True
.ShowError = True
End With
End Sub

Se si puo', come poter usare il rigo Errormessage e quindi andare ad aggiornare la lista all'intervallo Foglio1!$AC1:$AC17 che ovviamente diventerà Foglio1!$AC1:$AC18.
Grazie mille.
saverio
Post: 2.257
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
15/06/2019 18:34

ciao
ti allego un esempio che fa quello che vuoi, da adattare al tuo file.

Ogni volta che scrivi un dato in D1 (non compreso nell'elenco) ti chiede se lo vuoi aggiungere o meno.

Il foglio si avvale di un nome (formula scarto) assegnato al range D1: "elenco" e di una routine sull'evento change del foglio.

saluti



[Modificato da dodo47 15/06/2019 19:00]
Domenico
Win 10 - Excel 2016
Post: 18
Registrato il: 19/09/2018
Età: 57
Utente Junior
excel 2007
OFFLINE
15/06/2019 18:55

Grazie mille Dodo, appenA posso lo provo e ti aggiorno.
Grazie mille.
Post: 19
Registrato il: 19/09/2018
Età: 57
Utente Junior
excel 2007
OFFLINE
17/06/2019 17:45

Convalida dati ....non va. perche?
Gentilissmo Dodo,
ho provato parecchie volte a far girare la tua routine ma senza successo.
ho sostituito i tuoi valori che facevi girare nel tuo file con i miei:
"$E$37:$E$39" e' l'intervallo delle tre celle "configurate" con il convalida dati e che devono accettare
l'input con la finestrella associata alla serie di dati.
"Foglio1(AC1,AC50) questo e' il range-intervallo a cui e' associato il convalida dati.
Voglio essere sincero. Nel mio foglio di lavoro prima di arrivare a e37-e39, nel foglio si attiva una userform, viene fatta una copia del foglio in un foglio con nome perosnalizzato, viene aggiornata una tabella, e dopo si
arriva alla zona e37-e39.
Spero di non averti fatto AMMATTIRE.
gRAZIE.
Saverio

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Domanda As String
If Target.Cells.Count > 1 Then Exit Sub
If Target.Address = "$E$37:$E$39" Then
If IsEmpty(Target) Then Exit Sub
If WorksheetFunction.CountIf(Range("Foglio1!AC1,Foglio1!AC50"), Target) = 0 Then
Domanda = MsgBox("Aggiungi " & Target & " alla lista", vbYesNo + vbQuestion)
If Domanda = vbYes Then
Range("Foglio1!AC1,Foglio1!AC50").Cells(Range("Foglio1!AC1,Foglio1!AC50").Rows.Count + 1, 1) = Target
Else
Range("E37:E39") = ""
Range("E37:E39").Select
End If
End If
End If
End Sub
Post: 2.264
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
17/06/2019 18:48

Re: Convalida dati ....non va. perche?
saverio1966, 17/06/2019 17.45:

Gentilissmo Dodo,
ho provato parecchie volte a far girare la tua routine ma senza successo.....



Non ho capito, il mio file non funziona??

saluti



[Modificato da dodo47 17/06/2019 18:49]
Domenico
Win 10 - Excel 2016
Post: 20
Registrato il: 19/09/2018
Età: 57
Utente Junior
excel 2007
OFFLINE
17/06/2019 19:02

No Dodo, tranquillo.
Il tuo file è perfetto.
ho sostituito le variabili per far funzionare il mio progetto, ma come da mia risposta, non funziona e non capisco Cosa non lo fa funzionare. leggi pure mia spiegazione.
Se si puo far qualcosa , grazie mille.
Post: 2.265
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
17/06/2019 19:07

Invia una copia del tuo lavoro (senza dati sensibili) e cerchiamo di capire il perchè a te non funziona.
Certo non posso mettermi a ricostruire il tuo file con il rischio di non sapere bene come stanno le cose.

saluti



Domenico
Win 10 - Excel 2016
Post: 21
Registrato il: 19/09/2018
Età: 57
Utente Junior
excel 2007
OFFLINE
17/06/2019 19:29

Sarà fatto.
il tempo si rientrare e te lo invio subito.
Grazie per la disponibilità.
sav
Post: 22
Registrato il: 19/09/2018
Età: 57
Utente Junior
excel 2007
OFFLINE
18/06/2019 09:23

Buongiorno Dodo, vi allego con la presente il file cartel1-copia.rar da scompattare ; all’avvio del file, si troverà davanti a
un menu pannello di controllo: per avviare la procedura con il “convalida dati”, deve premere il pulsante
colorato di rosso.
Dopo aver premuto (e consultando ovviamente il vba),mentre sotto in secondo piano abbiamo il
foglio5(Foglio_start_riep), in primo piano si troverà davanti una userform: scegliete un nominativo qualsiasi
e confermate la scelta.
Dopo andate sempre avanti confermando con Ok e SI ai msgbox che vi trovate davanti; la procedura si
metterà in standby con il cursore fermo sulla casella e37 che aspetta un input.
Per uscire in maniera “normale” (ricordatevi che quando scegliete un nome dalla form, creerete un foglio
personalizzato.
Per uscire dal foglio “personalizzato “ in alto al foglio c’e’ il testo home che salva il lavoro sin li eseguito e
tora al menu pannello di controllo.
Spero di non avervi “spaventato” e………..grazie mille per l’interessamento.
saverio
Post: 2.266
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
18/06/2019 09:53

ciao
ti avevo detto che avresti dovuto creare un nome con la formula scarto, relativo al range che contiene i dati da visualizzare nelle celle di convalida (vedi mio file) e puntare tali celle al suddetto nome: non c'è.
Poi, l'istruzione If Target.Address = "$E$37:$E$39" Then è errata perchè presuppone che il "target" sia appunto il range e non la singola cella come necessario. Questo lo correggiamo dopo.

A parte questo, nelle tre celle di convalida E37>E39 rilevo che la prima parte da AC1, la seconda da AC2 e la terza da AC3; è corretto o un copia incolla andato a male??

Inoltre, da quanto capito, tu crei n fogli ognuno dei quali avrà tali celle di convalida.

Ora, per evitare di ripetere l'evento Change su tutti i fogli che crei, se ne potrebbe fare uno solo che vale per tutti, ponendolo in ThisWorkbook. Per farlo ho/hai la necessità di conoscere quali sono i fogli che NON devono essere interessati da tale evento, al fine di escluderli dalla routine.

Se la cosa ti interessa dovresti dirmi i nomi dei fogli da escludere, altrimenti ti trovi tutti i fogli creati con l'evento change (non è carino)

In ultimo (ma non ultimo) ti avevo suggerito di postare un file senza dati sensibili. Ora se la psw che è all'interno del tuo file la utilizzi per cose importanti, ti suggerisco di cambiarla.)

Saluti



[Modificato da dodo47 18/06/2019 10:38]
Domenico
Win 10 - Excel 2016
Post: 23
Registrato il: 19/09/2018
Età: 57
Utente Junior
excel 2007
OFFLINE
18/06/2019 10:35

Gentile Dodo, grazie x la immediata risposta.
Io sn un pivello in programmazione vba, tutto cio ke vedi è un faidate al 100%'
quesito 1: formula scarto non so farla sn sincero.
quesito 2 le tre celle di e37-e39 DEVONO tutte e tre p artire da ac1_ac17 e sn sorpreso da cio ke mi hai detto.
quesito 3' Sempre xke sn povero d programmazione vba, si è vero ogni foglio che si viene a creare presenterà il ripetersi dell evento worksheet change in ogni foglio personalizzato che vorrei proseguire.
Siccome tu ne sai piu d me e lo stai avvalorando e SE PUOI, se puoi correggermi gli errori che hai sottolineato.
per la pwd tranquillo poi inseriro la userform cn password cn asterischi.
Tranquillo xke il progettino è ancora work in progress.
Grazie in ogni caso. decidi in tutta serenità.
Post: 2.267
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
18/06/2019 10:39

si, ma non mi hai risposto: quali sono i nomi dei fogli che NON devono avere l'evento change?




Domenico
Win 10 - Excel 2016
Post: 24
Registrato il: 19/09/2018
Età: 57
Utente Junior
excel 2007
OFFLINE
18/06/2019 10:41

avevo omesso un quesito.
i fogli da escludere eventualmente dalla convalida sono Foglio3 e foglio1e Foglio2 che si chiama Foglio_inizio che pero ogni mese crea un clone generato da copia foglio(vedi menu pannello di controllo.
ogni mese gestisco turni e presenze su un foglio inizio che viene copiato nel foglio X E porta cn se la formattazione e le formule di foglio inizio.
Scusa se mi sn dilungato.
sav
Post: 2.268
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
18/06/2019 10:44

facciamo così:
per il momento ti escludo: foglio3 - foglio1 - foglio_inizio - Foglio_start_riep (quest'ultimo mi sembra sia la matrice per la creazione degli altri fogli e non necessita di tale evento); a te interessa che la cosa funzioni sui fogli che man mano crei.

saluti


Domenico
Win 10 - Excel 2016
Post: 25
Registrato il: 19/09/2018
Età: 57
Utente Junior
excel 2007
OFFLINE
18/06/2019 11:11

Si Dodo hai ragione. avevo dimenticato. Grazie
Post: 2.269
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
18/06/2019 11:25

Ciao
1) creato nome "mElenco" con formula:
=SCARTO(Foglio1!$AC$1;0;0;CONTA.VALORI(Foglio1!$AC:$AC))
vedi menu Formule > Gestione nomi.
Tale formula serve a rendere dinamico il range di col AC del foglio1, cioè ogni volta che aggiungerai qualcosa (sia tramite le celle di convalida che manualmente), il range si amplierà automaticamente.

2) Assegnato al range E32>E39 di "Foglio_start_riep" una convalida la cui origine è: =mElenco.
Nota: nelle convalide è stata tolta la spunta a: "Messaggio di errore", altrimenti la segnalazione ti sarebbe stata fatta due volte, una da excel per default e l'altra dall'evento change.
Man mano che creerai i fogli, questi avranno tale convalida per effetto del copia.

3) Eliminata la macro (Worksheet_Change) dal foglio "Foglio_start_riep" ed inserita in ThisWorkbook (Workbook_SheetChange), che fa riferimento a tutti i fogli esclusi quelli segnalati, apportando le dovute variazioni.

Saluti


[Modificato da dodo47 18/06/2019 12:16]
Domenico
Win 10 - Excel 2016
Post: 26
Registrato il: 19/09/2018
Età: 57
Utente Junior
excel 2007
OFFLINE
18/06/2019 12:46

Dodo. Grazie.
appena torno a casa a pranzo provvedo a vedere tuo lavoro ma non ho dubbi sulla Alta Qualità.
Grazie mille per la tua disponibilità.
ti faccio sapere.
ho in serbo da sistemare x i prox. gg. :
_ routine x determinare nella procedura. calendario, quando
viene pasqua
_ una proc. x importare dati da excel a excel nel foglio1 per le anagrafiche.
_ routine x login e pwd con asterischi sa userform
devo sudare e studiare.
Post: 2.272
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
18/06/2019 13:07

per la Pasqua ti consiglio caldamente:

http://www.cpearson.com/excel/easter.aspx

per il resto...alla prossima

saluti



Domenico
Win 10 - Excel 2016
Post: 27
Registrato il: 19/09/2018
Età: 57
Utente Junior
excel 2007
OFFLINE
18/06/2019 16:16

Buon pomeriggio a tutti,
Dodo ho appena visto il tuo lavoro. GRAZIE.
ottimo lavoro.
Ora cerco di andar avanti da solo. se avessi dei punti di domanda di una certa complessità, mi faccio vivo.
GRAZIE ancora.
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 08:52. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com