Excel e gli applicativi Microsoft Office Bloccare la data del Lunedì

Login Registrati
Stai vedendo 22 articoli - dal 1 a 22 (di 22 totali)
  • Autore
    Articoli
  • #18470 Score: 0 | Risposta

    madefra
    Partecipante

      Buongiorno a tutti, ho un problemino che all'apparenza sembra normale ma che alla fine non riesco a risovere:

      dato un file excel devo fare in modo che la data solo il lunedì si aggiorno e che per tutta la settimana mantenga il valore, e fin qui non ci sono problemi: =SE(GIORNO.SETTIMANA(OGGI();2)=1;OGGI();"")

      problema 1: devo visualizzare per tutta la settimana la data del lunedì e deve essere fissata x quando il foglio viene salvato settimanalmente

      Problema 2: quando sostituisco il file utilizzato la settimana precedente con il nuovo file per la settimana entrante (identico) deve automaticamente avere la data aggiornata della cella preposta (D4) e così via x tutte le settimane

      La prima domanda che sicuramente sorge spontanea è : ma non puoi aggiornalo manualmente? risposta se fosse un unico file e fossi in prima persona ad utilizzare tale file si ma siccome chi deve utilizzare tale file è un opratore produttivo non si vuole dare la possibilità di cambiare celle ove non necessario, poi i file da sostituire settimanalmente sono molti pertanto.......

      Allegati:
      You must be logged in to view attached files.
      #18473 Score: 0 | Risposta

      vecchio frac
      Senior Moderator
        272 pts

        Quando scrivi che quella indicata è la "Cella che deve modificarsi automaticamente e deve mantenere la data del lunedì", intendi che io posso aprire il foglio in un giorno qualsiasi della settimana, ma la prima data (quella del lunedì) punta al primo lunedì della settimana in cui mi trovo (e quindi i giorni successivi sono in funzione della data indicata). Cioè se io apro il file oggi che è martedì 27, la cella D4 del file postato contiene "26/08/2019" (ieri, che era lunedì). Se apro il file martedì prossimo, 3 settembre la cella furbescamente mostrerà la data di lunedì 2 settembre (e i giorni successivi saranno 3/9, 4/9 eccetera). 

        Credo che sia complicato scriverlo in formula. Non mi ci sono mai messo in verità.

        Un paio di righe di codice VBA risolverebbero, ma il prezzo da pagare in questo caso è che devi cambiare il formato di file (da xlsx a xlsm) e far attivare le macro ai tuoi utenti (altrimenti non funziona).

        #18474 Score: 0 | Risposta

        vecchio frac
        Senior Moderator
          272 pts

          Comunque forse non è complicato 🙂

          Una formula come questa nella cella del lunedì:

          =OGGI()-GIORNO.SETTIMANA(OGGI();3)

          dovrebbe restituire la giornata di lunedì.

          Nelle celle di martedì, mercoledì, eccetera, la formula deve tener conto dell'avanzamento di un giorno rispetto a tale lunedì:

          cella di martedì: =OGGI()-GIORNO.SETTIMANA(OGGI();3)+1
          cella di mercoledì: =OGGI()-GIORNO.SETTIMANA(OGGI();3)+2
          cella di giovedì: =OGGI()-GIORNO.SETTIMANA(OGGI();3)+3
          eccetera
          #18475 Score: 0 | Risposta

          Luca73
          Partecipante
            58 pts

            Ciao

            io ho capito così:

            tu apri il file e per tutti i giorni della settiama corrente vuoi che il rprimo giorno rimanga il luned' della settimana corrente. 

            Allora puoi usare 

            =TODAY()-WEEKDAY(TODAY();3)  =OGGI()-GIORNO.SETTIMANA(OGGI();3)

            Quando sei a mercoledì la data varra il mercoledì meno 2 (giorno settimana con secondo parametro 3 vale 0 (zero) il lunedì

            @ VF non è per niente difficile.....  

            Ciao

            Luca

            #18476 Score: 0 | Risposta

            Luca73
            Partecipante
              58 pts

              Uffa anticipato di un soffio, come sempre.....  

              #18477 Score: 0 | Risposta

              Luca73
              Partecipante
                58 pts

                Per i giorni successivi al lunedì in alternativa a qanto scritto da VF puoi semplicemente sommare 1 alla data della cella a sinistra

                #18478 Score: 0 | Risposta

                vecchio frac
                Senior Moderator
                  272 pts

                  Luca73 ha scritto:

                  Uffa anticipato di un soffio, come sempre

                   

                  Se ho detto qualcosa di giusto sono contento, vuol dire che ho ragionato bene. Non ricordo di averci avuto a che fare con un problema simile, e credevo fosse più complicato.

                  #18479 Score: 0 | Risposta

                  madefra
                  Partecipante

                    Luca la dificoltà è che quando lunedi 2 settembre(in questo caso) archivio il file la cella del lunedì non deve più modificarsi ma mantenere sempre la data (in questo caso) del 26 agosto anche nel caso lo aprissi tra 3 mesi; nella stesso tempo quando io sostituisco il file "vecchio" con il nuovo file Master la data al^'apertura deve essere quella del lunedì della settimana stessa.

                     

                     

                    #18480 Score: 0 | Risposta

                    vecchio frac
                    Senior Moderator
                      272 pts

                      Allora devi congelare le formule manualmente prima di archiviare il file e iniziare quello nuovo. Oppure usi VBA per questo compito. Non c'è altra soluzione.

                      #18481 Score: 0 | Risposta

                      madefra
                      Partecipante

                        Grazie ma non risolvo così facilmente il tuo suggerimento è lo stesso impostato inizialmente da me ma la cella si aggiorna sempre ogni lunedì a seguire che non è ciò che voglio. Immaginavo che forse l'unica soluzione è il VBA anche se devo modificare l'estensione del file e non sono avvezzo a questa tipologia di programmazione pertanto sono a chiedere aiuto Help me.

                        #18483 Score: 0 | Risposta

                        Luca73
                        Partecipante
                          58 pts

                          Ciao. 

                          la soluzione proposta sia da me che da VF partiva dal fatto che non avevamo capito bene il problema.

                          Se vuoi congelare per sempre una data allora l'unica soluzione è che non sia una formula altrimenti si continuerebbe ad aggiornare.

                          Le soluzioni che vedo fattibili sono:

                          - scrivi a mano la data del lunedì ogni volta che cominci una nuova settimana.

                          - lasci la formula che ti calcola il lunedì ed inserisci un pulsante o similare che premuto durante la settimana trasforma le date in numeri

                          - lasci la data non come formula e aggiungi un pulsante oppure una domanda automatica ad inizio lavoro che chiede se vuoi aggiornare le date

                          Le soluzioni potrebbero essere diverse e dipende anche da come gestisci il file. Mi spiego. tu conservi il file di tttte le settimane. quindi saranno salvate con un certo nome. Per creare il file nuovo come procedi? Hai un modello? apri qullo della settimana prima e cancelli i dati? apri un file master?

                          A seconda di qyuale metodo utilizzi allora potresti pensare ad una soluzione,

                          Secondo me però non te la sfanghi solo con le formule.

                          Se vuoi passare al VBA e vuoi un aiuto cerca di spiegare cosa preferiresti che il programma facesse e come usualmente lo utilizzate.

                          Ciao

                          Luca

                           

                          #18484 Score: 0 | Risposta

                          madefra
                          Partecipante

                            Pensavo di averlo scritto :

                            -  il lunedì il file  che chiamiamo "A" viene archiviato mediante schedulazione e non si tocca + a meno di effettuare controlli

                            - lo stesso lunedì in automatico mediante schedulazione viene copiato un file (Master) "B"nella stessa locazione del file  "A"     precedentemente archiviato

                            1) le date del file A non devono subire variazioni

                            2) le date del file "B" (che sostituirà il file "A" nella stessa cartella) devono assumere il valore partendo dal lunedì stesso di quando è stata effettuata la copia.

                            Spero di essere stato sufficentemente chiaro edi avere esposto il problema in modo esaustivo sul cosa vorrei avere.

                            Ciao

                             

                             

                            #18485 Score: 0 | Risposta

                            vecchio frac
                            Senior Moderator
                              272 pts

                              Luca73 ha scritto:

                              Se vuoi congelare per sempre una data allora l'unica soluzione è che non sia una formula

                              Eh già. Per congelare la data si seleziona la cella con la formula (o meglio tutte le celle dei giorni della settimana), si entra nella cella in modalità editing, si preme il tasto giusto e si salva tutto.

                              Quindi una serie F2 - F9 a catena. Senza VBA bisogna fare tutto a mano necessariamente.

                              Quanto alla nota sub 1) dell'ultimo post, chiaro che le date congelate sono normali valori e non più formule, quindi una volta trasformate non si cambiano più. Quanto alla nota sub 2) possono valere le formule già viste, dal momento che prendono in considerazione sempre =OGGI(). Il file master (B) potrebbe essere un modello di Excel (di estensione ".xlst") che contiene già le formule suddette.

                              Il punto chiave è che l'utente deve essere in grado di congelare le formule prima di archiviare il file... a meno che non venga fatto centralmente... il che potrebbe anche essere una buona idea: se tu, come amministratore del progetto, raccogli i file modificati dai tuoi operatori in nua cartella comune (o se ti fai mandare i file, è lo stesso), tu puoi avere una macro che apre ogni singolo file, congela le date, salva il file e lo piazza nella cartella di archivio... non so se sono stato chiaro. In tal modo nessuno dei tuoi utenti deve attivare le macro, lo fai solo tu quando serve (una volta alla settimana).

                              #18486 Score: 0 | Risposta

                              vecchio frac
                              Senior Moderator
                                272 pts

                                madefra ha scritto:

                                viene archiviato mediante schedulazione

                                Come avviene tale schedulazione?

                                #18487 Score: 0 | Risposta

                                madefra
                                Partecipante

                                  Mediante file .bat  creato e schedulatore di windows

                                  #18488 Score: 0 | Risposta

                                  madefra
                                  Partecipante

                                    Non voglio manualmente gestire c.a 40 file a settimana cosa mi suggerisci con il  VBA?

                                    #18489 Score: 0 | Risposta

                                    vecchio frac
                                    Senior Moderator
                                      272 pts

                                      Ma lo scenario prospettato è fattibile? Cioè, c'è un momento in cui riesci ad avere la disponibilità dei quaranta file settimanali per procedere all'archiviazione? 

                                      Suggerisco solo che tu dedichi un attimo lunedì mattina all'apertura di un file Excel di gestione, con cui avvii la macro che acceda alla cartella dove sono depositati i file da trattare, li apra, congeli le celle con formule nei corrispondenti valori, li chiuda (salvando) e li trasferisca nella cartella di archivio. Cioè esattamente quello che dovresti fare a mano.

                                      Se poi (adesso devo studiarlo un attimo) si può anche fare in modo che il file di gestione sia lanciabile dallo stesso file bat, sarebbe ancor meglio.

                                      #18492 Score: 0 | Risposta

                                      vecchio frac
                                      Senior Moderator
                                        272 pts

                                        vecchio frac ha scritto:

                                        Se poi (adesso devo studiarlo un attimo) si può anche fare in modo che il file di gestione sia lanciabile dallo stesso file bat

                                        Si può anche fare, ma la macro deve risiedere nell'evento Open del Workbook e devi essere presente per attivare le macro (in alternativa: posizioni il file xlsm in un percorso "attendibile": in tal modo la macro viene eseguita senza conferma).

                                        #18494 Score: 0 | Risposta

                                        Luca73
                                        Partecipante
                                          58 pts

                                          Una domanda:  Visto che il file viene rinominato e salvato da un file .bat ha una data nel nome del file? o della cartella?

                                          Il nome file è accessibile come formula pertanto potresti calcolare la data a partire dal nome del file.

                                          Costruito oppurtunamente il file basterebbe comunque cambiare una ed una sola cella e lasciare le altre come funzione collegata alla prima che diventa fissa.

                                          Ciao Luca

                                          #18495 Score: 0 | Risposta

                                          Luca73
                                          Partecipante
                                            58 pts

                                            Ciao altra proposta.

                                            E pensare di generare un file excel che contiene solo una macro che viene lanciato dal file.bat con una macro autopartente che apre e modifica tutti i file che ha appena generato/copiato?

                                             

                                            #18497 Score: 0 | Risposta

                                            vecchio frac
                                            Senior Moderator
                                              272 pts

                                              Luca73 ha scritto:

                                              E pensare di generare un file excel che contiene solo una macro

                                              Ho pensato anch'io così. Siamo proprio in sintonia   

                                              #18523 Score: 0 | Risposta

                                              Luca73
                                              Partecipante
                                                58 pts

                                                Ciao

                                                ci potrebbe essere una soluzione fattibile ma molto "sporca" accettando di avere calcoli ricorsivi.

                                                in una cella inserire una formula se con una consdizione che verifica se il file è compilato (ad esempio una cella <>"" oppure il contegio delle celle da compilare = 0) e se non è compilato allora la cella vale oggi() altrimenti vale se stessa

                                                Esempio

                                                in A1 che verifica se A2 scritto 

                                                =IF(A2="";TODAY()-WEEKDAY(TODAY();3);A1)

                                                oppure

                                                in A1 che verifica se A8 c'e almeno una cella scritta

                                                =IF(COUNT(A2:A8)=0;TODAY()-WEEKDAY(TODAY();3);A1)

                                                Ciao

                                                Luca

                                              Login Registrati
                                              Stai vedendo 22 articoli - dal 1 a 22 (di 22 totali)
                                              Rispondi a: Bloccare la data del Lunedì
                                              Gli allegati sono permessi solo ad utenti REGISTRATI
                                              Le tue informazioni: