Ordinamento automatico

Versione Completa   Stampa   Cerca   Utenti   Iscriviti     Condividi : FacebookTwitter
Clemente62
00martedì 23 agosto 2016 13:26
salve a tutti
premetto che non capisco VBA e pare (in giro che ci voglia per forza VBa) per cortesia qualcuno puoi aiutarmi affinche' l'allegato file ordina automaticamente (Attività in Eseere) per cognome
Grazie a tutti
GiuseppeMN
00martedì 23 agosto 2016 15:19
1    usa il registratore di macro; ed è già un consiglio che non meriti, ma oggi sono particolarmente caritatevole.
2    non so come la pensa, @ raffaele1953 (che saluto); io sono ancora in religiosa attesa di un riscontro, magari critico relativamente a:
http://freeforumzone.leonardo.it/d/11195323/Per-Raffaele/discussione.aspx?#idm131520304
3    non so come la pensano, @ Marius44 e @ raffaele1953 (un saluto ad Entrambi); io sono ancora in religiosa attesa di un riscontro per:
http://freeforumzone.leonardo.it/d/11198176/Salve-Aiuto-/discussione.aspx?#idm131571001
Contestualmente ringrazio @ lucaArcuri per la Sua attenzione.
Clemente62
00martedì 23 agosto 2016 18:02
Windows 7 ultimate Office 2013
GiuseppeMN
00martedì 23 agosto 2016 21:46
Buona sera, Clemente;
propongo a Forum il Codice per l'ordinamento sviluppato con Excel 2013, per Excel 2000 e 2003 il Codice sarebbe sicuramente molto diverso, per Excel 2007 non saprei.

Option Explicit
 
Sub Ordina()
Dim NRc As Long
 
    NRc = Range("A" & Rows.Count).End(xlUp).Row
    Columns("B:K").Select
    ActiveWorkbook.ActiveSheet.Sort.SortFields.Clear
    ActiveWorkbook.ActiveSheet.Sort.SortFields.Add Key:=Range("C2:C" & NRc), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.ActiveSheet.Sort.SortFields.Add Key:=Range("D2:D" & NRc), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.ActiveSheet.Sort.SortFields.Add Key:=Range("I2:I" & NRc), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.ActiveSheet.Sort
        .SetRange Range("B1:K" & NRc)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("C2").Select
End Sub


Questo Codice Ordina secondo queste tre regole:
1 Cognome
2 Nome
3 LETT.
Ora, se provi a lanciare questa procedura, ti accorgerai di una incongruenza; la sequenza:
Balletta Giovanni S. Maria P.zza Umberto I° Ristorazione .....Bar ..............A
Balletta Tancledo S. Maria Nazionale ............Cessata ..............Ristorante CE
Balletta Giovanni S. Maria Macello 26 ...........Ristorazione ....Ristorante .A

Non è corretta; questo è dovuto allo spazio finale del Cognome "Balletta " nel Record:
Balletta Giovanni S. Maria Macello 26 ...........Ristorazione ....Ristorante .A

Se togli lo spazio finale in "Balletta" e rilanci la produra, vedrai che il risultato sarà:
Balletta Giovanni S. Maria P.zza Umberto I° Ristorazione .....Bar ..............A
Balletta Giovanni S. Maria Macello 26 ...........Ristorazione ....Ristorante .A
Balletta Tancledo S. Maria Nazionale ............Cessata ..............Ristorante CE
come deve essere.



A disposizione.

Buona serata a Tutti.

Giuseppe
peppo55.Excel
10martedì 23 agosto 2016 22:42
Ciao GiuseppeMN,

un'alternativa alla tua macro.




Private Sub CommandButton1_Click()

Range("C2").Select

Application.CommandBars.ExecuteMso ("SortAscendingExcel")

End Sub





scusa Giuseppe, ho letto male. La tua macro è migliore.
GiuseppeMN
00mercoledì 24 agosto 2016 07:43
Buona giornata, Peppo;
devo ringraziarti, non conoscevo "ExecuteMso".
È molto interessante; è pur vero che "SortAscendingExcel" agisce su un solo Campo, in questo caso "Cognome", ma, può essere molto utile in altre applicazioni. Devo studiarmelo bene.

Non si finisce mai di imparare.

Grazie del Tuo Contributo.



Buona serata.

Giuseppe
peppo55.Excel
00mercoledì 24 agosto 2016 10:11
Ciao GiuseppeMN,

per reperire il nome di una ExecuteMso é molto semplice.
Nelle Opzioni di Excel > Personalizzazione barra multifunzione,quando ti avvicini con il Mouse ad un comando, viene visualizzato il nome del controllo.


GiuseppeMN
00mercoledì 24 agosto 2016 10:18
Buona giornata, Peppo;
grazie della precisazione.

Quello che sto cercando di capire, è se possibile attribuire a "SortAscendingExcel" più campi di ordinamento; per il momento, tutti i Test che ho condotto non hanno dato un risultato accettabile.


