Excel e gli applicativi Microsoft Office Cancellazione righe, sistemazione e codifica csv-utf8

Login Registrati
Stai vedendo 15 articoli - dal 1 a 15 (di 15 totali)
  • Autore
    Articoli
  • #38511 Score: 0 | Risposta

    Pasquale
    Partecipante

            Buonasera,

      mi rivolgo a tutti Voi per risolvere un problema dove al momento non sono riuscito a risolvere in maniera automatica, se mai possibile farlo. Dobbiamo usare, per il lavoro di un supermercato, due programmi, il primo gestisce solo le casse e lo stesso è collegato con la piattaforma del nostro fornitore, quindi non ho lo scarico in automatico degli articoli venduti, il secondo gestisce la totale gestione. La sera scarico il file in excel, primo file allegato e righe da cancellare evidenziate, prima cancello le righe che non mi servono e con la funzione dati sistemo il file, secondo file in allegato, fino ad arrivare al terzo file che converto in csv utf 8 per poi poterlo importare nel programma. Spero in un Vostro gentile aiuto nel poter automatizzare il processo e potermi allineare i mesi pregressi. 

       

            

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

      albatros54
      Moderatore
        89 pts

        Ciao, capito poco.

        Nel primo file tu dici che hai evidenziato le righe che non ti servono e che vuoi cancellare,

        nel secondo file vedo che le righe che tua hai evidenziato nel primo file non sono state cancellate, il terzo file è quello a cui vuoi arrivare?

         

        Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
        Sempre il mare, uomo libero, amerai!
        ( Charles Baudelaire )
        #38516 Score: 0 | Risposta

        Pasquale
        Partecipante

          Ciao,

          in primis grazie per l'attenzione. Forse, sicuramente, ho commesso un errore a postare il file.

          Comunque si il terzo file è il mio arrivo.

          #38517 Score: 0 | Risposta

          patel
          Moderatore
            51 pts

            Pasquale ha scritto:

            fino ad arrivare al terzo file che converto in csv utf 8 per poi poterlo importare nel programma.

            Ma tu non hai allegato il csv a cui vuoi arrivare.

            #38518 Score: 0 | Risposta

            Pasquale
            Partecipante

              Ciao,

              grazie, ma il csv non è altro che il terzo file allegato convertito in csv.

              #38519 Score: 0 | Risposta

              albatros54
              Moderatore
                89 pts

                Ho preso in considerazione che :

                i codici dei tuoi prodotti cominciano tutti con "P" è sono di lunghezza 7, anche se nel primo file che hai allegato alcuni sono falsati(errore di digitazione, secondo me)

                non so cone sei combinato a VBA, comunque, ti posto questo codice che crea il tuo terzo file(no cvs),il codice lo devi inserire in un modulo del VBA del primo file che hai allegato, una volta lanciato, ti crea un file "Archivio" che dovrebbe essere conforme ai dati del terzo foglio.

                Option Explicit
                Sub m()
                    Dim lastrow As Integer, x As Integer
                    Dim sh As Worksheet, sh1 As Worksheet
                    Dim rng As Range, cl As Range
                    Dim carattere As String, numero As String, testo As String, percorso As String
                    Dim nomefile As String
                    Dim numerocar As Integer
                    lastrow = Cells(Rows.Count, 1).End(xlUp).Row
                    Set rng = Range("a1:a" & lastrow)
                    Set sh = ThisWorkbook.Worksheets("sheet1")
                    Set sh1 = ActiveWorkbook.Worksheets.Add
                    sh1.Name = "Archivio"
                
                    sh1.Range("A1").Offset(0, 0) = "Codicearticolo"
                    sh1.Range("A1").Offset(0, 1) = "Descrizionearticolo"
                    x = 2
                    With sh
                        For Each cl In rng
                            carattere = Left(cl, 1)
                            If carattere = "P" Then
                                numero = Left(cl, 7)
                                sh1.Range("a" & x) = numero
                                numerocar = Len(numero)
                                testo = Right(cl, (Len(cl) - numerocar))
                                sh1.Range("b" & x) = testo
                                sh1.Range("c" & x) = Format(cl.Offset(0, 1), "0.00")
                                x = x + 1
                            End If
                        Next
                        percorso = ThisWorkbook.Path & "\"
                        nomefile = ActiveSheet.Name
                        ActiveSheet.Copy
                        Columns("A:A").EntireColumn.AutoFit
                        Columns("B:B").EntireColumn.AutoFit
                        Columns("C:C").EntireColumn.AutoFit
                        ActiveWorkbook.SaveAs Filename:=percorso & nomefile
                        ActiveWindow.Close
                
                        '
                    End With
                
                End Sub
                
                
                

                 

                 

                Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
                Sempre il mare, uomo libero, amerai!
                ( Charles Baudelaire )
                #38520 Score: 0 | Risposta

                Pasquale
                Partecipante

                  Ciao,

                  appena a casa provo la tua soluzione. Per adesso non so come ringraziarti. Ti terrò aggiornato per darti il risultato di tutto. Ti volevo chiedere visto che devo scaricare diversi giorni, considera che sono almeno 90 gg, quindi dovrei inserire ad ogni file la tua soluzione, secondo te è possibile avere una soluzione del tipo;

                  a) scarico del file;

                  b) riportare lo stesso in un programmino;

                  è poter salvare il file generato.

                  Secondo te possibile?

                    Grazie

                  #38521 Score: 0 | Risposta

                  Pasquale
                  Partecipante

                    Ti allego il file generato, sbaglio qualcosa?

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

                    albatros54
                    Moderatore
                      89 pts

                      nel file che hai allegato nel post precedente i dati erano nella colonna "A", in questo file i dati sono nella colonna"B", quindi nel codice devi settare il range"rng" nella nuova colonna  e settare anche "lastrow".

                      da:

                      lastrow = Cells(Rows.Count, 1).End(xlUp).Row
                      Set rng = Range("a1:a" & lastrow)

                      diventa:

                      lastrow = Cells(Rows.Count, 2).End(xlUp).Row
                      Set rng = Range("B2:B" & lastrow)

                      modifica anche:

                      sh1.Range("c" & x) = Format(cl.Offset(0, 2), "0.00")

                      PS: quando allegate i file , cercate di mantenere sempre la stessa struttura, perchè altrimenti ci troviamo sempre a modificare i codici, Excel "ODIA" le celle

                      "UNITE"  

                      Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
                      Sempre il mare, uomo libero, amerai!
                      ( Charles Baudelaire )
                      #38527 Score: 0 | Risposta

                      Pasquale
                      Partecipante

                        buongiorno, perfetto non so come ringraziarti. Ti allego il file generato. Sono ritornato alla prima stesura del codice, "lastrow = Cells(Rows.Count, 1).End(xlUp).Row Set rng = Range("a1:a" & lastrow)", perchè dal file che salvo effettivamente i dati sono quelli scritti. Ti avevo posto un quesito che riguardava la possibilità di scaricare i file e non dover sempre scrivere il modulo per ogni file, esiste una soluzione?

                        Grazie

                         

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

                        Pasquale
                        Partecipante

                          dimmi cosa ne pensi se lo trovi corretto e che modifiche dobbiamo fare;

                          posso fare una seconda macro associando il codice da te scritto?

                          grazie

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

                          albatros54
                          Moderatore
                            89 pts

                            allora, considerazione:

                            i file, che vuoi scompattare,debbono avere tutti la stessa struttura.

                            scenario:

                            crea una dir, inserisci tutti i file che vuoi scompattare in questa dir:

                            crea un file"master", sempre nella stessa dir,vuoto, in un modulo VBA inserisci il codice che ti posto, il codice non fa altro che aprire uno alla volta i tuoi file, escluso il file "master" con cui stai lavorando, scompattarlo, salvarlo con la data l'ora e il nome del file.

                            Fai sapere

                             

                            Option Explicit
                            Public Sub copia()
                                Dim carattere As String, numero As String, testo As String, percorso As String
                                Dim numerocar As Integer
                                Dim nomefile As String
                                Dim objFSO As Object
                                Dim objFolder As Object
                                Dim objFile As Object
                                Dim wk As Workbook
                                Dim rng As Range, cl As Range
                                Dim r As Long, lastrow As Integer, x As Integer
                                Dim sPath As String, myname As String
                                Dim sh1 As Worksheet, sh As Worksheet
                                With Application
                                    .ScreenUpdating = False
                                End With
                                sPath = ThisWorkbook.Path
                                Set objFSO = CreateObject("Scripting.FileSystemObject")
                                Set objFolder = objFSO.GetFolder(sPath)
                                For Each objFile In objFolder.Files
                                    myname = Dir(objFile, vbNormal)
                                    If Left(myname, 1) <> "~" And (Right(myname, Len(myname) - InStrRev(myname, ".")) Like "*xl*") And (myname <> ThisWorkbook.Name) Then
                            
                                        Set wk = Workbooks.Open(objFile.Path)
                                        lastrow = Cells(Rows.Count, 1).End(xlUp).Row
                                        Set rng = Range("a1:a" & lastrow)
                            
                                        Set sh1 = ActiveWorkbook.Worksheets.Add
                                        sh1.Name = "Archivio"
                                        sh1.Range("A1").Offset(0, 0) = "Codicearticolo"
                                        sh1.Range("A1").Offset(0, 1) = "Descrizionearticolo"
                                        x = 2
                                        With sh
                                            For Each cl In rng
                                                carattere = Left(cl, 1)
                                                If carattere = "P" Then
                                                    numero = Left(cl, 7)
                                                    sh1.Range("a" & x) = numero
                                                    numerocar = Len(numero)
                                                    testo = Right(cl, (Len(cl) - numerocar))
                                                    sh1.Range("b" & x) = testo
                                                    sh1.Range("c" & x) = Format(cl.Offset(0, 1), "0.00")
                                                    x = x + 1
                                                End If
                                            Next
                                            percorso = ThisWorkbook.Path & "\"
                                            nomefile = ActiveSheet.Name
                                            ActiveSheet.Copy
                                            Columns("A:C").EntireColumn.AutoFit
                            
                                            ActiveWorkbook.SaveAs Filename:=percorso & Format(Now, "dd-mm-yyyy _ hh-mm-ss") & myname
                                            ActiveWindow.Close
                                            wk.Close Savechanges:=False
                                            '
                                        End With
                                    End If
                                Next
                            
                            
                                With Application
                                    .ScreenUpdating = True
                                End With
                                Set wk = Nothing
                                Set sh = Nothing
                                Set objFile = Nothing
                                Set objFolder = Nothing
                                Set objFSO = Nothing
                            
                            End Sub
                            
                            

                             

                            Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
                            Sempre il mare, uomo libero, amerai!
                            ( Charles Baudelaire )
                            #38535 Score: 0 | Risposta

                            Pasquale
                            Partecipante

                              vediamo se ho capito bene;

                              a) crea una dir= intendi creo una cartella con tutti i file; posso gli stessi file nominarli vendite1;vendite2...ecc?

                              b) crea un file"master" = creo un file chiamato "vendite" con un modulo vba incollando il tuo codice?

                               

                              #38538 Score: 0 | Risposta

                              albatros54
                              Moderatore
                                89 pts

                                Tutto nella stessa Dir  

                                 

                                Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
                                Sempre il mare, uomo libero, amerai!
                                ( Charles Baudelaire )
                                #38541 Score: 0 | Risposta

                                Pasquale
                                Partecipante

                                  tutto ok, grazie. adesso facile aprire i file convertire in csv e procedere.

                                Login Registrati
                                Stai vedendo 15 articoli - dal 1 a 15 (di 15 totali)
                                Rispondi a: Cancellazione righe, sistemazione e codifica csv-utf8
                                Gli allegati sono permessi solo ad utenti REGISTRATI
                                Le tue informazioni: