Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[Excel2010]Macro per ordinamento elenco

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Re: [Excel2010]Macro per ordinamento elenco

Postdi Anthony47 » 04/11/15 13:49

In ordine...
1) Ho volutamente non messo la descrizione: devi capire come inserirla da solo guardando come ho fatto per le altre informazioni, altrimenti per ogni virgola che cambi devi chiedere a qualcun altro...
2) L'elenco viene riportato su due colonne riprendendolo come e' sul foglio Elenco; se serve ordinato devi ordinare il foglio Elenco prima di avviare la Sub SideBySide2. Puoi farlo con una macro autoregistrata; eventualmente, dopo aver preparato questa macro, in testa alla SideBySide2 inserisci una riga "Call LaMiaMacroDiOrdinamento" (senza virgolette), subito prima di Application.DisplayAlerts = False
3) Per suggerirti come mettere l'immagine dovrei sapere da dove la prendi e (nell'ipotesi che ci sia da scegliere tra un elenco di immagini) secondo quale criterio di scelta.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Sponsor
 

Re: [Excel2010]Macro per ordinamento elenco

Postdi recalcatiiti » 05/12/15 16:07

Ciao Anthony,

finalmente ho trovato il tempo di risponderti, scusa il ritardo.
Sono riuscito ad ovviare al problema. siccome l'immagine, il titolo, il logo e le revisioni possono essere gestite a parte in un altro foglio, utilizzando la tua macro perfettamente funzionante, non faccio altro che copiare da zcprint l'elenco ordinato in colonne ed incollarlo nel foglio contenente tutte le altre informazioni. dopo questo sia zcwork che zcprint vengono eliminati (per far tutto ciò ho registrato semplici macro e le ho unite in una tramite la function call).

Ti ringrazio, perché sono riuscito ad ottenere ciò che desideravo.

Volevo comunque romperti le scatole ancora una volta... :lol:

Quando lancio la macro, avviene tutto correttamente, ma quando i fogli vengono eliminati escono due alert che mi chiedono se voglio veramente eliminare il foglio (capibile). Sarebbe possibile evitare che questi alert escano od al limite che la riposta "ok" sia automatica?

Grazie molte, a presto.
Excel 2010
recalcatiiti
Utente Junior
 
Post: 77
Iscritto il: 12/10/15 15:03

Re: [Excel2010]Macro per ordinamento elenco

Postdi recalcatiiti » 06/12/15 19:10

Ciao Anthony,
ho trovato la risposta al quesito precedente, il codice che evita l'alert era già presente nella tu macro

Codice: Seleziona tutto
 Application.DisplayAlerts = False
On Error Resume Next
    Sheets("ZcWork").Delete
    Sheets("ZcPrint").Delete
Application.DisplayAlerts = True


Grazie comunque, a presto
Excel 2010
recalcatiiti
Utente Junior
 
Post: 77
Iscritto il: 12/10/15 15:03

Re: [Excel2010]Macro per ordinamento elenco

Postdi Anthony47 » 08/12/15 00:09

Vedi che a leggere tutto qualcosa torna sempre utile?

Alla prossima....
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel2010]Macro per ordinamento elenco

Postdi recalcatiiti » 09/02/16 11:14

Buongiorno a tutti, buongiorno Anthony,

sto continuando ad utilizzare la macro con successo.
Ma è sorta la necessità di una miglioria.

Vorrei che nell'elenco ordinato in due colonne, lo header della tabella si ripeta in ogni nuova pagina.

Mi sapreste indicare come fare?

[Per Anthony] Questa è la macro che mi hai proposto tempo fa, con alcune modifiche dettate dalle mie esigenze.

