Excel e gli applicativi Microsoft Office Restituzione di più valori da un foglio all'altro vincolato ad una ricerca

Login Registrati
Stai vedendo 25 articoli - dal 76 a 100 (di 121 totali)
  • Autore
    Articoli
  • #42102 Score: 0 | Risposta

    Luca73
    Partecipante
      58 pts

      Ciao avete ragione. scusate, è vero i select con gli activeate sono rimaste come refuso del debugging.... 

      Così come altri dettagli ma avevo fretta e avevo finito. Il tempo a mia disposizione. 

      Ecco spiegato anche il dim senza range (quindi come variant) e il cerca in cells anziché in un range specifico (lo.avevo settato ma male e poi. Non l'ho più sistemato... 

      Domani provvedo

      Grazie

      Ciao

      #42115 Score: 1 | Risposta

      Luca73
      Partecipante
        58 pts

        Ciao A tutti,

        Ecco la macro riveduta e corretta

        Sub CercaeCompila()
        Dim MioDip As Range
        Dim MiaCellaDip As Range
        Dim MioRisultato As Range
        Dim Giorno As Range
        Dim Negozio As Range
        Dim AddressIni As String
        
        Application.ScreenUpdating = False
        Call pulisci_specchietto
        
        For Each MioDip In Worksheets("INFO").Range("F1:F9")
            Set MiaCellaDip = Worksheets("GEN.RAGAZZE (3)").Range("A2:R90").Find(MioDip.Value, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows)
            Set MioRisultato = Worksheets("GEN.RAGAZZE (4)").Range("D1:O52").Find(Trim(MiaCellaDip.Value), LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows)
            If Not MioRisultato Is Nothing Then
                AddressIni = MioRisultato.Address
                Do
                    For Each Giorno In MiaCellaDip.Offset(1, -2).Resize(13, 2)
                        If Giorno = MioRisultato.EntireRow.Cells(1, 1).Offset(-(MioRisultato.Row - 4) Mod 7, 0) Then
                            If Giorno.Offset(0, 1) = "" Then
                                Set Negozio = Giorno.Offset(0, 1)
                            Else
                                Set Negozio = Giorno.Offset(0, 1)
                                Set Negozio = Negozio.Offset(1, 0)
                            End If
                            Negozio = MioRisultato.EntireColumn.Cells(1, 1).Offset(0, -2)
                            Negozio.Offset(0, 1) = FormatDateTime(MioRisultato.Offset(0, -2).Value, vbShortTime)
                            Negozio.Offset(0, 2) = FormatDateTime(MioRisultato.Offset(0, -1).Value, vbShortTime)
                            Exit For
                        End If
                    Next
                    Set MioRisultato = Worksheets("GEN.RAGAZZE (4)").Range("D1:O52").FindNext(MioRisultato)
                Loop While Not MioRisultato Is Nothing And AddressIni <> MioRisultato.Address
            End If
        Next
        Application.ScreenUpdating = True
        End Sub
        #42121 Score: 0 | Risposta

        LucaSR
        Partecipante
          15 pts

          Grande @luca73   

          Ora te ne dico un'altra e vedrai che avrà i suoi frutti   

          Luca73 ha scritto:

          Worksheets("INFO")

          Ma anche le altre istruzioni del genere, dopo essere entrato nell'editor di VBA, clicca sul foglio interessato e nella finestra delle proprietà rinomina il foglio come meglio credi.

          Perché:

          1) codice più leggibile e più facile da scrivere

          2) nel caso in cui l'utente modificasse il nome del foglio, la tua istruzione andrebbe in errore perché fa riferimento ad un foglio inesistente. Invece facendo come ti ho detto andrebbe tutto liscio   

          #42123 Score: 0 | Risposta

          Dadava
          Partecipante
            Sub EsportaPdf()
            
                    Dim datada As String
                    Dim dataa As String
            
                    datada = Cells(3, 2)
                    dataa = Cells(4, 2)
                    
            With ActiveSheet.PageSetup
                    .Orientation = xlLandscape
                    .PrintArea = "$A$1:$R$77"
                    .Zoom = False
                    .FitToPagesTall = False
                    .FitToPagesWide = 1
                  
            End With
            
                    ActiveSheet.ExportAsFixedFormat _
                            Type:=xlTypePDF, _
                            FileName:=("PERCORSO MIO" & datada & " - " & dataa), _
                            Quality:=xlQualityStandard, _
                            IncludeDocProprieties:=False, _
                            IgnorePrintAreas:=False, _
                            From:=1, _
                            To:=5, _
                            OpenAfterPublish:=True
                            
            
            
            End Sub

            ragazzi dov'è che sbaglio qui?

             

             

            #42124 Score: 0 | Risposta

            Luca73
            Partecipante
              58 pts

              @ LucaSR, non ho capito cosa vuoi dire spiega meglio...

               

              #42125 Score: 0 | Risposta

              vecchio frac
              Senior Moderator
                272 pts

                Intanto io riallego la mia proposta, che ho completato prevedendo la possibilità di scegliere un dipendente dall'elenco in Q31 del foglio GEN.RAGAZZE (4) (cioè quello che contiene gli inserimenti giorno per giorno, dipendente per dipendente, nei vari negozi e orari). Quando si sceglie un dipendente dall'elenco viene compilato lo specchietto sottostante (solo per quel dipendente).

                Ho dovuto spacchettare le varie funzioni per rendere pubbliche le due Collections di dati e quindi visibili sia ai pulsanti del riepilogo generale sia all'evento Change del foglio in questione. La soluzione delle due Collections permette di avere i dati già a disposizione per qualsiasi manipolazione (come fossero in un recordset), mentre l'approccio di Luca73 è più statico e lavora una tantum direttamente in loco (non è una critica, è solo un modo diverso di arrivare a una soluzione).

                Allego il file, revisione 4.

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

                vecchio frac
                Senior Moderator
                  272 pts

                  Dadava ha scritto:

                  ragazzi dov'è che sbaglio qui?

                  Molto probabilmente il parametro FileName.

                  #42128 Score: 0 | Risposta

                  LucaSR
                  Partecipante
                    15 pts

                    Luca73 ha scritto:

                    @ LucaSR, non ho capito cosa vuoi dire spiega meglio...

                    Non saprei spiegarlo meglio di come ho fatto   

                    #42129 Score: 0 | Risposta

                    Dadava
                    Partecipante

                      vecchio frac ha scritto:

                      Molto probabilmente il parametro FileName.

                      come potrei scrivere per salvare il file con cella (3,2) "-" cella(4,2)  come nome del file?

                      #42130 Score: 0 | Risposta

                      vecchio frac
                      Senior Moderator
                        272 pts

                        vecchio frac ha scritto:

                        Molto probabilmente il parametro FileName.

                        Oltre a quello (il nome del file è errato perchè conterrebbe delle date che in Windows sono costruite con lo slash e lui non accetta lo slash come parte del nome di file) ExportAsFixedFormat non è un membro dell'oggetto ActiveSheet, devi specificare proprio il foglio con Worksheets(...) oppure col suo codename come ha già detto LucaSR (nota per rispondere alla sua osservazione di prima: non è sempre facile per l'utente capire qual è il codename di un foglio).

                        #42131 Score: 0 | Risposta

                        vecchio frac
                        Senior Moderator
                          272 pts

                          Dadava ha scritto:

                          come potrei scrivere per salvare il file con cella (3,2) "-" cella(4,2)  come nome del file?

                          Puoi formattare la data con Format:

                          Format(datadal, "dd-mm-yyyy")

                          e questo restituisce una cosa valida per Win come

                          13-12-2023

                          #42132 Score: 0 | Risposta

                          Dadava
                          Partecipante

                            Tipo cosi?

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

                            LucaSR
                            Partecipante
                              15 pts

                              vecchio frac ha scritto:

                              nota per rispondere alla sua osservazione di prima: non è sempre facile per l'utente capire qual è il codename di un foglio

                              Posso capirlo ma non saprei come spiegarmi meglio, magari provaci tu @vecchio frac

                              #42135 Score: 0 | Risposta

                              vecchio frac
                              Senior Moderator
                                272 pts

                                Dadava ha scritto:

                                Tipo cosi?

                                Sì. O anche così:

                                Sub EsportaPdf()
                                Dim datada As String
                                Dim dataa As String
                                
                                    datada = Format(Cells(3, 2), "dd-mm-yyyy")
                                    dataa = Format(Cells(4, 2), "mm-dd-yyyy")
                                        
                                    With ActiveSheet
                                        With .PageSetup
                                            .Orientation = xlLandscape
                                            .PrintArea = "$A$1:$R$77"
                                            .Zoom = False
                                            .FitToPagesTall = False
                                            .FitToPagesWide = 1
                                        End With
                                
                                        .ExportAsFixedFormat _
                                            Type:=xlTypePDF, _
                                            Filename:="C:\USERS\....\PERCORSO MIO\" & datada & " - " & dataa & ".pdf", _
                                            Quality:=xlQualityStandard, _
                                            IncludeDocProprieties:=False, _
                                            IgnorePrintAreas:=False, _
                                            From:=1, _
                                            To:=5, _
                                            OpenAfterPublish:=True
                                    End With
                                End Sub

                                Ovviamente devi sistemare la parte mancante col tuo nome utente e verificare che PERCORSO MIO esista.

                                Nota: ho detto una caxxata poco. fa. Naturalmente il metodo ExportAsFixedFormat funziona con ActiveSheet perchè questo è un oggetto di tipo Worksheet. Scusate lo svarione. Ma voi fatele notare queste cose, non abbiate timore di farlo.

                                #42137 Score: 0 | Risposta

                                vecchio frac
                                Senior Moderator
                                  272 pts

                                  Luca73 ha scritto:

                                  @ LucaSR, non ho capito cosa vuoi dire spiega meglio...

                                  Ciao Luca73, quello che intende dire LucaSR è questo: non utilizzare i nomi dei fogli nel codice (quelli delle linguette assegnati dall'utente) perchè sono mutevoli e l'utente può modificarli, mandando potenzialmente in blocco il codice.
                                  Meglio utilizzare il nome interno del foglio, il suo codename, perchè quello è assegnato da Excel e non è facile cambiarlo nemmeno in progettazione.

                                  Il codename si ricava dalla finestra progetti oppure in Immediata, per esempio con il comando "? activesheet.codename".

                                  #42141 Score: 0 | Risposta

                                  LucaSR
                                  Partecipante
                                    15 pts

                                    The Boss   

                                    #42145 Score: 0 | Risposta

                                    Dadava
                                    Partecipante

                                      vecchio frac ha scritto:

                                      Ovviamente devi sistemare la parte mancante col tuo nome utente e verificare che PERCORSO MIO esista.

                                      Mi da sempre questo errore.... il percorso per mac lo visualizza diverso 

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

                                      Dadava
                                      Partecipante

                                        Allego file definitivo @vecchiofrac come mi hai chiesto ieri....

                                        nel foglio TURNI ci sono due pusati, uno per stamparepdf il foglio turni celle A1:R77 e un pulsante per stamparepdf  foglio TOTALE  celleA1:T77..

                                        che ovviamente nn funziona, ma il massimo lo hai già fatto  

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

                                        vecchio frac
                                        Senior Moderator
                                          272 pts

                                          Ah già, si tratta sempre di Mac... non ho idea di come si individua un file su quel file system. 
                                          Mi documento un attimo. Vediamo anche se ExportAsFixedFile è disponibile sulla tua versione di Excel.

                                          #42151 Score: 0 | Risposta

                                          vecchio frac
                                          Senior Moderator
                                            272 pts

                                            Dadava ha scritto:

                                            che ovviamente nn funziona

                                            Non funziona solo la stampa pdf o anche tutto il resto?  

                                            #42152 Score: 0 | Risposta

                                            Dadava
                                            Partecipante

                                              vecchio frac ha scritto:

                                              Non funziona solo la stampa pdf o anche tutto il resto?  

                                              no no... il resto funziona alla grande... ho messo anche formatt cond con colori per identificare subito il dipendente sulla compilazione... il resto alla grande... i due pulsanti erano solo per archiviazione mia degli orari.... NOTA BENE, se ci fosse soltanto un pulsante che mi stampa i due fogli in unico pdf forse anche meglio... 

                                              #42153 Score: 0 | Risposta

                                              vecchio frac
                                              Senior Moderator
                                                272 pts

                                                Nell'ultimo file allegato c'è un errore nella routine di esportazione perchè c'è un parametro scritto male:

                                                IncludeDocProprieties:=False, _

                                                deve essere

                                                IncludeDocProperties:=False, _

                                                #42154 Score: 0 | Risposta

                                                vecchio frac
                                                Senior Moderator
                                                  272 pts

                                                  Dadava ha scritto:

                                                  il resto funziona alla grande

                                                  Comunque dai uno sguardo anche al mio ultimo file, revisione 4, che ha cambiato un po' le carte in tavola (intendo nella stesura del codice) e ti permette di selezionare un singolo dipendente dal menu a tendina in Q31, che era una delle richieste    (nel file che hai postato adesso invece non c'è bozza di questa funzionalità).

                                                  Dadava ha scritto:

                                                  NOTA BENE, se ci fosse soltanto un pulsante che mi stampa i due fogli in unico pdf forse anche meglio

                                                  Si può fare anche questo, basta selezionare i due fogli e applicare ExportAsFixedFormat alla Selezione.

                                                  Esempio, raggruppo i primi due fogli e li esporto:

                                                  workSheets(Array(worksheets(1).name, worksheets(2).name))
                                                  selection.exportasfixedformat xltypepdf, "c:\users\.....\desktop\pippo.pdf"

                                                  #42155 Score: 0 | Risposta

                                                  Dadava
                                                  Partecipante

                                                    over the top funziona... ho cambiato solo questo 

                                                        datada = Format(Cells(2, 2), "mmm-dd-ddd-yy")
                                                        dataa = Format(Cells(3, 2), "mmm-dd-ddd-yy")

                                                    cosi mi restituisce dic-11-lun-23 || dic-17-dom-23.pdf avevo fatto anche un errore sulle celle... erano le 2,2 e 3,2

                                                    #42157 Score: 0 | Risposta

                                                    Dadava
                                                    Partecipante

                                                      vecchio frac ha scritto:

                                                      Si può fare anche questo, basta selezionare i due fogli e applicare ExportAsFixedFormat alla Selezione.

                                                      ecco mi hai fatto risanguinare il naso..... io ad ora ho questo che funziona.... andrebbe aggiunto sempre nell'unico pdf chiamato con lo stesso nome, di agiungere prima la stampa pdf di A1:T54.....    

                                                      Sub EsportaPdf()
                                                      Dim datada As String
                                                      Dim dataa As String
                                                      
                                                          datada = Format(Cells(2, 2), "mmm-dd-ddd-yy")
                                                          dataa = Format(Cells(3, 2), "mmm-dd-ddd-yy")
                                                              
                                                          With ActiveSheet
                                                              With .PageSetup
                                                                  .Orientation = xlLandscape
                                                                  .PrintArea = "$A$1:$R$77"
                                                                  .Zoom = False
                                                                  .FitToPagesTall = False
                                                                  .FitToPagesWide = 1
                                                              End With
                                                      
                                                              .ExportAsFixedFormat _
                                                                  Type:=xlTypePDF, _
                                                                  FileName:="/Users/XXXXXX/Documents/OrarioDipendenti/" & datada & " || " & dataa & ".pdf", _
                                                                  Quality:=xlQualityStandard, _
                                                                  IncludeDocProperties:=False, _
                                                                  IgnorePrintAreas:=False, _
                                                                  From:=1, _
                                                                  To:=5, _
                                                                  OpenAfterPublish:=False
                                                          End With
                                                      End Sub
                                                      
                                                    Login Registrati
                                                    Stai vedendo 25 articoli - dal 76 a 100 (di 121 totali)
                                                    Rispondi a: Restituzione di più valori da un foglio all'altro vincolato ad una ricerca
                                                    Gli allegati sono permessi solo ad utenti REGISTRATI
                                                    Le tue informazioni: