Stellar Blade Un'esclusiva PS5 che sta facendo discutere per l'eccessiva bellezza della protagonista. Vieni a parlarne su Award & Oscar!

Excel Forum Per condividere esperienze su Microsoft Excel

Riepiloghi da creare

  • Messaggi
  • OFFLINE
    nicopana
    Post: 1
    Registrato il: 30/10/2017
    Città: ALBEROBELLO
    Età: 41
    Utente Junior
    Excel per MAC 16.35
    00 30/03/2020 08:37
    Allego alla presente un file, che utilizzo di concerto con i miei colleghi dell'ufficio personale per quadrare le ore lavorative dei dipendenti scaricandole sulle commesse di lavoro attive.

    Il file è mensile, in questo caso riferito al mese di Marzo, e lavorato dall'1 al 16.

    Com'è fatto il file: ci sono innanzitutto tanti fogli giornalieri per quanti sono i giorni di lavoro, quindi nell'esempio ne trovate 16. Dalla colonna A alla T ci sono informazioni anagrafiche (ho tolto nome e cognome per privacy), e gli orari di timbratura. dalla U alla X dei controlli, in particolare incrociare l'eventuale timbratura (e quindi la presenza in cantiere) con le ore scaricate sul rapportino di lavoro della commessa X, e quindi individuare eventuali anomalie (presenza da timbratura e assenza in commessa, o viceversa), che dovranno poi essere corrette. Dalla colonna AB in poi tutte le commesse, con i codici riportati nella riga 3, sono codici alfanumerici, e nella riga 4 i totali del giorno per la commessa. Nella riga 2 c'è un controllo per ogni codice di commessa che ti avverte se tu nella compilazione lo dovessi inserire due volte. Nella cella Y4 c'è un controllo che tutte le ore scaricate sui rapportini delle commesse siano lette nella colonna X. Fin qui quindi com'è costruito il file delle ore giornaliero.

    Io avrei necessità di due fogli di riepilogo, che trovate anche pre-impostati nel file: uno di riepilogo di ore lavorate per persona per giorno, ed usare la colonna D per verificare che il totale letto corrisponde effettivamente alla somma su tutti i singoli fogli giornalieri delle ore scaricate; il secondo di riepilogo di ore lavorate per commessa per giorno, sempre con la stessa verifica di corretta lettura delle ore dai fogli giornalieri sulla colonna C.

    In generale, la pre-impostazione dei due fogli di riepilogo è puramente casuale, si può modificare tranquillamente, quella dei fogli giornalieri no.

    Il mio problema principale è questo: nei due fogli di riepilogo, l'elenco del personale (nel quale vorrei che una persona venisse univocamente individuata) o l'elenco delle commesse (anche qui vorrei che chiaramente una commessa comparisse una sola volta) leggerebbero da fogli giornalieri dove l'elenco di base di persone o commesse non è proprio lo stesso, può cambiare ad esempio se assumo una nuova persona (o la sequenza può essere diversa), oppure una commessa oggi non c'è ma domani si perché appunto è nuova e parte domani con i primi lavori (o anche la sequenza di registrazione non è la stessa). Quindi nei 2 fogli di riepiloghi come fare a creare un elenco che sia "dinamico"? Cioè che una commessa oggi non c'è (cioè non esiste perché non ha ore lavorate) ma ci sarà domani, vuol dire che nell'elenco comunque deve esserci. O una persona, per il fatto che sia stata assunta a partire dal 10 Marzo ad esempio, nell'elenco deve esserci...

    Spero di aver esposto chiaramente il mio problema.
  • OFFLINE
    dodo47
    Post: 2.613
    Registrato il: 06/04/2013
    Utente Veteran
    2010
    00 30/03/2020 10:26
    ciao
    lavoro complesso a quanto ho capito...C'è prima da analizzare ogni giorno in cerca di eventuali errori, poi riportare il tutto sui riepiloghi.

    Credo che non si possa far a meno di programmazione....che conoscenze hai del vba ?

    saluti



    Domenico
    Win 10 - Excel 2016
  • OFFLINE
    nicopana
    Post: 1
    Registrato il: 30/10/2017
    Città: ALBEROBELLO
    Età: 41
    Utente Junior
    Excel per MAC 16.35
    00 30/03/2020 10:34
    Praticamente pari a 0

    Se è una cosa complicata, pazienza
  • OFFLINE
    nicopana
    Post: 2
    Registrato il: 30/10/2017
    Città: ALBEROBELLO
    Età: 41
    Utente Junior
    Excel per MAC 16.35
    00 03/04/2020 18:28
    Ho forse pensato ad una soluzione, però avrei bisogno di una mano per risolvere il problema di questo file.

    Nel file allegato, ci sono tanti fogli per quanti sono i giorni di un mese (teoricamente da 1 a 31, e ne ho messi solo 2 per aadesso), con all'interno una lista di persone, che riepilogo/richiamo nel foglio Riep tramite la funzione indice+indiretto.

    Sarebbe possibile nella colonna AI ricreare una lista fatta da tutti i nomi che possono comparire nei vari giorni (non è importante l'ordine) ma che vengano presi in conto in maniera univoca (cioè anche se "ciccio" lo trovo in due giorni diversi, lo voglio considerare una volta sola, non prendo nemmeno ora in considerazione i casi di omonimia)?

    Sulla base dell'esempio fatto, ho riportato in AJ manualmente il risultato che vorrei però mi venisse calcolato automaticamente

    Se vedete, nella cella AI6 avevo già provato una formula matriciale, che però estesa a tutte e 700 le righe che mi dovranno servire, rendono il file ingestibile nel calcolo, diventa pesantissimo. Ci sarebbe un'altra soluzione?
  • ABCDEF@Excel
    00 04/04/2020 17:44
    Ps. Le formule sono giuste (e tù zero in VBA?)
    Di norma Excel usa la RAM per elaborare, ora non chiedo la potenza del PC (nemmeno la memoria disponibile). Comunque alcune formule possono essere semplificate. Immaginiamoci con 20/30 righe sopra ogni mese (dove riepiloghi ogni cosa), la formula finale in "AI" sarebbe di sole 20/30 righe e non 700 righe.
    Ognuno può creare i (giorni) come desidera, però non esiste un metodo più semplice?
  • OFFLINE
    nicopana
    Post: 3
    Registrato il: 30/10/2017
    Città: ALBEROBELLO
    Età: 41
    Utente Junior
    Excel per MAC 16.35
    00 04/04/2020 17:50
    ABCDEF@Excel, 04/04/2020 17:44:

    Ps. Le formule sono giuste (e tù zero in VBA?)
    Di norma Excel usa la RAM per elaborare, ora non chiedo la potenza del PC (nemmeno la memoria disponibile). Comunque alcune formule possono essere semplificate. Immaginiamoci con 20/30 righe sopra ogni mese (dove riepiloghi ogni cosa), la formula finale in "AI" sarebbe di sole 20/30 righe e non 700 righe.
    Ognuno può creare i (giorni) come desidera, però non esiste un metodo più semplice?

    In realtà la lista in ogni giorno proviene da uno scarico direttamente dall'ufficio personale, e quindi si tratta di un db impiegati, che al momento è di circa 500 righe, e su questo non ci si può far nulla, è quel tipo di lista che viene incollata ogni giorno in un foglio nuovo, da 1 a 31 per intenderci.

    Però partendo da questa tipologia di foglio giornaliero, che ho dovuto fare cosi perché non è di mio diretto utilizzo, per qualunque altra ottimizzazione ben venga.

    Cosa intendi ad esempio con 20/30 righe sopra ogni mese?
  • ABCDEF@Excel
    00 05/04/2020 08:57
    >>>Cosa intendi ad esempio con 20/30 righe sopra ogni mese?
    Esempio se per ogni foglio inserisci in alto 20/30 righe, dove puoi fare tutti i calcoli che desideri, la formula finale in AI6 sarà più leggera (riferita a solo 30 righe).

    Avrei fatto un VBA, mà non capisco (1° files allegato), perchè in foglio (1) ci sono 8 voci in AB3:AI3, invece in foglio (2) quasi 30 voci
    Per fare un VBA, devo sapere quante voci ci sono in totale
  • OFFLINE
    nicopana
    Post: 4
    Registrato il: 30/10/2017
    Città: ALBEROBELLO
    Età: 41
    Utente Junior
    Excel per MAC 16.35
    00 05/04/2020 13:54
    Nella riga 3 ci sono le commesse su cui giornalmente gli impiegati vengono scaricati.

    Ti allego innanzitutto il file definitivo di Marzo, cosi ti rendi conto anche di quale sia la mole di dati mensili da dover gestire, e sulla riga 3 per adesso penso che lavorare al massimo su 100 celle vada bene, cioè giornalmente non si dovrebbe mai superare il numero di 100 commesse su cui possono essere spalmati gli impiegati. Mentre per il numero di impiegati, penso che 700 sia sufficiente

    Io ero arrivato al foglio "Riepilogo giorni dip" (che però era una partenza), per creare nella colonna AI (a partire dalla cella AI6), la lista univoca delle persone che hanno lavorato in tutti i giorni del mese, a cui avrei puntato nel foglio "Riepilogo per persona", che invece era già pronto con i dati da ricavare. Mi serviva appunto la lista univoca delle persone impiegate nel mese. Solo che in quel foglio "Riepilogo giorni dip", se tiro giù la formula in AI6, il calcolo mi si impalla e il file diventa ingestibile.

    Se trovavo poi una soluzione per le persone, avrei poi dovuto trovare una soluzione per le commesse univocamente movimentate nel mese, da portare poi nel foglio "Riepilogo per commessa"

    E tanti auguri di buone palme
  • ABCDEF@Excel
    00 06/04/2020 14:56
    Non sò cosa dire (pesa già oltre 3MB, ho trascinato la formula per 50/100 righe e pure io ho Excel in difficoltà e i risultati mi sembrano doppioni.
    Ho creato un VBA se Ti interessa, premi ALT+F11 in alto inserisci Modulo1 e incolli sulla destra (poi lo abbinerai ad un bottone). Salva il files come .xlsm "non sono sicuro, prova anche salvare come .xlsb (pesa la metà) e verifica che le formule funzionano a dovere"

    Sub univoci()
    Dim ur, x, rr
    rr = 1
    Sheets("Riepilogo giorni dip").Activate
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    ur = Cells(1048576, 35).End(xlUp).Row
    If ur > 5 Then Range("$AI$6:$AI$" & ur) = ""
    For x = 3 To 33
        ur = Cells(1048576, x).End(xlUp).Row
        Range(Cells(6, x), Cells(ur, x)).Copy
        Cells(rr, 36).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        rr = rr + ur
    Next
    ur = Cells(1048576, 36).End(xlUp).Row
    ActiveSheet.Range("$AJ$1:$AJ$" & ur).RemoveDuplicates Columns:=1, Header:=xlNo
    ur = Cells(1048576, 36).End(xlUp).Row
        ActiveWorkbook.Worksheets("Riepilogo giorni dip").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Riepilogo giorni dip").Sort.SortFields.Add Key:= _
            Range("AJ1:AJ" & ur), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers
        With ActiveWorkbook.Worksheets("Riepilogo giorni dip").Sort
            .SetRange Range("AJ1:AJ" & ur)
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
        Range("AJ1:AJ" & ur).Copy
        Range("AI6").PasteSpecial
        Columns("AJ") = ""
    Application.ScreenUpdating = True
    Application.Calculation = xlAutomatic
    MsgBox "Fatto"
    End Sub
    
  • OFFLINE
    nicopana
    Post: 5
    Registrato il: 30/10/2017
    Città: ALBEROBELLO
    Età: 41
    Utente Junior
    Excel per MAC 16.35
    00 06/04/2020 15:25
    Ti dico la verità, di funzionare funziona, li mette in ordine numerico crescente nella colonna AI, e ho verificato anche le occorrenze, che tutti siano univoci per intenderci.

    Finisco di fare qualche altra verifica e torno da te.
  • ABCDEF@Excel
    00 06/04/2020 16:34
    Mi sono dimenticato di dire "quelle X+(N.B) in AC-AF, non ci devono essere.
    Inoltre le colonne C-AG per un mese di 31 giorni, anche se febbraio avrà 28g le colonne vuote devono esserci.
    Per finire mi sono appoggiato alla colonna AJ (lasciala vuota) non potrai usarla con formule.
  • OFFLINE
    dodo47
    Post: 2.640
    Registrato il: 06/04/2013
    Utente Veteran
    2010
    00 06/04/2020 17:19
    Ciao
    mi permetto suggerire:

    al posto di quel tabellone pieno di formule (Riepilogo giorni dip) che appesantisce notevolmente il già corposo documento, perchè non prendere da ogni singolo foglio (col.A) il codice, alimentare una collection che impedisce la duplicazione, e poi stampare quella?

    Quanto segue elenca in "Riepilogo giorni dip", colonna A (a partire da riga6) i codici univoci di tutti i fogli.

    Laddove occorrano i nomi o le commesse si valuterà un'altra colonna dei vari fogli

    saluti

    Sub UniqueList()
    Dim r As Range
    Dim rng As Range
    Dim ar As Variant
    Dim var As Variant
    
    With CreateObject("scripting.dictionary")
        For j = 1 To Sheets.Count
            If Left(Sheets(j).Name, 9) <> "Riepilogo" Then
                ur = Sheets(j).Range("A" & Rows.Count).End(xlUp).Row
                For Each rng In Sheets(j).Range("A5:A" & ur)
                    var = .Item(rng.Value)
                    If .Item(rng.Value) = "codice" Then Stop
                Next
                ar = .Keys
            End If
        Next j
    End With
    Worksheets("Riepilogo giorni dip").Range("A6").Resize(UBound(ar) + 1) = Application.Transpose(ar)
    End Sub

    Eventualmente effettuare il sort



    [Modificato da dodo47 06/04/2020 17:23]
    Domenico
    Win 10 - Excel 2016
  • OFFLINE
    nicopana
    Post: 6
    Registrato il: 30/10/2017
    Città: ALBEROBELLO
    Età: 41
    Utente Junior
    Excel per MAC 16.35
    00 06/04/2020 17:45
    Re:
    dodo47, 06/04/2020 17:19:

    Ciao
    mi permetto suggerire:

    al posto di quel tabellone pieno di formule (Riepilogo giorni dip) che appesantisce notevolmente il già corposo documento, perchè non prendere da ogni singolo foglio (col.A) il codice, alimentare una collection che impedisce la duplicazione, e poi stampare quella?

    Quanto segue elenca in "Riepilogo giorni dip", colonna A (a partire da riga6) i codici univoci di tutti i fogli.

    Laddove occorrano i nomi o le commesse si valuterà un'altra colonna dei vari fogli

    saluti

    Sub UniqueList()
    Dim r As Range
    Dim rng As Range
    Dim ar As Variant
    Dim var As Variant
    
    With CreateObject("scripting.dictionary")
        For j = 1 To Sheets.Count
            If Left(Sheets(j).Name, 9) <> "Riepilogo" Then
                ur = Sheets(j).Range("A" & Rows.Count).End(xlUp).Row
                For Each rng In Sheets(j).Range("A5:A" & ur)
                    var = .Item(rng.Value)
                    If .Item(rng.Value) = "codice" Then Stop
                Next
                ar = .Keys
            End If
        Next j
    End With
    Worksheets("Riepilogo giorni dip").Range("A6").Resize(UBound(ar) + 1) = Application.Transpose(ar)
    End Sub

    Eventualmente effettuare il sort






    L'ho provata perché in effetti il tabellone non mi serve a gran che, l'avevo giusto creato per rendere più funzionale la macro, però se in effetti può essere evitato meglio, e di fatti è cosi.

    Il sort non è comunque necessario.

    Approfitterei per chiederti se nella colonna B del foglio di Riepilogo, si potrebbe aggiungere il campo "Cognome e Nome" che trovi nella colonna B di ogni foglio giornaliero, cosi avrei una lista di matricola e cognome/nome univoca e completa
  • OFFLINE
    dodo47
    Post: 2.642
    Registrato il: 06/04/2013
    Utente Veteran
    2010
    00 06/04/2020 19:50
    ciao

    Sub UniqueList()
        Dim oDic As Object
        Dim rng As Range
        Dim arrKeys As Variant, arrItems As Variant
        Dim j As Long, ur As Long
        Set oDic = CreateObject("scripting.dictionary")
        With oDic
            For j = 1 To Sheets.Count
                If Left(Sheets(j).Name, 9) <> "Riepilogo" Then
                    ur = Sheets(j).Range("A" & Rows.Count).End(xlUp).Row
                    For Each rng In Sheets(j).Range("A5:A" & ur).Cells
                        If Not .Exists(rng.Value) Then
                            .Add Key:=rng.Value, Item:=rng.Offset(0, 1).Value
                        End If
                    Next rng
                End If
            Next j
            arrKeys = .Keys
            arrItems = .Items
        End With
        With Worksheets("Riepilogo giorni dip")
            .Range("A6").Resize(oDic.Count) = Application.Transpose(arrKeys)
            .Range("B6").Resize(oDic.Count) = Application.Transpose(arrItems)
        End With
    End Sub


    saluti



    Domenico
    Win 10 - Excel 2016
  • OFFLINE
    nicopana
    Post: 7
    Registrato il: 30/10/2017
    Città: ALBEROBELLO
    Età: 41
    Utente Junior
    Excel per MAC 16.35
    00 07/04/2020 09:08
    Perfetto grazie, funziona bene.

    L'ultima cosa e giuro che chiudo questo thread: vorrei fare una copia di questa macro, e quindi del foglio con i risultati, dove, anziché andare a riportare gli univoci codici matricola (che sono nella colonna A di ogni foglio), mi servirebbe leggere anche gli univoci codici commessa, che sono in ogni foglio dalla cella AB3 in poi vs dx

    Avrei anche provato a modificare io la macro, però non so bene come comporre la riga

    ur = Sheets(j).Range("A" & Rows.Count).End(xlUp).Row
    For Each rng In Sheets(j).Range("A5:A" & ur).Cells


    che dovrebbe essere quella poi addetta alla lettura dei fogli mensili.

    il tutto da riportare all'interno di un altro foglio che si può ad esempio chiamare Riepilogo giorni commessa

    Riallego il file su cui lavorare con le modifiche già apportate
    [Modificato da nicopana 07/04/2020 09:09]
  • OFFLINE
    dodo47
    Post: 2.643
    Registrato il: 06/04/2013
    Utente Veteran
    2010
    00 07/04/2020 10:55
    ti suggerisco di inserire nelle altre macro il calcolo manuale all'inizio e ripristinarlo alla fine.

    Che senso ha utilizzare una macro per evitare l'utilizzo di formule e poi utilizzare formule (foglio Riepilogo per persona) per prendere codici e nomi da Riepilogo giorni dip ??

    Comunque:
    Sub UniqueComm()
        Dim oDic As Object
        Dim rng As Range
        Dim arrKeys As Variant, arrItems As Variant
        Dim j As Long, ur As Long
        Set oDic = CreateObject("scripting.dictionary")
        Application.ScreenUpdating = False
        Application.Calculation = xlCalculationManual
        With oDic
            For j = 1 To Sheets.Count
                If Left(Sheets(j).Name, 9) <> "Riepilogo" Then
                    Sheets(j).Select
                    lc = Sheets(j).Cells(3, Columns.Count).End(xlToLeft).Column
                    For Each rng In Sheets(j).Range(Cells(3, 28), Cells(3, lc))
                        If Not .Exists(rng.Value) Then
                            .Add Key:=rng.Value, Item:=rng.Value
                        End If
                    Next rng
                End If
            Next j
            arrKeys = .Keys
        End With
        Worksheets("Riepilogo giorni commessa").Select
        Range("A6").Resize(oDic.Count) = Application.Transpose(arrKeys)
        Application.ScreenUpdating = True
        Application.Calculation = xlCalculationAutomatic
        
    End Sub


    Saluti





    Domenico
    Win 10 - Excel 2016
  • OFFLINE
    nicopana
    Post: 8
    Registrato il: 30/10/2017
    Città: ALBEROBELLO
    Età: 41
    Utente Junior
    Excel per MAC 16.35
    00 07/04/2020 11:36
    Purtroppo siccome questo file non è mio esclusivo utilizzo, ma lo usano anche altre persone che in generale con il pc sono un pò scarsine, allora i fogli con le tue macro li terrò nascosti, e ci punterò in questi altri due foglio di riepilogo proprio per loro più semplice lettura, e non posso nemmeno tanto mettere il calcolo manuale, altrimenti potrebbero confondersi nell'andare a riempire i fogli singoli mensili dove ci sono le somme

    La cosa che però non capisco adesso è questa: mentre per il "riepilogo per persona" il test in D6 mi dà risultato positivo, cioè la somma delle ore lette in ogni giorno (riga 4 per un totale di 43.718 h) era uguale a quella della colonna E (somma delle ore giornaliere dei dipendenti estratti con la tua macro), quindi tutte le persone erano correttamente contemplate e quadrano, questo non accade sulle commesse.

    Nel foglio "Riepilogo per commessa", nella cella C6 il controllo mi dà un errore, infatti alle solite 43.718 h nella riga 4, non corrisponde la somma delle ore delle commesse estratte dalla tua macro, come se non le leggesse proprio tutte in maniera univoca? e quindi se ne perde qualcuna? perché sulla colonna D mi da una somma di 43.176, quindi ne mancano circa 500-600 all'appello.
    Strano

    Ti riallego il file, con le modifiche fatte
  • OFFLINE
    nicopana
    Post: 9
    Registrato il: 30/10/2017
    Città: ALBEROBELLO
    Età: 41
    Utente Junior
    Excel per MAC 16.35
    00 07/04/2020 11:56
    Mi sembra altresì strano perché poi in ogni foglio mensile, nella riga 2 ho impostato un controllo grossolano che diventa rosso in corrispondenza di ogni codice commessa in riga 3 se è stato inserito 2 volte, mi sono spulciato singolarmente i vari fogli e non ce ne sono di questi errori, quindi in ogni foglio le commesse sono state inserite in maniera univoca
  • OFFLINE
    nicopana
    Post: 10
    Registrato il: 30/10/2017
    Città: ALBEROBELLO
    Età: 41
    Utente Junior
    Excel per MAC 16.35
    00 07/04/2020 12:06
    Lascia stare, stupido io che non prendevo per bene la somma. Adesso funziona tutto, grazie mille davvero
  • OFFLINE
    dodo47
    Post: 2.645
    Registrato il: 06/04/2013
    Utente Veteran
    2010
    00 07/04/2020 12:09
    ciao
    non entro nel merito del tuo lavoro, ti dico solo che tutte le commesse con ripetizione sono 1054 che univoche si riducono a 41, vedi allegato, come estratte dalla macro.

    saluti

    ok x aver risolto


    [Modificato da dodo47 07/04/2020 12:11]
    Domenico
    Win 10 - Excel 2016
  • OFFLINE
    nicopana
    Post: 11
    Registrato il: 30/10/2017
    Città: ALBEROBELLO
    Età: 41
    Utente Junior
    Excel per MAC 16.35
    00 07/04/2020 12:28
    Un piccolo dettaglio: ma per fare gli aggiornamenti nei vari giorni di lista univoca dipendenti e lista univoca commesse, mi sembra che devo cancellare tutto l'elenco esistente, e rilanciare la macro.

    Non mi sembra che lui cancelli tutto e ricalcoli, te lo chiedo perché adesso sto tenendo un file pulito, da usare come start nei vari mesi, dove ho cancellato tutti i foglio tranne il giorno 1, e all'interno ho cancellato ad esempio tutte le commesse lasciandone solo una dal titolo xxxx

    Ho lanciato la macro, mi ha messo questo codice all'inizio, ma mi ha lasciato tutto il resto sotto.

    Sarebbe forse meglio che ad ogni lancio macro lui cancelli tutto quello che è presente da A6 in giù (sia per dipendenti che per commesse) e ricalcoli il tutto su una colonna pulita, cosi siamo sicuri di non aver lasciato nulla dei giorni passati
  • OFFLINE
    dodo47
    Post: 2.646
    Registrato il: 06/04/2013
    Utente Veteran
    2010
    00 07/04/2020 12:40
    Re:
    nicopana, 07/04/2020 12:28:


    Sarebbe forse meglio che ad ogni lancio macro lui cancelli tutto quello che è presente da A6 in giù (sia per dipendenti che per commesse) e ricalcoli il tutto su una colonna pulita, cosi siamo sicuri di non aver lasciato nulla dei giorni passati



    si certo, sono d'accordo

    saluti





    Domenico
    Win 10 - Excel 2016
  • OFFLINE
    nicopana
    Post: 12
    Registrato il: 30/10/2017
    Città: ALBEROBELLO
    Età: 41
    Utente Junior
    Excel per MAC 16.35
    00 07/04/2020 12:52
    cosa dovrei modificare nel testo delle 2 macro?
  • OFFLINE
    dodo47
    Post: 2.647
    Registrato il: 06/04/2013
    Utente Veteran
    2010
    00 07/04/2020 13:00
    ciao
    prima del risize che è l'istruzione che copia i valori in A6 dei fogli interessati, cancella tale colonna da A6 in poi; l'istruzione che puoi usare è:
    range(TuoRange).clearcontents

    ora mi auguro che con un po' di sforzo tu riesca da solo....

    saluti




    [Modificato da dodo47 07/04/2020 13:00]
    Domenico
    Win 10 - Excel 2016
  • OFFLINE
    nicopana
    Post: 13
    Registrato il: 30/10/2017
    Città: ALBEROBELLO
    Età: 41
    Utente Junior
    Excel per MAC 16.35
    00 07/04/2020 13:10
    avendo scritto

    Range(A6, B700).ClearContents

    ed avendolo inserito prima del primo resize

    mi restituisce questo errore

    Errore di run-time '1004'
    Metodo 'Range' dell'oggetto '_Global' non riuscito
  • OFFLINE
    dodo47
    Post: 2.648
    Registrato il: 06/04/2013
    Utente Veteran
    2010
    00 07/04/2020 13:20
    prova a vedere qual è la sintassi di Range:

    https://docs.microsoft.com/en-us/office/vba/api/excel.range(object)

    non che non voglia dirtelo, ma un minimo di conoscenza base lo devi avere....

    Fai sapere....saluti




    [Modificato da dodo47 07/04/2020 13:20]
    Domenico
    Win 10 - Excel 2016
  • OFFLINE
    nicopana
    Post: 14
    Registrato il: 30/10/2017
    Città: ALBEROBELLO
    Età: 41
    Utente Junior
    Excel per MAC 16.35
    00 07/04/2020 14:46
    Di regola dovrei aver fatto perché non mi sono stati restituiti errori

    Range("A6:B700").clearcontents

    Ho fatto anche delle prove ad aggiungere o togliere dati di persone o commesse e funziona.

    Adesso definitivamente grazie.

    Domanda che poco c'entra con questo specifico thread: se qualche neofita vorrebbe affacciarsi al VBA, secondo te da dove dovrebbe cominciare? Esiste un corso particolare che tu consigli per imparare già dalle basi?
  • OFFLINE
    dodo47
    Post: 2.649
    Registrato il: 06/04/2013
    Utente Veteran
    2010
    00 07/04/2020 16:28
    ciao
    mi fa piacere che qualcuno abbia voglia di imparare qualcosa, non è poi così scontato.

    non ne conosco particolari, ce ne sono tanti...vedi anche youtube

    Inizia con qualcosa di semplice, anche inerente a quello che stai facendo e con l'aiuto di ricerche e tante prove e riprove vedrai che a poco a poco riuscirai a fare lavori in autonomia.

    (quanto ti ho fornito è ad un livello medio di conoscenza, non spaventarti)

    Poi alla fine ci sono i forum.....

    saluti e buon tutto




    Domenico
    Win 10 - Excel 2016
  • OFFLINE
    nicopana
    Post: 15
    Registrato il: 30/10/2017
    Città: ALBEROBELLO
    Età: 41
    Utente Junior
    Excel per MAC 16.35
    00 07/04/2020 16:47
    Mi piacerebbe anche esser stato già a metà del tuo livello di conoscenza...

    Va bene, ci proverò
  • OFFLINE
    nicopana
    Post: 19
    Registrato il: 30/10/2017
    Città: ALBEROBELLO
    Età: 41
    Utente Junior
    Excel per MAC 16.35
    00 19/04/2020 12:58
    Scusate se riprendo la discussione.

    Vorrei capire se ci fosse la possibilità, in un nuovo foglio, di avere anche su un solo rigo dove ci sono le celle da 1 a 31 (giorni del mese) per poter sapere ogni persona (codice) su che commessa ha lavorato, o su quella commessa ne giorno x che persone (codice) hanno lavorato
1