Ciao Norman,
con la mia procedura occorre darsi una regola (come ad es. avviene con i software che utilizzo per contabilità e dichiarazioni) in caso di inserimento della data non con la modalità classica.
Questo è un presupposto iniziale.
L'utente se vuole poter inserire le date in maniera "semplificata" (senza le barre) deve accettare di tenere un dato comportamento.
E la regola, in questa ipotesi, sarebbe che SE le date vengono inserite non in maniera classica debbano essere inserite digitando obbligatoriamente o "ggmmaa" oppure "ggmmaaaa".
Quindi l'utente saprebbe che solo quelle inserite con quelle modalità sono date valide. Si tratta di decidere se accettare o meno la regola.
Se la si accetta si sa che una data inserita 1216 (che se inserita con le barre in Excel rappresenterebbe una data valida) NON è una data valida per questa modalità di inserimento.
Altra regola da accettare sarebbe appunto la formattazione come testo delle celle che contengono le date (da qui la mia domanda inziale in quanto se non fosse accettabile questa cosa ovviamente si dovrebbe rinunciare a monte alla procedura).
Per quanto riguarda la data voluta, nel formato desiderato, a quel punto si cambia il formato data.
Ad es. se imposto Format(CDate(Data), "d/m/yy") nella cella la data viene inserita come 1/1/16.
Se impost Format(CDate(Data), "d/mm/yy") nella cella la data viene inserita come 1/01/2016.
Anche qui si tratta di decidere come si vuole che venga visualizzata la data (ma questo lo si farebbe anche in caso di inserimento classico delle date).
Una volta che eventualmente sia stata accettata la regola che l'utente non può fare tutto ciò che vuole, ma deve tenere un determinato comportamento di inserimento, il vero problema, come dicevo, è quello del "riconoscimento automatico" che excel fa delle
date in formato americano.
Ad es. ho impostato la condizione Year(Data) >= AnnoLimite che consente l'inserimento di date successive nell'esempio al 2010.
Ecco che se inserisco, per errore, 290215 la procedura dovrebbe segnalarmi errore perché non esiste il 29 febbraio 2015 ma excel invece la converte in data americana e quindi viene inserita la data 15/02/2029.
Se la condizione fosse limitata ad un dato anno (es. Year(Data) = 2015) il problema verrebbe risolto dal controllo sull'anno che non troverebbe corrispondenza con l'anno di riferimento.
Questo aspetto lo considero un grosso limite ma se ad es. dovessi utilizzare la procedura per un programma di fatturazione dove l'anno delle date delle fatture deve essere quello dell'anno di riferimento ecco che il problema viene evitato.
Lo stesso se dovessi inserire dei movimenti di registrazione (ad es. contabilità) per i quali la data deve essere comunque compresa in un determinato anno di riferimento.
Mi chiedevo se non ci fosse un modo per impostare in Excel che le date vengano riconosciute come tali in base ad un particolare metodo (americano o italiano, come ad esempio viene fatto in alcune funzioni per decidere le differenze tra date come ad es. in
GIORNO360).
ciao