Giuseppe
Clemente62
00mercoledì 24 agosto 2016 18:30
Amici
Vi ringrazio tutti per il lavoro svolto però, purtroppo non so utilizzare VBA.
Provo a farlo e vi faccio sapere però, forse, se potreste utilizzare il mio allegato ed aggiustarlo vi sarei molto grato . pERò INTANTO PROVO A FARLO PURE IO
CIAO
patel45
00mercoledì 24 agosto 2016 18:35
lo scopo del forum è quello di insegnare ad usare Excel, non quello di fornire un prodotto chiavi in mano
Clemente62
00mercoledì 24 agosto 2016 18:41
Ho fatto così:
Ho aperto il foglio excel (mio) poi ho fatto ALT+F11, ho scelto Foglio 4 (Attività in essere), poi dove sta scritto generale ho scelto Workscheet, edall'altra parte ordina, ho copiato la formula che mi avete inviato lìho incollatta poi sono uscito ed ho provato e purtroppo non funziona
Clemente62
00mercoledì 24 agosto 2016 18:44
Ho provato:
Ho aperto il miofogliodi lavoro excel, poi ALT+F11, ho scelto FOGLI 4 (Attività in Essere) ho scelto dove sta scritto generale WORKSCHETT ho incollato la formula ed ho richiuso tuoot ma purtroppo non funziona
Clemente62
00mercoledì 24 agosto 2016 18:47
Patel 45
Hai ragione però grazie a voi, se vedi l'allegato, le varie formule le ho inserite io e pensare che non sapevo nemmeno mettere in ordine alfabetico e non conoscevo il tasto filtro ma purtroppo il VBA per me è molto difficile scuusami ancora
Clemente62
00mercoledì 24 agosto 2016 18:49
by sal
00giovedì 25 agosto 2016 07:27
Ordinamento
Ciao Clemente per le macro, la prima parte l'hai fatta correttamente Alt+F11, la seconda no.

in quanto la macro che ti ha proposto GiuseppeMn che saluto come pure saluto anche gli altri, è una macro normale che funziona per tutti i fogli.

solo le macro legate agli eventi del foglio tipo Change, Selection_Change, ed altri eventi vanno inserite direttamente nel modulo del foglio, anche quella ma non in un evento cosa che credo abbia fatto selezionando Worksheet.

dopo Alt+F11 nel menù "Inserisci" scegli "Modulo" ti crea il Modulo1 nel quale copia/incolla la macro, di nuovo Alt+F11 e ritorni sul foglio.

Posizionati sul foglio dove vuoi fare l'ordinamento, poi premi Alt+F8 si apre la mascherina che contiene tutte le macro troverai il nome della Macro "Ordina", la selezioni e premi esegui, oppure doppio click sul nome della macro.

Ciao By Sal [SM=x423051]

Clemente62
00giovedì 25 agosto 2016 07:48
per sal
sal sto provando a fare come dici tu ma non funziona
ho eseguito tutto alla lettera
datemi altri indizi
grazie
Clemente62
00giovedì 25 agosto 2016 08:36
Forse devo cliccare su esegui istruzione?
Clemente62
00giovedì 25 agosto 2016 08:51
Mi dispiace non riesco a farla funzionare
GiuseppeMN
00giovedì 25 agosto 2016 10:14
Buona giornata, Clemente.

Nel Tuo File esiste già il Modulo1 nel quale hai registrato il Codice:
-    Sub Trova()

Prova a Copiare il Codice proposto sotto questo Codice.

Poi, se anche questa indicazione non darà il risultato richiesto, allegherò il File; ma, vedrai che riuscirai a risolvere in autonomia.




Giuseppe
Clemente62
00giovedì 25 agosto 2016 12:17
adesso provo
Clemente62
00giovedì 25 agosto 2016 12:22
Allora adesso ho capito leggere
la formula VBA funziona, però se ho capito bene ogni qualvolta voglio ordinare i dati devo eseguire (ALT+F8 ed ESEGUI);
Giusto?
Però se è così va bene però forse mi sono espresso male(non mi sono fatto capire) io credevo che era possibile inserire i dati ed alla pressione el tasto INVIO il cognome si fosse messo in ordine alfabetico da solo!
ma credo che ciò non è possibile? o sbaglio
alfrimpa
00giovedì 25 agosto 2016 12:41
Ciao Clemente

Ti sbagli anche questo si può fare basta utilizzare una procedura evento tipo

Worksheet_Change

delimitando il range con

If Not Intersect

Ora sono da cell e non posso dire/fare di più ma credo di averti dato degli utili spunti.

Un'ultima notazione personale: ho 63 anni e sino a circa tre anni fa del VBA non ne conoscevo neanche l'esistenza quindi se ho imparato qualcosa io non vedo perchè non possa farlo anche tu.

Certo occorre impegno studio e passione
Clemente62
00giovedì 25 agosto 2016 13:01
io ne ho 54 e m sto impegnando molto grazie comunque a presto
GiuseppeMN
00giovedì 25 agosto 2016 17:14
Puoi sempre utilizzare un Pulsante al quale delegare l'escuzione del Codice VBA.

Non sarà come premere Invio, ma basta un Click.


Giuseppe
Clemente62
00giovedì 25 agosto 2016 18:42
giuseppe come si aggiunge il pulsante ?
Clemente62
00giovedì 25 agosto 2016 18:46
ALT+F8 po Opzione ed ho aggiunto una lettera funxiooooooonnnaa Grazie a tutti per ora
Clemente62
00giovedì 25 agosto 2016 20:19
Grazie a tutti chiudo questa discussione ringraziando tutti, adesso ho aperto una nuova discussione sulle lezioni VBA
Questa è la versione 'lo-fi' del Forum Per visualizzare la versione completa clicca qui
Tutti gli orari sono GMT+01:00. Adesso sono le 10:56.
Copyright © 2000-2024 FFZ srl - www.freeforumzone.com