Codice: Seleziona tutto
Sub Elenca69()

    ActiveWorkbook.Worksheets("Elenco69").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Elenco69").Sort.SortFields.Add Key:= _
        Range("A2"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Elenco69").Sort
        .SetRange Range("A2:D4000")
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
Dim TabSh As String, Tab1Adr As String, Tab2Adr As String, LastCol As Long
Dim TabC As Range, i As Long, pRow As Long, NextR As Long, Pag1 As Long       '**
Application.DisplayAlerts = False
On Error Resume Next
    Sheets("ZcWork").Delete
    Sheets("ZcPrint").Delete
On Error GoTo 0
Application.DisplayAlerts = True
TabSh = "Elenco69"   '<<<-- Il foglio con la tabella di origine
'NB: il prossimo parametro deve cominciare da A1;
'es: corretto A1:F1
'    sbagliati B1:F1, A2:G2
Tab1Adr = "A1:E1"   '<<<-- La larghezza della prima tabella
Tab2Adr = Range(Tab1Adr).Offset(0, 6).Address
'Crea copia del foglio Elenco
Sheets(TabSh).Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = "ZcWork"
'Crea foglio di stampa
ActiveSheet.Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = "ZcPrint"
Sheets("ZcWork").Select
ActiveWindow.View = xlPageBreakPreview
ActiveWindow.View = xlNormalView
'Copia Work in Print
If ActiveSheet.HPageBreaks.Count > 0 Then
    pRow = ActiveSheet.HPageBreaks(1).Location.Row - 3
    Sheets("ZcPrint").Cells.Clear
    Range(Tab1Adr).Copy Sheets("ZcPrint").Range("A1").Offset(50, 0)         '**     'Copia header
    Range(Tab1Adr).Copy Sheets("ZcPrint").Range(Tab2Adr).Offset(50, 0)      '**
    Pag2 = 0           '**
    For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row Step pRow * 2   'Copia dati
        NextR = Sheets("ZcPrint").Cells(Rows.Count, 1).End(xlUp).Row + 1
        Range("A" & i).Resize(pRow - Pag2, Range(Tab1Adr).Count).Copy Destination:= _
            Sheets("ZcPrint").Cells(NextR, "A")                 '**
        Range("A1").Offset(i + pRow - 1 - Pag2, 0).Resize(pRow - Pag2, Range(Tab1Adr).Count).Copy Destination:= _
            Sheets("ZcPrint").Cells(NextR, Range(Tab2Adr).Column)           '**
    '   set page break
        Sheets("ZcPrint").HPageBreaks.Add before:=Sheets("ZcPrint").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
        If i = 2 Then i = i - Pag2 * 2: Pag2 = 0  '**
    Next i
End If
    Sheets("ZcPrint").Select
If Range("A51").Value = "" Then
    Sheets("PRFL69T").Select
    Range("A51:J5000").ClearContents
    Sheets("ZcPrint").Select
      Range("A1:D50").Select
    Selection.Copy
    Sheets("PRFL69T").Select
     Range("D51").Select
    ActiveSheet.Paste
End If
    Range("A51:J2500").Select
    Selection.Copy
    Sheets("PRFL69T").Select
    Range("A51").Select
    ActiveSheet.Paste
Application.DisplayAlerts = False
On Error Resume Next
    Sheets("ZcWork").Delete
    Sheets("ZcPrint").Delete
Application.DisplayAlerts = True
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\Users\s.recalcati\Desktop\PRFL69T.pdf", Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
Range("A1").Select

End Sub


Grazie a tutti
Excel 2010
recalcatiiti
Utente Junior
 
Post: 77
Iscritto il: 12/10/15 15:03

Re: [Excel2010]Macro per ordinamento elenco

Postdi Anthony47 » 11/02/16 23:36

Mi pare che il problema sia stampare su ogni pagina delle intestazioni che ora vengono stampate solo sulla prima pagina.
Se e' cosi' allora dovresti impostare la pagina di stampa in modo da ripettere l'intestazione su ogni pagina; nel wizard di ImpostaPagina trovi questa impostazione sul tab Foglio, alla voce "Righe da ripetere in alto".

E se non e' questo che chiedevi allora descrivi con ulteriore dettagli.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel2010]Macro per ordinamento elenco

Postdi recalcatiiti » 16/02/16 17:27

Ciao,

Funziona.

il mio dubbio risiedeva nel fatto che la macro, a seconda della lunghezza dell'elenco d'origine, produce un elenco ordinato o in un'unica colonna centrale o in due colonne adiacenti. quindi le righe da ripetere sono differenti in base al caso.
agendo direttamente sul foglio di stampa (dove viene generato l'elenco), il problema non si pone.

grazie e a presto.
Excel 2010
recalcatiiti
Utente Junior
 
Post: 77
Iscritto il: 12/10/15 15:03

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "[Excel2010]Macro per ordinamento elenco":


Chi c’è in linea

Visitano il forum: Nessuno e 12 ospiti