Risultati da 1 a 12 di 12

Discussione: Copiare cella e intestazione se presente una condizione



  1. #1
    L'avatar di G.Bove
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Milano
    Età
    51
    Messaggi
    870
    Versione Office
    2010
    Likes ricevuti
    24
    Likes dati
    186

    Copiare cella e intestazione se presente una condizione

    Ciao a tutti,
    se nel foglio 0_nuovo assunto è selezionata la scelta DA FARE vorrei che nel foglio di lavoro 'Da Fare' si compilassero i campi:

    1) colonna B con la data di quando si è selezionato "DA FARE"
    L'idea è di fare una formattazione condizionale che se ad esempio la cella C5 NON è vuota lui scrive la data oggi =OGGI (). Cosa ne pensate?

    2) colonna C con l'intestazione (riga 5) corrispondente al DA FARE
    Non ho idea di come fare!!

    3) colonna D con il nominativo del dipendente. Per questo punto ho provato con scarso risultato:
    Codice: 
    SE.ERRORE(INDICE('0_Nuovo assunto'!$A$7:$A$11;CONFRONTA("DA FARE";'0_Nuovo assunto'!$B$7:$L$10;0));'0_Nuovo assunto'!A7)

    https://www.dropbox.com/s/jytqq2lkeg...B%29.xlsm?dl=0

    Dato atteso:
    colonna B: Data di quando si è scelto DA FARE
    colonna C: Copiare l'intestazione in colonna 5 corrispondente alla colonna dove è presente DA FARE
    colonna D: il nome del dipendente corrispondente l DA FARE.
    Ovviamente possono esserci più DA FARE per singolo dipendente

    Grazie in anticipo
    Gene
    Ultima modifica fatta da:Gerardo Zuccalà; 18/09/16 alle 01:22

  2. #2

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7146
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2063
    Likes dati
    1300

    Re: Copiare cella e intestazione se presente una condizione

    Citazione Originariamente Scritto da G.Bove Visualizza Messaggio
    ..
    1) colonna B con la data di quando si è selezionato "DA FARE"
    L'idea è di fare una formattazione condizionale che se ad esempio la cella C5 NON è vuota lui scrive la data oggi =OGGI (). Cosa ne pensate?
    ....
    ..
    Ciao Gene,
    la formattazione condizionale non può scrivere nulla perchè ha una sola funzione: colorare le celle o i caratteri in presenza di determinate condizioni.
    Provo a vedere se ho capito bene la tua richiesta e ti scrivo un codice vba.
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  3. #3

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7146
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2063
    Likes dati
    1300

    Re: Copiare cella e intestazione se presente una condizione

    Vediamo se ho capito bene, questo è il codice da mettere nel modulo di classe del foglio 0_Nuovo assunto:
    Codice: 
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim uRiga As Long, shNA As Worksheet, shDaFare As Worksheet, y As Long, i As Long
    Set shNA = Worksheets("0_Nuovo assunto")
    Set shDaFare = Worksheets("Da Fare")
    Application.ScreenUpdating = False
    uRiga = Cells(Rows.Count, 1).End(xlUp).Row
    shDaFare.Range("B5:E" & uRiga) = ""
        If Not Intersect(Target, shNA.Range("D7:D" & uRiga)) Is Nothing Then
            Application.EnableEvents = False
                With shDaFare
                i = 5
                    For y = 7 To uRiga
                      If shNA.Range("D" & y) = "DA FARE" Then
                         .Range("B" & i) = Date
                        .Range("D" & i) = shNA.Range("A" & y)
                         i = i + 1
                     End If
                  Next
               End With
            Application.EnableEvents = True
        End If
        Application.ScreenUpdating = True
    End Sub
    https://www.dropbox.com/s/e1bzyj0cmx...29-1.xlsm?dl=0
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  4. #4
    L'avatar di G.Bove
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Milano
    Età
    51
    Messaggi
    870
    Versione Office
    2010
    Likes ricevuti
    24
    Likes dati
    186

    Re: Copiare cella e intestazione se presente una condizione

    Ciao Ges
    dalle prime prove:
    1) sembra che la descrizione (colonna C) non venga compilata.
    2) se cancello tutti i dati in nuovo assunto e poi riseleziono DA FARE il foglio Da Fare non si aggiorna. Devo creare un tasto?

    Gene

  5. #5

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7146
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2063
    Likes dati
    1300

    Re: Copiare cella e intestazione se presente una condizione

    Ciao Gene,
    forse ho capito male io ma la colonna C del foglio "Da fare" non la compili a mano?

    Ti riassumo cosa fa il codice che ti ho postato:
    Se viene modificata la colonna D del foglio "0_Nuovo assunto" allora:

    1) viene copiato il relativo nome nella colonna C del foglio "Da fare";

    2) viene inserita la data odierna nella colonna A del foglio "Da fare"

    Ed è questo quello che fa!

    Ho sbagliato a interpretare la tua richiesta?
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  6. #6
    L'avatar di G.Bove
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Milano
    Età
    51
    Messaggi
    870
    Versione Office
    2010
    Likes ricevuti
    24
    Likes dati
    186

    Re: Copiare cella e intestazione se presente una condizione

    Ciao Ges,
    Citazione Originariamente Scritto da G.Bove Visualizza Messaggio
    Dato atteso:
    colonna B: Data di quando si è scelto DA FARE
    colonna C: Copiare l'intestazione in colonna 5 corrispondente alla colonna dove è presente DA FARE
    colonna D: il nome del dipendente corrispondente l DA FARE.
    Ovviamente possono esserci più DA FARE per singolo dipendente
    cerco di essere più chiaro nel spiegare/sviluppare l'intero progetto.

    Con la macro sviluppata nei vecchi thread, aggiungo un nuovo addetto in staff quindi lo aggiungo in anagrafica e con salva aggiungo il suo nome nei vari fogli.
    A questo punto,nel foglio nuovo assunto vi sono vari documenti che devo consegnare nei giorni successivi all'assunzione.

    Per evitare di dimenticarli vorrei che venisse compilata la lista presente nel foglio 'Da Fare' quindi qualsiasi documento previsto per quel dipendente con la scritta DA FARE và segnalato/aggiunto. Quindi i riferimenti inseriti automaticamente dovrebbero essere: Data, Descrizione e nome del dipendente.

    Spero di essere stato meno ermetico.

    Grazie
    Gene

  7. #7

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7146
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2063
    Likes dati
    1300

    Re: Copiare cella e intestazione se presente una condizione

    Vediamo....
    prova a cambiare il codice con questo:

    Codice: 
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim uRiga As Long, shNA As Worksheet, shDaFare As Worksheet, y As Long, i As Long, x As Integer
    Set shNA = Worksheets("0_Nuovo assunto")
    Set shDaFare = Worksheets("Da Fare")
    Application.ScreenUpdating = False
    uRiga = Cells(Rows.Count, 1).End(xlUp).Row
    shDaFare.Range("B5:E" & uRiga) = ""
        If Not Intersect(Target, shNA.Range("B7:L" & uRiga)) Is Nothing Then
            Application.EnableEvents = False
                With shDaFare
                i = 5
                    For y = 7 To uRiga
                    For x = 2 To 12
                      If shNA.Cells(y, x) = "DA FARE" Then
                         .Range("C" & i) = shNA.Cells(5, x)
                         .Range("B" & i) = Date
                        .Range("D" & i) = shNA.Range("A" & y)
                         i = i + 1
                     End If
                  Next
                  Next
               End With
            Application.EnableEvents = True
        End If
        Application.ScreenUpdating = True
    End Sub
    EDIT: In rosso le modifiche rispetto al codice precedente
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  8. I seguenti utenti hanno dato un "Like"


  9. #8
    L'avatar di G.Bove
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Milano
    Età
    51
    Messaggi
    870
    Versione Office
    2010
    Likes ricevuti
    24
    Likes dati
    186

    Re: Copiare cella e intestazione se presente una condizione

    Ciao Ges,
    funziona perfettamente.

    Due piccoli perfezionamenti:
    1) Nel momento in cui flaggo la cella corrispondente (colonna E) -> la macro dovrebbe anche cambiare il testo da "DA FARE" a "SI"

    2) Vorrei che quando chiudo il file un MSGBOX mi avvisi delle attività in pending. Quindi:
    2.a) Ho creato un modulo 4
    2.b) Ho inserito questa macro:
    Codice: 
    Sub Workbook_close()
    Dim ur As Long, i As Long, testo1 As String, testo As String, risp As Integer
    With Sheets("Da Fare")
        ur = .Cells(Rows.Count, 1).End(xlUp).Row
        For i = 5 To ur
            If .Cells(i, 5) = "" Then
                testo1 = .Cells(i, 4) & " - " & .Cells(i, 3) & " mancata consegna " & vbLf 'copia cognome&nome+mancata consegna
                testo = testo & testo1
            End If
        Next i
    End With
    If testo <> "" Then
        risp = MsgBox("ATTENZIONE!" & vbLf & "Vi sono attività da completare" & vbLf & vbLf & _
            testo & vbLf & "Vuoi aprire il dettaglio?", 4 + vbInformation, "Domanda")
            If risp = 6 Then
                Sheets("Da Fare").Select
            End If
    End If
    End Sub
    Ma non parte quando chiudo il file e in più mi presenta una sfilza di mancate consegne fino a bloccarsi.

    Gene
    [EDIT] Vista la latitanza dei maghi delle formule , credo che questo thread vada spostato nella sezione VBA

  10. #9
    L'avatar di Baloon_50
    Clicca e Apri
    Data Registrazione
    Aug 2015
    Località
    Milano - Italy
    Età
    67
    Messaggi
    3340
    Versione Office
    2013 PC
    Likes ricevuti
    483
    Likes dati
    49

    Re: Copiare cella e intestazione se presente una condizione

    Citazione Originariamente Scritto da G.Bove Visualizza Messaggio
    Ciao Ges,
    funziona perfettamente.

    Due piccoli perfezionamenti:
    1) Nel momento in cui flaggo la cella corrispondente (colonna E) -> la macro dovrebbe anche cambiare il testo da "DA FARE" a "SI"

    2) Vorrei che quando chiudo il file un MSGBOX mi avvisi delle attività in pending. Quindi:
    2.a) Ho creato un modulo 4
    2.b) Ho inserito questa macro:
    Codice: 
    Sub Workbook_close()
    Dim ur As Long, i As Long, testo1 As String, testo As String, risp As Integer
    With Sheets("Da Fare")
        ur = .Cells(Rows.Count, 1).End(xlUp).Row
        For i = 5 To ur
            If .Cells(i, 5) = "" Then
                testo1 = .Cells(i, 4) & " - " & .Cells(i, 3) & " mancata consegna " & vbLf 'copia cognome&nome+mancata consegna
                testo = testo & testo1
            End If
        Next i
    End With
    If testo <> "" Then
        risp = MsgBox("ATTENZIONE!" & vbLf & "Vi sono attività da completare" & vbLf & vbLf & _
            testo & vbLf & "Vuoi aprire il dettaglio?", 4 + vbInformation, "Domanda")
            If risp = 6 Then
                Sheets("Da Fare").Select
            End If
    End If
    End Sub
    Ma non parte quando chiudo il file e in più mi presenta una sfilza di mancate consegne fino a bloccarsi.

    Gene
    [EDIT] Vista la latitanza dei maghi delle formule , credo che questo thread vada spostato nella sezione VBA
    Ciao Gene non ho guardato il codice ma la routine deve essere :

    Codice: 
    Private Sub workbook_beforeclose(cancel As Boolean)
    
    MsgBox ("è così che devi mettere il tutto")
    
    
    End Sub
    da mettere in "questa cartella di lavoro"

    buona domenica

    A volte basta usare parole inutili come “grazie” e “per favore” per rendere la vita più bella.
    (ELKonigsburg)
    Dice il saggio : "se vuoi essere aiutato devi metter l'allegato"
    (Nick Carter - Ten)

  11. #10
    L'avatar di pkrome59
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Reggio Calabria
    Età
    58
    Messaggi
    1188
    Versione Office
    Office 2013
    Likes ricevuti
    1198
    Likes dati
    2133

    Re: Copiare cella e intestazione se presente una condizione

    Ciao G.Bove, francamente non sono tanto convinto di aver capito bene, comunque per iniziare copia le seguenti:

    Foglio Da Fare
    In D5:
    =SE.ERRORE(INDICE('0_Nuovo assunto'!$A$7:$A$10;AGGREGA(15;6;(RIF.RIGA('0_Nuovo assunto'!$B$7:$B$10)-RIF.RIGA('0_Nuovo assunto'!$B$7)+1)/('0_Nuovo assunto'!$B$7:'0_Nuovo assunto'!$L$10="DA FARE");RIGHE($D$5:$D5)));"")

    In C5:
    =SE.ERRORE(INDICE('0_Nuovo assunto'!$B$5:$L$5;AGGREGA(15;6;(RIF.COLONNA('0_Nuovo assunto'!$B$7:$L8)-RIF.COLONNA('0_Nuovo assunto'!$B$7)+1)/(('0_Nuovo assunto'!$B$7:$L$10="DA FARE")*('0_Nuovo assunto'!$A$7:$A$10='Da Fare'!$D5));1));"")

    In B5:
    =SE($D5<>"";OGGI();"")

    tutte e tre da trascinare giù.
    Fa sapere se vanno bene, allego il file di prova, ciao e buona domenica a tutti.
    File Allegati File Allegati

  12. #11
    L'avatar di pkrome59
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Reggio Calabria
    Età
    58
    Messaggi
    1188
    Versione Office
    Office 2013
    Likes ricevuti
    1198
    Likes dati
    2133

    Re: Copiare cella e intestazione se presente una condizione

    Ciao G.Bove, la formula in C5 del post #10, va sostituita con la seguente:

    In C5:
    =SE.ERRORE(INDICE('0_Nuovo assunto'!$B$5:$L$5;AGGREGA(15;6;(RIF.COLONNA('0_Nuovo assunto'!$B$7:$L8)-RIF.COLONNA('0_Nuovo assunto'!$B$7)+1)/(('0_Nuovo assunto'!$B$7:$L$10="DA FARE")*('0_Nuovo assunto'!$A$7:$A$10='Da Fare'!$D5));CONTA.SE($D$5:D5;D5)));"")

    da tirare giù.
    Ciao.

  13. I seguenti 2 utenti hanno dato un "Like" a pkrome59 per questo post:


  14. #12
    L'avatar di G.Bove
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Milano
    Età
    51
    Messaggi
    870
    Versione Office
    2010
    Likes ricevuti
    24
    Likes dati
    186

    Re: Copiare cella e intestazione se presente una condizione

    [RISOLTO]
    Con il massiccio supporto del mio tutor Marius , condivido gli ultimi sviluppi che mi hanno permesso di chiudere questo thread (start by Ges e Baloon ).
    Due piccoli perfezionamenti:
    1) Nel momento in cui flaggo la cella corrispondente (colonna E) -> la macro dovrebbe anche cambiare il testo da "DA FARE" a "SI"

    2) Vorrei che quando chiudo il file un MSGBOX mi avvisi delle attività in pending.

    ...........
    Macro 1:
    Codice: 
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Application.ScreenUpdating = True
    Cancel = False
        If Target.Row >= 5 And Target.Row <= 29 And Target.Column = 5 Then
        Cancel = True
            If Cells(Target.Row, Target.Column) <> Range("G5").Value Then
                Application.EnableEvents = False
                Cells(Target.Row, Target.Column).Value = Range("G5").Value
                'assume nominativo
                nm = Cells(Target.Row, Target.Column - 1)
                'cerca il nominativo in Foglio 0_Nuovo assunto col. A
                rg = Application.WorksheetFunction.Match(nm, Sheets("0_Nuovo assunto").Range("A:A"), 0)
                'seleziona la voce SI
                Sheets("0_Nuovo assunto").Range("B7:L" & rg) = "SI"
                Application.EnableEvents = True
                
            End If
        End If
        End Sub
    Macro 2 (inserita in ThisWorkbook):
    Codice: 
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim ur As Long, i As Long, risp As Integer
    Cancel = False
    'esamina foglio Da fare col. D
    With Sheets("Da fare")
        ur = .Cells(Rows.Count, 4).End(xlUp).Row
        For i = 5 To ur
            If .Cells(i, 4) <> "" Then
                'se una riga è piena avvisa (Continuo? - SI/NO)
                risp = MsgBox("Ci sono lavori in sospeso nel Foglio Da fare." & vbLf & "Si vuole continuare?", 4 + 64, "Domanda")
                'se la risposta è NO - esce dalla sub
                If risp = 7 Then
                    Cancel = True
                    Exit Sub
                End If
            End If
        Next i
    End With
    End Sub
    Senza dimenticare un grosso grazie alla categoria "maghi delle Formule" in questo thread degnamente rappresentati da PKrome.

    Alla prossima
    Gene

Discussioni Simili

  1. [Risolto] Copiare con una condizione + presenza testo
    Di G.Bove nel forum Domande su Excel in generale
    Risposte: 10
    Ultimo Messaggio: 20/09/16, 19:14
  2. Copiare con condizione
    Di G.Bove nel forum Domande su Excel VBA e MACRO
    Risposte: 19
    Ultimo Messaggio: 20/08/16, 14:37
  3. Copiare cella concatenata se presente testo specifico in combobox
    Di G.Bove nel forum Domande su Excel VBA e MACRO
    Risposte: 12
    Ultimo Messaggio: 10/08/16, 10:10
  4. Copiare valora di una cella da un foglio all'altro con condizione
    Di danylele74 nel forum Domande su Excel in generale
    Risposte: 1
    Ultimo Messaggio: 09/06/16, 12:43
  5. Inserire in testo presente nella cella un valore ricavato da un altra cella
    Di Bestpaul nel forum Domande su Excel in generale
    Risposte: 5
    Ultimo Messaggio: 07/12/15, 17:05

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •