Risultati da 1 a 5 di 5

Discussione: Creare automaticamente fogli excel da un database in base a condizioni specifiche



  1. #1
    L'avatar di luigi.simone
    Clicca e Apri
    Data Registrazione
    Jul 2016
    Località
    Roma
    Età
    26
    Messaggi
    9
    Versione Office
    2013
    Likes ricevuti
    0
    Likes dati
    4

    Creare automaticamente fogli excel da un database in base a condizioni specifiche

    Ciao a tutti,
    leggo con piacere il forum da tempo e vedo che ci sono davvero molte informazioni utili e persone molto esperte.
    Avrei un problema nella gestione di un database con molte righe (circa 100000) relativo alla clientela di una attività.
    In particolare il database che allego è costituito da diversi addetti vendita ognuno dei quali ha uno o più clienti che a loro volta in un periodo considerato possono effettuare diversi ordinativi.
    Il database è strutturato in modo tale che per ogni addetto vendita vi siano le informazioni necessarie (come potrete vedere nel file).
    Il mio obiettivo è creare una macro excel che dal database principale mi crei "n" fogli quanti sono gli addetti vendita nella stessa cartella di lavoro excel, con tutti gli ordini fatti dai clienti di tali operatori. Inoltre il foglio dovrà essere rinominato con l'identificativo dell'operatore, le iniziali della sua area di appartenenza e le iniziali del suo ruolo.
    Come potrete vedere la struttura del file in allegato prevede delle celle vuote e purtroppo tale struttura non può essere modificata.
    Nel file c'è un primo foglio con il database e altri due fogli che rappresentano il risultato che vorrei ottenere.
    Spero di essere stato chiaro nel spiegarmi e ringrazio anticipatamente chiunque riesca ad aiutarmi!
    File Allegati File Allegati

  2. #2
    L'avatar di patel
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Livorno
    Età
    72
    Messaggi
    1102
    Versione Office
    2010
    Likes ricevuti
    141
    Likes dati
    1

    Re: Creare automaticamente fogli excel da un database in base a condizioni specifiche

    Finalmente qualcuno che allega file e risultati !

  3. #3
    L'avatar di Raffaele_53
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Binasco
    Età
    64
    Messaggi
    506
    Versione Office
    2007
    Likes ricevuti
    85
    Likes dati
    7

    Re: Creare automaticamente fogli excel da un database in base a condizioni specifiche

    Edit non ho visto la risposta di patel (ciao)
    Domanda
    Ti interessa un VBA che lo faccia. OK fatto/finito e il codice non serve più.

    Oppure un domani, aggiungi altre righe in (Database Risultati) e vorresti che il codice copia queste nuove righe nei fogli giusti?
    Ti andrebbe bene SPOSTARE le righe, intendo alla fine (Database Risultati sarà vuoto) e i fogli pieni?

    Ps La colonna V è giusta/corretta, intendo tutti i record con A55878 andranno nel foglio A55878 ecc ecc?

    ----------Post unito in automatico----------

    Dovrebbe funzionare (da inserire in un MODULO)

    Codice: 
    Option Explicit
    Function SheetExists(SheetName As String) As Boolean
    Dim Test As Boolean
    On Error Resume Next
    Test = Sheets(SheetName).Activate
    If Test Then
        SheetExists = True
    Else
        SheetExists = False
    End If
    End Function
    Sub Elabora()
    Dim sh1 As Worksheet: Set sh1 = Worksheets("Database Risultati") ' da cambiare casomai
    Dim sh As Worksheet
    Dim Ur, Ur2, X, Y, Rr, Tot, Nome As String
    Application.ScreenUpdating = False
    Ur = sh1.Range("V" & Rows.Count).End(xlUp).Row
        sh1.Sort.SortFields.Clear
        sh1.Sort.SortFields.Add Key:=sh1.Range("V3:V" & Ur), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With sh1.Sort
            .SetRange sh1.Range("A2:X" & Ur)
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
        For X = 3 To Ur
            Nome = sh1.Cells(X, 22).Value & " " & sh1.Cells(X, 6).Value & " - " & sh1.Cells(X, 4).Value
            Tot = Application.WorksheetFunction.CountIf(sh1.Range("V:V"), sh1.Cells(X, 22).Value)
            If SheetExists(Nome) Then
                Set sh = Worksheets(Nome)
                Ur2 = sh.Range("V" & Rows.Count).End(xlUp).Row
                sh.Range("A3:X" & Ur2).Clear
                sh1.Range(sh1.Cells(X, 1), sh1.Cells(X + (Tot - 1), 24)).Copy
                sh.Cells(3, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
            Else
                Worksheets.Add
                ActiveSheet.Name = Nome
                Sheets(Nome).Move After:=Sheets(Worksheets.Count)
                Set sh = Worksheets(Nome)
                sh1.Range(sh1.Cells(1, 1), sh1.Cells(2, 24)).Copy
                sh.Range("A1").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
                For Y = 1 To 24
                    sh.Columns(Y).ColumnWidth = sh1.Columns(Y).ColumnWidth
                Next Y
                sh.Range("A1").PasteSpecial
                sh1.Range(sh1.Cells(X, 1), sh1.Cells(X + (Tot - 1), 24)).Copy
                sh.Cells(3, 1).PasteSpecial
            End If
            X = X + (Tot - 1)
        Next X
    Set sh = Nothing
    Set sh1 = Nothing
    Application.ScreenUpdating = True
    MsgBox "fatto"
    End Sub

  4. I seguenti utenti hanno dato un "Like"


  5. #4
    L'avatar di patel
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Livorno
    Età
    72
    Messaggi
    1102
    Versione Office
    2010
    Likes ricevuti
    141
    Likes dati
    1

    Re: Creare automaticamente fogli excel da un database in base a condizioni specifiche

    questo il mio approccio un po' diverso, crea i fogli una tantum, in caso di aggiornamenti occorre eliminare tutti i fogli
    Codice: 
    Sub fogli()
    With Sheets("Database Risultati")
      LR = .Cells(.Rows.Count, "A").End(xlUp).Row
      LR1 = .Cells(.Rows.Count, "Q").End(xlUp).Row
      .Range("A" & LR1 + 1) = "FINE"
      For r = 3 To LR
        If .Range("A" & r) <> "" And .Range("A" & r) <> "FINE" Then
          foglio = .Range("A" & r) & " " & .Range("F" & r) & " - " & .Range("D" & r)
          Sheets.Add(After:=Sheets(Sheets.Count)).Name = foglio
          .Range("A1:X2").Copy Range("A1")
          .Range("A" & r & ":Z" & .Range("A" & r).End(xlDown).Row - 1).Copy Range("A3")
          Columns("A:X").EntireColumn.AutoFit
        End If
      Next
      .Range("A" & LR1 + 1) = ""
    End With
    End Sub
    ----------Post unito in automatico----------

    mi è piaciuto questo quesito, altro approccio
    Codice: 
    Sub fogli2()
    With Sheets("Database Risultati")
      LR = .Cells(.Rows.Count, "Q").End(xlUp).Row
      .Range("A3:A" & LR).SpecialCells(xlCellTypeBlanks).Select
      For Each Rng In Selection.Areas
        n = Rng.Rows.Count + 1
        Set rng1 = Rng.Offset(-1, 0).Resize(n).Resize(, 24)
          foglio = rng1.Cells(1, 1) & " " & rng1.Cells(1, 6) & " - " & rng1.Cells(1, 4)
          Sheets.Add(After:=Sheets(Sheets.Count)).Name = foglio
          .Range("A1:X2").Copy Range("A1")
          rng1.Copy Range("A3")
          Columns("A:X").EntireColumn.AutoFit
      Next
    End With
    Sheets("Database Risultati").Select
    Range("A1").Select
    End Sub

  6. I seguenti utenti hanno dato un "Like"


  7. #5
    L'avatar di luigi.simone
    Clicca e Apri
    Data Registrazione
    Jul 2016
    Località
    Roma
    Età
    26
    Messaggi
    9
    Versione Office
    2013
    Likes ricevuti
    0
    Likes dati
    4

    Re: Creare automaticamente fogli excel da un database in base a condizioni specifiche

    Citazione Originariamente Scritto da Raffaele_53 Visualizza Messaggio
    Edit non ho visto la risposta di patel (ciao)
    Domanda
    Ti interessa un VBA che lo faccia. OK fatto/finito e il codice non serve più.

    Oppure un domani, aggiungi altre righe in (Database Risultati) e vorresti che il codice copia queste nuove righe nei fogli giusti?
    Ti andrebbe bene SPOSTARE le righe, intendo alla fine (Database Risultati sarà vuoto) e i fogli pieni?

    Ps La colonna V è giusta/corretta, intendo tutti i record con A55878 andranno nel foglio A55878 ecc ecc?

    ----------Post unito in automatico----------

    Dovrebbe funzionare (da inserire in un MODULO)

    Citazione Originariamente Scritto da patel Visualizza Messaggio
    questo il mio approccio un po' diverso, crea i fogli una tantum, in caso di aggiornamenti occorre eliminare tutti i fogli

    ----------Post unito in automatico----------


    mi è piaciuto questo quesito, altro approccio
    Grazie mille ad entrambi, sapevo che scrivendo in questo bellissimo forum avrei ottenuto delle risposte impeccabili!
    Entrambe le soluzioni mi consentono di raggiungere esattamente il mio obiettivo in modo ottimale!
    Ancora grazie!

Discussioni Simili

  1. [Risolto] Creare una tabella estraendo i dati in base a determinate condizioni
    Di MaxpoweR nel forum Domande su Excel in generale
    Risposte: 13
    Ultimo Messaggio: 31/01/17, 00:15
  2. Risposte: 6
    Ultimo Messaggio: 28/01/17, 00:18
  3. creare report da database excel
    Di braga1 nel forum Domande su Excel in generale
    Risposte: 8
    Ultimo Messaggio: 07/12/16, 13:27
  4. [Risolto] creare un database con acces con dati di excel
    Di ortofrutta_palladino nel forum Domande su Microsoft Access
    Risposte: 17
    Ultimo Messaggio: 12/09/16, 06:24
  5. [Risolto] Filtrare SALDI (da calcolare) in un database in base a più condizioni
    Di MarcoM nel forum Domande su Excel in generale
    Risposte: 10
    Ultimo Messaggio: 03/10/15, 09:48

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
  •