You are here:Home-Domande su Excel VBA e MACRO-Sostituisci nomi al cambio del mese
Sostituisci nomi al cambio del mese2019-02-04T18:42:14+01:00

Home Forum Domande su Excel VBA e MACRO Sostituisci nomi al cambio del mese

Taggato: 

Visualizzazione 9 filoni di risposte
  • Autore
    Post
    • bg66bg66
      Partecipante
        Post totali: 60

        Ciao a tutti,
        nel file master ho delle formule che al cambio mese devo modificare.
        In pratica devo sostituire il nome del mese uscente con quello entrante.
        E’ una operazione di pochi secondi che faccio con trova/sostituisci

        ma non essendo sempre in ufficio…questi pochi secondi possono essere…dopo qualche giorno!!
        Quindi mi chiedevo se è possibile che:
        a) all’apertura del file, verifica se è cambiato il mese
        b) in caso positivo
        c) sostituire nel range: P4:Q75 del foglio di lavoro “Helper (2)
        d) il nome del mese presente con quello in corso.

        Ulteriore difficoltà è che nel master è già presente una Sub Workbook_open e precisamente:

        Option Explicit
        
        Private Sub Workbook_Open()
        Dim Cella As Range, differenza As Integer, data_riferimento As Long ', wsStart As Worksheets
        data_riferimento = CLng(Worksheets("Gua").Range("A3").Value)
        Set Cella = Worksheets("D_day").Range("D4")
        differenza = Date - data_riferimento
        Cella = differenza
        Set Cella = Nothing
        
        End Sub
        

        Allego anche il file con una delle formule presenti nel range sopracitato ( pari a 964 sostituzioni)
        https://www.dropbox.com/s/4eo5jhmpeuwu0rs/sostituisci%20nome%20mese%20al%20cambio%20data.xlsx?dl=0
        Grazie per l’aiuto.

        • Questo topic è stato modificato 1 anno, 4 mesi fa da bg66bg66.
        • Questo topic è stato modificato 1 anno, 4 mesi fa da bg66bg66.
        • Questo topic è stato modificato 1 anno, 4 mesi fa da bg66bg66. Motivo: difficoltà ad inserire il link
      • BySalvBySalv
        Amministratore del forum
          Post totali: 697

          Ciao BG6, potresti far fare il confronto del mese all’apertura del file e quindi lanciare una macro che modifichi il mese esempio

          if Month(Data_riferimento) <> Month(date) then Macro(lancia modifica)

          Ciao By Sal

          Ciao By Sal (8-)
          se ti piace la soluzione aiuta a sostenere il Forum con una DONAZIONE a piacere, Grazie

        • bg66bg66
          Partecipante
            Post totali: 60

            Ciao By Sal,
            purtroppo non ci sono riuscito.
            Dopo vari e vani tentativi, ci ho “girato” intorno in questo modo ma ovviamente non fà nulla di quello che avrei bisogno:
            Sub cambia_mese1()
            Dim xFind As String, xRep As String, xRg As Range
            On Error Resume Next
            Set xRg = Range(“P4:Q75”) ‘Cells
            xFind = Application.InputBox(“Trova:”, “Mittente”, , , , , 2)
            xRep = Application.InputBox(“Sostituisci:”, “Destinatario”, , , , , 2)
            If xFind = “False” Or xRep = “False” Then Exit Sub
            xRg.Replace xFind, xRep, xlPart, xlByRows, False, False, False, False
            End Sub
            In pratica:
            1) il nome del mese entrante lo posso estrarre con la funzione oggi ma quello del mese presente in formula? Con stringa.estrai -> non ci sono riuscito
            2) Una volta definito le celle potrei adattare quanto fatto con il registratore:
            Sub cambia_mese()
            Range(“P4:Q75″).Select
            Selection.Replace What:=”GENNAIO”, Replacement:=”FEBBRAIO”, LookAt:= _
            xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
            End Sub
            3) A codice finito come integrarlo nello script Workbook_open esistente?

            Attendo tue se puoi.

          • BySalvBySalv
            Amministratore del forum
              Post totali: 697

              Non Puoi inserire il file con pochi dati, a volte solo la macro anche modificandola o indicarti cosa modificare, qualche elemento del foglio con qualche formato particolare non ti permette l’esecuzione, ecco la richiesta del file.

              Ciao By Sal :bye:

              Ciao By Sal (8-)
              se ti piace la soluzione aiuta a sostenere il Forum con una DONAZIONE a piacere, Grazie

            • bg66bg66
              Partecipante
                Post totali: 60

                Ciao by Sal,
                scusami non avevo capito che il file master era d’aiuto. Speravo di cavarmela da solo con delle inidcazioni generali…
                https://www.dropbox.com/s/g72mcew56awe0e0/1_PRODUZ_forum.xlsm?dl=0″>https://www.dropbox.com/s/g72mcew56awe0e0/1_PRODUZ_forum.xlsm?dl=0

                Per evitare attivazione debug ho provveduto ad inertizzare/eliminare gli script presenti.

                Grazie ancora.

              • BySalvBySalv
                Amministratore del forum
                  Post totali: 697

                  Ciao bg66, ho guardato meglio la formula delle colonne P-Q questa

                  =SE.ERRORE(INDICE('G:\FORNI_2018\SETTEMBRE\[T09_SETTEMBRE_2018.xlsm]PRODUZIONE'!$M$1:$P$125;CONFRONTA($A$2+INT((RESTO((RIF.RIGA(Q1)-1)/6;6)));'G:\FORNI_2018\SETTEMBRE\[T09_SETTEMBRE_2018.xlsm]PRODUZIONE'!$A$1:$A$125;0)+INT((RESTO(RIF.RIGA(Q1)-1;6))/2);CONFRONTA(Q$3&" "&SE(VAL.PARI(RIF.RIGA());1;2);'G:\FORNI_2018\SETTEMBRE\[T09_SETTEMBRE_2018.xlsm]PRODUZIONE'!$M$1:$P$1;0));"")

                  ma il Settembre che vorresti trasformare ad Ottobre, mese successivo, si tratta di Cartelle e File, non so se poi andrebbe bene in quanto sono presenti poi tali cartelle e File?, altrimenti ti darà errore.

                  Ciao By Sal :bye:

                  Ciao By Sal (8-)
                  se ti piace la soluzione aiuta a sostenere il Forum con una DONAZIONE a piacere, Grazie

                • bg66bg66
                  Partecipante
                    Post totali: 60

                    Ciao By Sal,
                    ti confermo che sia il file che la cartella sono già presenti quando faccio la sostituzione.

                  • sidsid
                    Moderatore
                      Post totali: 749

                      Secondo me dovresti avere una cella di riferimento in cui memorizzi il mese inserito nelle formule.
                      Poi ogni volta che apri il file devi confrontare il mese odierno, con la cella di cui sopra; se sono diversi esegui la macro, e nella cella di riferimento memorizzi il nuovo mese.
                      Spero di essere stato chiaro

                    • bg66bg66
                      Partecipante
                        Post totali: 60

                        Ciao Sid & By Sal,
                        se divido in step l’intervento forse ci arrivo .
                        1) definire mese entrante (FATTO):
                        in I20 -> =OGGI()
                        in I21 -> =TESTO(I20;”MMMM”)

                        2) definire mese uscente
                        Ho provato puntando alla cella specifica ( esempio P4) con stringa.estrai poi con SINISTRA ed infine con DESTRA ma non ottengo nessun risultato:
                        in I23 -> =STRINGA.ESTRAI(P4;33;7) -> il risultato non sarebbe comunque corretto per il numero di lettere differenti per i vari mesi ma era per capire la strada da percorrere.
                        https://www.dropbox.com/s/g72mcew56awe0e0/1_PRODUZ_forum.xlsm?dl=0

                        Per ora mi fermo qui ed attendo vs. gradito aiuto.

                        • Questa risposta è stata modificata 1 anno, 3 mesi fa da bg66bg66.
                        • Questa risposta è stata modificata 1 anno, 3 mesi fa da bg66bg66.
                      • bg66bg66
                        Partecipante
                          Post totali: 60

                          Ciao a tutti,
                          per il punto sotto, ho ricevuto un grosso aiuto risolutivo che, sperando di fare cosa gradita, condivido con voi.

                          2) definire mese uscente

                          E’ stata sfruttata la “funzione MACRO4”. Queste funzioni vanno usate in un nome definito ed il file deve essere salvato come .xlsm (come se contenesse una macro…ed in effetti è così).

                          Crea un nome definito (ad esempio EstraiFormula) ed usa questa formula:
                          =INFO.CELLA(6;’Helper (2)’!$P$4)
                          quindi la formula che estrarrà il mese uscente diventerà:
                          =STRINGA.ESTRAI(EstraiFormula;TROVA(“[“;EstraiFormula)+5;TROVA(“_”;EstraiFormula;TROVA(“[“;EstraiFormula)+6)-TROVA(“[“;EstraiFormula)-5)

                          Nei prossimi giorni proverò a creare lo script per il “trova e sostituisci”

                          A presto..spero.
                          BG66

                          • Questa risposta è stata modificata 1 anno, 3 mesi fa da bg66bg66.
                      Visualizzazione 9 filoni di risposte
                      • Devi essere connesso per rispondere a questo topic.