Condividi:        

Copia Automatica in base al contenuto in fogli diversi

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

Copia Automatica in base al contenuto in fogli diversi

Postdi Suleyman » 05/10/18 12:55

Buongiorno a tutti!!

Innanzitutto vorrei ringraziare questo forum che aiuta a trovare soluzioni alle persone..

Avrei un piccolo problema che da solo non sono riuscito a risolvere perciò chiedo vostro aiuto..

In una cartella di lavoro excel ho diversi fogli attivi nelle quali c'è quella del totale dove contiene tutti i dati contenuti negli altri fogli excel..

Praticamente, i fogli sono i 12 mesi dell'anno dove in ogni foglio ci stanno le prenotazioni per quel mese e ce ne sta uno che riassume tutto l'anno...

La cosa che vorrei fare è aggiungendo una riga nel foglio del totale, questo vada a copiare il contenuto di quella riga completa al foglio del mese riferito.. O viceversa, se vado a inserire una riga con una nuova prenotazione per uno dei mesi, questo venga copiato nel foglio del totale sotto agli altri dati...



spero di essere stato chiaro.. per favore qualcuno mi aiuti posso dare anche più informazioni se avete bisogno ma non so come spiegarmi meglio di così..

Attendo vostre risposte, grazie e tanti saluti
Mario
Suleyman
Newbie
 
Post: 3
Iscritto il: 05/10/18 12:43

Sponsor
 

Re: Copia Automatica in base al contenuto in fogli diversi

Postdi alfrimpa » 05/10/18 13:06

Mario allega un file di esempio con pochi dati e il risultato che vuoi ottenere inserito (anche se è abbastanza chiaro) in modo che si possa lavorare su una situazione concreta.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Copia Automatica in base al contenuto in fogli diversi

Postdi Suleyman » 05/10/18 13:43

il file è qui da wetransfer..

https://we.tl/t-jCJ2kug0Jo

puoi capire meglio ciò che vorrei fare.. ho cancellato i nomi dei pazienti soltanto.. il resto è quasi come quello che vorrei usare..

Uso sempre excell online in modo tale da avere anche il calendario a cascata per la scelta della data ed anche i nomi di chi inserisce i dati
Suleyman
Newbie
 
Post: 3
Iscritto il: 05/10/18 12:43

Re: Copia Automatica in base al contenuto in fogli diversi

Postdi alfrimpa » 05/10/18 14:25

Prova con questa macro da inserire nel modulo del foglio "All"

Quando avrai compilato l'ultima cella in colonna F tutti i dati verranno trasferiti sul foglio del mese relativo.

Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim ur As Long
Dim mese As String
If Not Intersect(Target, Range("f:F")) Is Nothing Then
mese = Application.WorksheetFunction.VLookup(Month(Target.Offset(0, -4).Value), Range("AA1:Ab12"), 2, False)
ur = Sheets(mese).Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To 6
    Sheets(mese).Cells(ur + 1, i).Value = Target.Offset(0, i - 6).Value
Next i
End If
End Sub
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Copia Automatica in base al contenuto in fogli diversi

Postdi Suleyman » 06/10/18 12:50

alfrimpa ha scritto:Prova con questa macro da inserire nel modulo del foglio "All"

Quando avrai compilato l'ultima cella in colonna F tutti i dati verranno trasferiti sul foglio del mese relativo.

Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim ur As Long
Dim mese As String
If Not Intersect(Target, Range("f:F")) Is Nothing Then
mese = Application.WorksheetFunction.VLookup(Month(Target.Offset(0, -4).Value), Range("AA1:Ab12"), 2, False)
ur = Sheets(mese).Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To 6
    Sheets(mese).Cells(ur + 1, i).Value = Target.Offset(0, i - 6).Value
Next i
End If
End Sub




