Excel VBA #51 Dividere i records di un database su più fogli con una condizione (Split database)

Поділитися
Вставка
  • Опубліковано 9 січ 2025

КОМЕНТАРІ • 37

  • @francescosedita6938
    @francescosedita6938 3 роки тому

    tutto quello che farà in vba sarà
    sempre bene accetto grazie Francesco

  • @FB-ti5od
    @FB-ti5od 3 роки тому

    Un boccone alla volta ci permette di crescere nella comprensione del VBA. Grazie sig. Gerardo.

  • @paolorepetto2698
    @paolorepetto2698 3 роки тому

    Grazie Gerardo! 😀
    Finalmente riesco a riprendere l'esercizio😅
    Per sovrappiù ho aggiunto dopo la riga dell'Array questo ciclo per formattare le intestazioni:
    With ws.Range("A1:C1")
    .Interior.ColorIndex = 5
    .Font.ColorIndex = 2
    .Font.Bold = True
    End With
    e poi, dato che ho suddiviso le cifre del numero telefonico così xxx xxx xx xx nel foglio Database ho sfruttato il tuo ciclo For Next aggiungendo qiesta riga:
    .Cells(uRiga, i).NumberFormatLocal = cella.Offset(0, i -1).NumberFormatLocal
    per farmi restituire lo stesso formato anche negli altri fogli.
    A presto!

    • @gerardozuccala
      @gerardozuccala  3 роки тому

      Fantastico!!! complimenti e grazie per la condivisione, un saluto

  • @FabrizioBaranello
    @FabrizioBaranello 2 роки тому +1

    Sei davvero un maestro!

  • @oscar98653210
    @oscar98653210 3 роки тому +1

    Ottimo come esercizio pratico per prendere esperienza con Vba, ma per risolvere molto più velocemente il problema consiglio a tutti di usare una Pivot, inserire in campo che si vuole come "condizione" nel filtro principale e poi andare nelle opzioni e poi andare a fare suddividere in base al filtro. Sì avranno tanti fogli excel quante sono i valori della condizione indicata.

  • @frasier76
    @frasier76 3 роки тому

    Like+++
    Grande Gerardo.
    Video interessante come sempre

  • @sscire
    @sscire 3 роки тому

    Ottimo video Gerardo .... il VBA è semplicemente fantastico.

    • @gerardozuccala
      @gerardozuccala  3 роки тому

      Ciao Salvo, grazie mi fa piacere che ti è piaciuto, un saluto

  • @VSDoctor
    @VSDoctor 3 роки тому

    Veramente istruttivo, mi sono appena iscritto, e ne approfitto. Eseguendo il codice, i numeri di telefono vengono inseriti in formato esponenziale (Pippo Milano 3,4E+09), nonostante tutte le celle di ogni foglio sono state settate in formato testo. Grazie

  • @VittorioVetto1
    @VittorioVetto1 3 роки тому

    Complimenti Gerardo come sempre sei un grande!!!!
    Una volta creati i nuovi fogli si potrebbero esportare in PDF e inviare in un archivio dedicato e/o farli anche stampare direttamente 😉😉

    • @gerardozuccala
      @gerardozuccala  3 роки тому

      ciao Vittorio, non ci ho mai provato ma credo proprio di sì, credo che sono giusto in paio di righe di codice da aggiungere, un saluto

    • @VittorioVetto1
      @VittorioVetto1 3 роки тому

      @@gerardozuccala spero che un giorno ci metti mano e scrivi le righe.
      Comunque sempre grazie per l'immenso lavoro che fai....😀😀

  • @alexl.3965
    @alexl.3965 2 роки тому

    Complimenti.....

  • @flaviomarini9745
    @flaviomarini9745 3 роки тому

    grandissimo gerardo

  • @piernervi
    @piernervi 3 роки тому

    Gherardo, quando ci porterai la funzione LAMBDA? sembra interessante!

  • @omeropasquinelli7905
    @omeropasquinelli7905 3 роки тому

    Riga = Sheets("DataBase").Cells(Rows.Count, 1).End(xlUp).Row
    For Each cella In Foglio1.Range("A2:A" & Riga)

  • @perronemarcello7555
    @perronemarcello7555 3 роки тому

    Ottimo come sempre, si potrebbe implementare con una buona gestione degli errori ad esempio: cosa fare se c'è un nome nuovo per il quale non era stato previsto il foglio relativo? 😉

    • @gerardozuccala
      @gerardozuccala  3 роки тому

      Ciao Cucù stessa osservazione fatta da Enzo (rubik72) qui sotto nei messaggi , forse farò un video per correggere l'errore oppure faro in modo che i fogli vengono generati dalla lista cosi non si dovrà correggere

  • @grazia6035
    @grazia6035 3 роки тому

    👍

  • @elioesposito812
    @elioesposito812 3 роки тому +2

    Grande Gerardo, comunque secondo me si potrebbe rendere dinamica anche il numero di colonne. Gia nel post scorso avevo intuito più o meno che cosa facesse il tuo script. Ps si potrebbero creare fogli dinamicamente in base a i nomi della prima colonna, che cosa dici?

    • @gerardozuccala
      @gerardozuccala  3 роки тому

      Ciao Elio, grazie per la tua condivisione, esatto si potrebbero creare dei foglio dinamicamente, comunque per quanto riguarda il numero di colonne lo reso dinmico con il ciclo For i 1 to 3 Next forse ti è sfuggito, un saluto

    • @elioesposito812
      @elioesposito812 3 роки тому

      @@gerardozuccala intendevo for i =1 to ultimacolonna, ho provato a tradurla in javascript per i fogli google. Comunque sei un grande, grazie per i tuoi video sono stimolanti

    • @sscire
      @sscire 3 роки тому

      @@gerardozuccala Esatto Gerardo .... Ecco qui una routine per creare i fogli necessari avendo all'inizio il solo Foglio1 con il database dei NOMI nella prima colonna:
      Sub GeneraFogli()
      Dim uRiga As Integer
      Dim Clic As Byte
      Dim Nome As String
      Dim n As Integer
      Dim ws As Worksheet
      Dim NuovoFoglio As Worksheet
      Application.ScreenUpdating = False
      uRiga = Sheets(1).[A999999].End(xlUp).Row
      For n = 2 To uRiga
      Clic = 0
      Nome = Sheets(1).Cells(n, 1)

      For Each ws In Worksheets
      If ws.Name = Nome Then
      Clic = 1
      End If
      Next

      If Clic = 0 Then
      Set NuovoFoglio = Worksheets.Add
      NuovoFoglio.Name = Nome
      Sheets(Nome).Move After:=Sheets(Sheets.Count)
      End If
      Next
      Foglio1.Activate
      Foglio1.Range("A1").Select
      Application.ScreenUpdating = True
      End Sub

    • @sscire
      @sscire 3 роки тому

      Già che ci siamo mettiamo anche una SUB per Eliminare i Fogli ... così ci prende la SCIMMIA ed eseguiamo l'esercizio a ripetizione .... vero Gerardo???
      Sub EliminaFogli()
      Dim uRiga As Integer
      Dim Nome As String
      Dim n As Integer
      Dim ws As Worksheet
      Application.ScreenUpdating = False
      uRiga = Sheets(1).[A999999].End(xlUp).Row
      For n = 2 To uRiga

      Nome = Sheets(1).Cells(n, 1)

      For Each ws In Worksheets
      If ws.Name = Nome Then
      Application.DisplayAlerts = False
      Sheets(Nome).Activate
      Sheets(Nome).Delete
      Application.DisplayAlerts = True
      End If
      Next

      Next
      Foglio1.Activate
      Foglio1.Range("A1").Select
      Application.ScreenUpdating = False
      End Sub

  • @neludanielromascu
    @neludanielromascu Рік тому

    Perché le regole non rimangono salvate una volta chiuso il file?

  • @game1game401
    @game1game401 2 роки тому

    Si potrebbe trovare un modo per evitare che vengano eliminati ogni volta i dati delle tabelle? Ad esempio facendo eliminare i dati già trascritti dalla tabella principale? Se sì come si può fare? Grazie mille e ottimo video

  • @omeropasquinelli7905
    @omeropasquinelli7905 3 роки тому

    Sig. Gerardo buona sera.
    Ho provato a duplicare il codice del video #VBA 51 e tutto funziona bene se scrivo il codice in questa maniera dove A79 è l’ultima cella popolata.
    Mi potrebbe per favore spiegare come rendere dinamico questo riferimento mano mano che si popola il DB? Grazie
    For Each cella In Foglio1.Range("A2:A79")
    uRiga = Sheets(cella.Value).Range("A999999").End(xlUp).Row + 1

  • @md3250
    @md3250 3 роки тому

    Help
    Da circa due settimane,o piu, sotto i video non vedo i link che poni in descrizione e così di tutti i canali Non capisco perché !

    • @gerardozuccala
      @gerardozuccala  3 роки тому

      Ciao, Quale link ti serve?

    • @md3250
      @md3250 3 роки тому

      @@gerardozuccala non uno in particolare! Volevo chiederti solo se sai perché risulta vuota la parte sottostante il video che contiene la data di pubblicazione e i link posti in descrizione
      In ogni caso grazie

  • @enzocarrozzo7415
    @enzocarrozzo7415 3 роки тому

    Grande Gerardo. Io integrerei la routine con la gestione degli errori, nel caso in cui il Foglio non esista (es. Nome=Paperino - Città=Firenze - Telefono=333123456 errore Debug 'il Foglio non esiste')

    • @gerardozuccala
      @gerardozuccala  3 роки тому

      grazie Enzio per la tua preziosa condivisione, non avevo pensato, oltretutto come. puoi leggere qui sotto ci sono altri commenti che volti a migliorare ed implementare il codice, un saluto

  • @GilloGilloGillo
    @GilloGilloGillo 2 роки тому

    È un vero peccato non poter più assistere alle tue “lezioni”. Hai definitivamente abbandonato questo tuo impegno o ti rivedremo?

  • @omeropasquinelli7905
    @omeropasquinelli7905 3 роки тому

    Le chiedo scusa, credo di aver risolto cosi

  • @giuseppedimaio6097
    @giuseppedimaio6097 7 місяців тому

    Sub SPLITTA()
    Dim cella As Range
    Dim uRiga As Long
    Dim i As Byte
    For Each cella In Foglio1.Range("A3:A4")
    uRiga = Sheets(cella.Value).Range("A999999").End(xlUp).Row + 1
    With Sheets(cella.Value)
    For i = 1 To 5
    .Cells(uRiga, i) = cella.Offset(0, i - 1).Value
    Next i
    End With
    Next cella
    End Sub
    perchè mi da errore run time 9 uRiga = Sheets(cella.Value).Range("A999999").End(xlUp).Row + 1