Non sono riuscito ad inserirlo.. come posso fare? :( scusatemi ma sono leggermente ignorante sulle macro.. Ho provato ma mi da errore alla riga 7 che in questo caso equivale alla riga 1..
Suleyman
Newbie
 
Post: 3
Iscritto il: 05/10/18 12:43

Re: Copia Automatica in base al contenuto in fogli diversi

Postdi alfrimpa » 06/10/18 16:31

Scusa avevo dimenticato di dire che sul foglio All in cella AA1 ad AA12 inserisci i numeri da 1 a 12 e da AB1 ad AB12 inserisci i mesi (January, February fino a December) eventualmente nascondendo le due colonne.

Per inserire la macro apri l’editor di VBA fai in alto a sinistra doppio clic sul foglio All e nella finestra in alto a destra copia ed incolla il codice che ti ho dato.
Alfredo

Win7 + Office 2007
Avatar utente
alfrimpa
Utente Senior
 
Post: 1201
Iscritto il: 30/12/13 17:01
Località: Napoli

Re: Copia Automatica in base al contenuto in fogli diversi

Postdi Anthony47 » 06/10/18 16:38

Eh, mi sembrava Alfredo che avessi dimenticato qualcosa...

Aggiungo una procedura per inserire facilmente il codice:
-tasto dx sul tab col nome del foglio All; scegli Visualizza Codice per aprire l'editor delle macro; copia il codice e incollalo nel frame destro vuoto della finestra che si e' aperta.
-poi torna su Excel; quando compili o comunque modifichi una colonna F allora tutta la riga dovrebbe essere accodata al mese di riferimento.

TUTTAVIA secondo me Suleyman si deve decidere: o popola e aggiorna il contenuto dei mesi (a) e da questi popola il foglio ALL, oppure popola e aggiorni il foglio ALL (b) e da questo, quando gli serve, crea una "vista mensile" del mese che ti serve. IO propendo per l'ipotesi "b"
La procedura che ha in mente invece non puo' che creare confusione ad esempio quando si cancella una prenotazione, o la si ripianifica, o si modifica un solo campo del record.

Ad esempio, con questa macro:
Codice: Seleziona tutto
Sub Monthly()
Dim I As Long, cMon As String, tSh As String, Rispo, pMess As String
'
pMess = "Posso CANCELLARE il contenuto dei fogli Mensili e ricrearli dal contenuto di ALL?" & _
   vbCrLf & "Primi SI per procedere; NO per fermarsi"
Rispo = MsgBox(pMess, vbYesNo, "Conferma...")
If Rispo <> vbYes Then Exit Sub
Sheets("All").Select
For I = 0 To 11
    tSh = Application.WorksheetFunction.Text(Application.WorksheetFunction.EDate(Now, I), "[$-" & "409" & "]" & "mmmm")
    Sheets(tSh).Cells.ClearContents
    Range("A1:J1").Copy Sheets(tSh).Range("A1")
Next I
For I = 2 To Cells(Rows.Count, "B").End(xlUp).Row
    If Cells(I, 2) >= DateSerial(Year(Now), Month(Now), 1) Then
        tSh = Application.WorksheetFunction.Text(Cells(I, 2), "[$-" & "409" & "]" & "mmmm")
        Sheets(tSh).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(1, 10) = Cells(I, 1).Resize(1, 10).Value
    End If
Next I
MsgBox ("Fogli Mensili creati")
End Sub

Per inserire il codice:
-premi Alt-F11 per aprire l'editor delle macro
-Menu /Inserisci /Modulo
-Copia il codice e incollalo nel frame dx del modulo appena creato

Poi torna su Excel e quando vuoi creare le viste mensili lancia la macro Monthly:
-premi Alt-F8
-seleziona Monthly dall'elenco di macro disponibili
-premi Esegui
Oppure Inserisci sul foglio All un pulsante e vi associ la Macro Monthly.

La macro chiede conferma di poter CANCELLARE il contenuto dei file mensili e ricrearli; se Si i fogli mensili vengono azzerati e ricreati posizionando nel giusto foglio mensile ogni riga del foglio ALL che abbia una data superiore al 1° del mese corrente.
La macro si aspetta che ci siano 12 fogli, ognuno col nome January, February,... December (va bene la sequenza che c'e' nel file pubblicato), che rappresenta un periodo di 12 mesi futuri a partire dal mese corrente. Ad esempio, oggi nel foglio October ci finiranno tutte le date del mese Ottobre 2018; ma al 1° Novembre il foglio October sara' destinato a contenere le prenotazioni di Ottobre 2019.
Questo richiede una certa attenzione al cambio del mese.

Una possibile alternativa potrebbe essere nominare i fogli nella notazione October_2018, November_2018, .... October_2019, November_2019, ... in modo che sia sempre chiaro quali siano i mesi futuri e quali quelli passati; o semplicemente, a fine mese, rinominare il foglio come October_2018 e inserire un nuovo foglio October.

Vedi se quanto proposto puo' essere di tuo interesse.

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


Torna a Applicazioni Office Windows


Topic correlati a "Copia Automatica in base al contenuto in fogli diversi":


Chi c’è in linea

Visitano il forum: Nessuno e 67 ospiti