Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
* Ordinamento crescente/discendente di tabelle word
Nuovo argomento   Rispondi    Indice del forum -> Software - generale
Precedente :: Successivo  
Autore Messaggio
torchiemana
Mortale devoto
Mortale devoto


Registrato: 28/09/05 14:31
Messaggi: 8
Residenza: roma

MessaggioInviato: 21 Ott 2005 14:30    Oggetto: * Ordinamento crescente/discendente di tabelle word Rispondi citando

Salve, io ho un problema ad ottenere un ordine cronologico crescente o discendente di caselle di testo numerate. Word le ordina in questo modo: 1, 10, 100 ecc. - 2, 20, 200 ecc. - 3, 30... e cosi via.
Che sse po' ffa'? Sad

grazie

Paolo
Top
Profilo Invia messaggio privato
Lorenzo
Eroe in grazia degli dei
Eroe in grazia degli dei


Registrato: 25/08/05 12:53
Messaggi: 105

MessaggioInviato: 21 Ott 2005 15:17    Oggetto: Rispondi citando

Prova a numerarle invece di 1, 2, 3 ecc in 001, 002, 003 ecc.

In questo modo le numeri giuste

Ciao
Top
Profilo Invia messaggio privato
Lorenzo
Eroe in grazia degli dei
Eroe in grazia degli dei


Registrato: 25/08/05 12:53
Messaggi: 105

MessaggioInviato: 21 Ott 2005 15:20    Oggetto: Rispondi citando

dimenticavo...

ovviamente poi scrivi 010, 011 ecc, 020, 021, ecc.

ovvio che così ordini fino a 999.

se vuoi ordinare con numeri a 4 o a 5 cifre parti da 0001 oppure 00001.

Ciao
Top
Profilo Invia messaggio privato
torchiemana
Mortale devoto
Mortale devoto


Registrato: 28/09/05 14:31
Messaggi: 8
Residenza: roma

MessaggioInviato: 21 Ott 2005 17:19    Oggetto: grazie Rispondi citando

grazie, Lorenzo, ma non fa al caso mio: ho bisogno di lasciare la numerazione senza zeri avanti e, se non fossero passati diversi anni, mi ricorderei come avevo fatto quella volta che avevo risolto il problema! (in altre parole, si invecchia!)
Grazie lo stesso
Top
Profilo Invia messaggio privato
ioSOLOio
Amministratore
Amministratore


Registrato: 12/09/03 19:01
Messaggi: 16342
Residenza: in un sacco di...acqua

MessaggioInviato: 21 Ott 2005 17:52    Oggetto: Rispondi citando

non so esattamente come è fatta la tua pagina..

per prova ho creato una colonna con diverse celle..in ognuna ho scritto numeri a caso [ad esempio 1, 3, 7, 2, 10, 20, 5...] quindi la seleziono , dalla barra di Word scelgo Tabella -> Ordina imposto la colonna, numero e l'ordine (crescente o decrescente) e ottengo la colonna con le celle contenenti i numeri correttamente ordinati
Top
Profilo Invia messaggio privato
torchiemana
Mortale devoto
Mortale devoto


Registrato: 28/09/05 14:31
Messaggi: 8
Residenza: roma

MessaggioInviato: 22 Ott 2005 09:07    Oggetto: Rispondi citando

Grazie, ma purtroppo il mio problema e' un po piu' complicato: ho un catalogo di oggetti classificati con lettere seguite da numeri. Esempio: A-1, A-2, A-110, A-111-7 e poi via di seguito con le altre lettere e numeri.
Word me le ordina cosi: A-1, A-110, A-111-7, A-2. Come faccio ad impostare l'ordinamento "logico"? Questa e' la mia domanda.

Grazie a tutti

Paolo
Top
Profilo Invia messaggio privato
GrayWolf
Dio maturo
Dio maturo


Registrato: 03/07/05 17:24
Messaggi: 2325
Residenza: ... come frontiera i confini del mondo...

MessaggioInviato: 22 Ott 2005 17:25    Oggetto: Rispondi citando

Mi sembra che la soluzione sia di difficile realizzazione, non impossibile ma complessa.

Mi spiego meglio:
il fatto che le celle contengano dei riferimenti alfanumerici "imbroglia" l'ordinatore.

Gli algoritmi di ordinamento sul testo "si fermano" al primo carattere disuguale e posizionano la riga in modo coerente.

La prima cosa che mi viene in mente è la normalizzazione dei dati che deve avvenire in più passaggi:

Codice:
.1 analisi delle chiavi di riga con suddivisione in sottostringhe
 (usando il trattino come separatore)

.2 rilevazione del numero massimo di sottostringhe

.3 per ognuna delle colonne di sottostringhe:
   3.1 rilevazione della sottostringa più "lunga"
   3.2 normalizzazione delle sottostringhe più "corte"
       con riempimento del carattere spazio a sinistra
       (se presenti A-1 e A-10, allora A-1 diventa A- 1)

.4 costruzione di una chiave temporanea (in aggiunta alla riga)che abbia il numero di caratteri pari a:
   N-max_sottostrighe * N-max_caratteri_colonna_sottostringa
   là dove in numero di sottostringhe fosse minore del max rilevato,
   aggiungere una sottostringa di tutti spazi anteponendo un trattino

.5 ordinamento sulla chiave temporanea

.6 ricostruzione tabella con eliminazione della chiave temporanea


NB trattandosi di una chiave di ordinamento temporanea,
   si possono usare gli zeri anzichè gli spazi


Usando del codice non è complicato (penso 4 ore max), certo occorre conoscere VBA.
La cosa più agevole sarebbe utilizzare Excel come transito in cui le matrici (fogli con celle) sono di facile utilizzo.
Top
Profilo Invia messaggio privato
GrayWolf
Dio maturo
Dio maturo


Registrato: 03/07/05 17:24
Messaggi: 2325
Residenza: ... come frontiera i confini del mondo...

MessaggioInviato: 23 Ott 2005 16:13    Oggetto: Rispondi citando

@torchiemana

Se t'interessa e mi dai un recapito, ti posso inviare il foglio di excel
con il codice necessario che esegue i passi sopracitati.
(è stato troppo divertente svilupparlo)

@ Tutti
PS. lo stesso foglio è disponibile per chi volesse richiedermelo.... Wink 8) Wink
Top
Profilo Invia messaggio privato
GrayWolf
Dio maturo
Dio maturo


Registrato: 03/07/05 17:24
Messaggi: 2325
Residenza: ... come frontiera i confini del mondo...

MessaggioInviato: 23 Ott 2005 17:29    Oggetto: Rispondi citando

Meglio..... posto qui il codice che ho scritto

Codice:
Sub Passi_Ordinamento()



'* definizioni -----------------------------------------------
  Dim CurrentWS     As Worksheet    'foglio contenente la tabella
  Dim TempWS        As Worksheet    'foglio per matrice di transito
  Dim Temp1WS       As Worksheet    'foglio per matrice di transito
 
  Dim sArgFrom      As String       'argomento chiave da eaminare
  Dim sKeyOrd       As String       'chiave di ordinamento
  Dim sCont         As String       'debug
 
  Dim avMaxLen      As Variant      'matrice di lunghezze massime per ogni livello
  Dim avTmp         As Variant      'matrice temporanea per suddivisione in substringhe
 
  Dim iLivelli      As Integer      'numero massimo di livelli generale
  Dim iLivRiga      As Integer      'numero massimo di livelli per riga
  Dim l             As Integer      'indice di scansione livelli (substringhe)
  Dim c             As Integer      'indice di scansione colonne di substringhe
 
  Dim r             As Long         'indice di scansione righe
'* -----------------------------------------------------------
 
 
'* impostazioni iniziali -------------------------------------
 
  Set CurrentWS = Worksheets("Foglio1")
  Set TempWS = Worksheets("Foglio2")
  Set Temp1WS = Worksheets("Foglio3")
 
  iLivelli = -1
'* -----------------------------------------------------------
 
'************************************************************
'*               PRIMO PASSO                                *
'*----------------------------------------------------------*
'* analisi della tabella                                    *
'************************************************************
  With CurrentWS
   '*debug----------
   ' sCont = ""
   '*---------------
   
   '* ciclo di scansione fino alla prima cella vuota
    For r = 1 To .Rows.Count
     '* preleva contenuto
      sArgFrom = .Cells(r, 2)
      If Len(Trim(sArgFrom)) = 0 Then
       '* termina ciclo
        Exit For
      End If
     
     '* suddivide in substringhe
      avTmp = Split(sArgFrom, "-")
      If UBound(avTmp) > iLivelli Then
       '* memo il numero massimo di livelli
        iLivelli = UBound(avTmp) + 1
      End If
     
     '* ciclo di scrittura matrice di substringhe
     '* memorizza a partire dal secondo elemento
     '* nel primo il numero di livelli
      For l = 0 To UBound(avTmp)
        TempWS.Cells(r, l + 2) = avTmp(l)
      Next
      TempWS.Cells(r, 1) = l
       
   '*debug -----------------------
'      sCont = sCont _
'            & .Cells(r, 2).Text _
'            & vbLf
   '*-----------------------------
    Next
   
   '*debug-----------------------------
'    MsgBox sCont _
'         & String(3, vbLf) _
'         & "totale righe = " & r - 1 _
'         & String(3, vbLf) _
'         & "max Livelli = " & iLivelli
   '*----------------------------------
   
  End With
'************************************************************
 
 
 
'************************************************************
'*               SECONDO PASSO                              *
'*----------------------------------------------------------*
'* analisi della matrice di substringhe                     *
'************************************************************
  With TempWS
   '* dimensiona la matrice(interna)
   '* per la lunghezza max di ogni colonna
    ReDim avMaxLen(iLivelli - 1)
   
   '* ciclo di scansione per stabilire la lunghezza max
   '* di ogni colonna di substringhe
    For r = 1 To .Cells.Count
     '* rileva contenuto cella del numero di livelli
      iLivRiga = Int(.Cells(r, 1))
     
      If iLivRiga = 0 Then
       '* esce dal ciclo
        Exit For
      End If
     
     '* ciclo di scansione substringhe di riga
      For c = 2 To iLivRiga + 1
       '* rileva la substringa
        sArgFrom = .Cells(r, c)
        If Len(sArgFrom) > avMaxLen(c - 2) Then
         '*memo la lunghezza maggiore
          avMaxLen(c - 2) = Len(sArgFrom)
        End If
      Next
    Next
 
  End With
 
'************************************************************
 
 
'************************************************************
'*               TERZO PASSO                                *
'*----------------------------------------------------------*
'* normalizzazione delle substringhe                        *
'************************************************************
  With TempWS
   '* ciclo di scansione per  la normalizzazione
    For r = 1 To .Cells.Count
     '* rileva contenuto cella del numero di livelli
      iLivRiga = .Cells(r, 1)

      If iLivRiga = 0 Then
       '* esce dal ciclo
        Exit For
      End If

     '* ciclo di scansione substringhe di riga
      For c = 2 To iLivRiga + 1
       '* rileva la substringa
        sArgFrom = .Cells(r, c)
        Temp1WS.Cells(r, c - 1).NumberFormat = "@"
        If Len(sArgFrom) < avMaxLen(c - 2) Then
         '* normalizza con spazi a sinistra
         '* (nella seconda matrice di transito)
          Temp1WS.Cells(r, c - 1) = Space(avMaxLen(c - 2) - Len(sArgFrom)) _
                               & sArgFrom
        Else
          Temp1WS.Cells(r, c - 1) = sArgFrom
        End If
      Next
    Next

  End With
'************************************************************
 
'************************************************************
'*               QUARTO PASSO                                *
'*----------------------------------------------------------*
'* composizione della chiave di ordinamento                 *
'************************************************************
  With TempWS
   '* ciclo di scansione per  la normalizzazione
    For r = 1 To .Cells.Count
     '* rileva contenuto cella del numero di livelli
      iLivRiga = .Cells(r, 1)

      If iLivRiga = 0 Then
       '* esce dal ciclo
        Exit For
      End If
     
      sKeyOrd = ""
     '* ciclo di scansione substringhe di riga
      For c = 2 To iLivelli + 1
       '* rileva la substringa
        sArgFrom = .Cells(r, c)
       '* imposta la proprietà testo per la cella
        Temp1WS.Cells(r, c - 1).NumberFormat = "@"
        If Len(sArgFrom) = 0 Then
         '* normalizza con tutti spazi livelli vuoti
          Temp1WS.Cells(r, c - 1) = Space(avMaxLen(c - 2))
        End If
        sKeyOrd = sKeyOrd _
                & Temp1WS.Cells(r, c - 1) _
                & IIf((c - 1) = 1 Or (c - 1) = iLivelli, "", "-")
      Next
     
     '* debug ------------------------
     ' Debug.Print "<"; sKeyOrd; ">"
     '* ------------------------------
     
     '* memo chiave temporanea di ordinamento
      CurrentWS.Cells(r, 1).NumberFormat = "@"
      CurrentWS.Cells(r, 1) = sKeyOrd
   
    Next

  End With
'************************************************************
   
'************************************************************
'*               QUINTO PASSO                               *
'*----------------------------------------------------------*
'* ordinamento                                              *
'************************************************************
    CurrentWS.Rows("1:" & r - 1).Select
    Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
'************************************************************

  End

End Sub


per eseguirlo:
.1 aprire il documento di Word che contiene la tabella
.2 aprire una nuova cartella di Excel
.3 incollare la macro qui sopra descritta
.4 copiare la tabella di Word senza intestazione
.5 incollarla in B1 del Foglio1
.6 eseguire la macro
.7 copiare le celle, a partire da B1
.8 incollarle nella tabella di Word

et voilà.......
Top
Profilo Invia messaggio privato
torchiemana
Mortale devoto
Mortale devoto


Registrato: 28/09/05 14:31
Messaggi: 8
Residenza: roma

MessaggioInviato: 23 Ott 2005 18:16    Oggetto: Rispondi citando

GrayWolf ha scritto:
Mi sembra che la soluzione sia di difficile realizzazione, non impossibile ma complessa.


Intuivo la complessita' del problema... me lo hai confermato. Hai fatto un lavoro eccezionale, lo mettero in pratica quanto prima e ti farò sapere. GRAZIE!
Top
Profilo Invia messaggio privato
torchiemana
Mortale devoto
Mortale devoto


Registrato: 28/09/05 14:31
Messaggi: 8
Residenza: roma

MessaggioInviato: 24 Ott 2005 10:04    Oggetto: Rispondi citando

@ GrayWolf
Eccomi, ho provato a seguire le istruzioni: non ho capito "et voilà"!
In altre parole, non sono riuscito nell'intento!
Ho aperto la tabella word;
ho aperto excel ed ho incollato il programma che mi hai fornito, togliendo le parti descrittive (quelle tra le due file di asterischi);
ho incollato la tabella di word in B1 dello stesso foglio;
NON sono capace di eseguire la macro;
e mi sono fermato qui - Help!

Ti allego la tabella incriminata e ti ringrazio per la tua pazienza!

A-1
A-110
A-110-7
A-111
A-111-2
A-2
A-210
A-220
A-222
A-30
A-300-1-2
A-301
A-301-5002
A-301-5012
A-302
A-302-1
A-302-1000
A-302-1001
A-302-1004
A-302-1004-1
A-302-1004-2
A-302-2
A-302-2100-1
A-302-3
A-302-3001
A-302-3001-2
A-302-9999
A-303
A-304
A-305-11-2
A-306-6000
A-307
A-308
A-308-8000
A-310
A-311
A-315
A-316
A-319
A-400-2
A-400-4-1
A-501
A-601-2-1
A-602-1
A-604-1005
A-803
B
B-0-2
B-1
B-1-4
B-2
B-201
B-210
B-300
C-101
C-1-2
C-1-3
C-1-4
C-1-5
C-201
C-203
C-3
C-4
C-5
C-5-1
C-5-1-2
C-6
D-1
D-1-0
D-1-0
D-100
D-100-000
D-100-001
D-100-002
D-100-003
D-100-003 Q.F.
D-100-004
D-100-011
D-100-013
D-100-014
D-101
D-101-0100-2
D-101-1000
D-101-9100-1
D-104
D-1-1
D-110-2
D-110-2-0
D-110-2-1
D-111
D-111-1
D-111-1-11-2
D-111-1-11-4
D-112
D-113
D-113-1
D-114
D-114-1
D-114-2
D-116
D-117-4-0100
D-117-7
D-119-2
D-119-3
D-120
D-121
D-125
D-1-3
D-130
D-1-4
D-140
D-140-10
D-140-12
D-140-50
D-150
D-150-10
D-150-100
D-150-10-6
D-150-13
D-150-13-10
D-150-13-12
D-150-13-17
D-150-13-2
D-150-13-3
D-150-13-4
D-150-13-7
D-150-13-9
D-150-15
D-150-15
D-150-20
D-150-200
D-150-300-1
D-150-300-1-1
D-150-30-1
D-150-30-2
D-150-30-7
D-150-30-8
D-2
D-2-0
D-200-0
D-200-0200-0
D-200-0200-0
D-200-FARN
D-200-FARN-3
D-200-FARN-4
D-200-FARN-4
D-200-FARN-7
D-200-MADA
D-201
D-201-7
D-201-F8
D-201-FARN-CO
D-201-FARN-E3
D-201-FARN-F0
D-201-FARN-F4
D-202
D-2-0-3
D-2-0-4
D-210
D-2-10
D-211-0
D-212
D-213
D-2-4
D-2-6
D-3
D-30
D-303
D-304
D-304-RD
D-305
D-305-1-2
D-305-2
D-305-5
D-305-5-1
D-310-1
D-40
D-400
D-400-1
D-400-1-0
D-400-2
D-400-4
D-401
D-403-1
D-403-1-0
D-403-1-2
D-403-2-1
D-403-2-6
D-404
D-404-1
D-404-3
D-405-A4
D-50
D-500
D-500-1-0
D-500-1000
D-500-2000
D-501
D-501-1004
D-600
D-600-4
D-700
D-700-2
D-701
D-701-2001-3
D-702-2
D-702-4
E-100
E-10-11
E-103-0
E-103-100
E-10-5
E-10-5-4
E-15
E-15-3
E-16
E-21
E-21-3
E-230
E-232
E-235
E-244
E-246-1-4
E-3
E-300
E-300-4-2
E-300-4-3
E-501
E-6
F.0.7-1000
F-0-1
F-0-7-1000
F-1-PG
F-1-UAMA
F-2
F-200-1
F-203-23
F-204
F-3
F-301
F-309
F-4
F-400
F-401
F-402
F-411-7
F-413-1-7
F-450-3
F-450-6
F-450-6-PARM
G-0
G-001
G-004-2
G-005
G-005-4
G-006
G-007
G-008-3
G-011-6
G-020
G-0-2-0
G-025-5-3
G-028
G-0-3-3
G-035
G-0-3-5
G-036
G-5-6
G-9.2
G-900
G-901
G-9-1
G-9-2
H-1
H-106
H-107
H-108
H-200
H-300
H-300-9-1
H-5+5
H-50
J-100
J-100-3
J-100-4
J-101-2
J-101
J-102
J-103
J-104
J-106
J-110
J-111
J-120
J-120-0
J-120-KJ03-1
J-130
J-133
J-133-UC
J-150
J-150-20
J-150-2-1
J-201
J-300
K-5-1
K-7
K-7-KE21
K-9
K-A
K-B1
K-B-300-9
K-D1
K-D1-101
K-E
K-E-100
K-E-114
K-E21
K-E-322
K-E33
K-E-370-2
K-E-650
K-F2-1
K-G1-106
K-K-10
K-L5
L-1
L-2
L-3
L-3-C0
L-3-F0
L-3-K0
L-3-M
L-4
L-4-7
L-5
L-5-1
L-5-2
L-5-2-0
L-5-2-1
L-5-2-4
L-5-3-1
L-5-3-2
L-5-3-4
L-5-4
L-5-6
L-6
L-6-1000
L-6-1017
L-6-1019
L-6-1030
L-6-4000-2
L-7
L-7-10
L-7-3
L-7-3-1
L-7-7
L-8
L-8-B11
L-8-B16
L-8-D0
M-10
M-110
M-112
M-200
M-2-1
M-400-1
N-100
N-100-6-RAI
N-200
N-401-2
N-5-0
N-505

Grazie!
Top
Profilo Invia messaggio privato
GrayWolf
Dio maturo
Dio maturo


Registrato: 03/07/05 17:24
Messaggi: 2325
Residenza: ... come frontiera i confini del mondo...

MessaggioInviato: 24 Ott 2005 14:17    Oggetto: Rispondi citando

torchiemana ha scritto:
@ GrayWolf
In altre parole, non sono riuscito nell'intento!
Ho aperto la tabella word;
ho aperto excel ed ho incollato il programma che mi hai fornito, togliendo le parti descrittive (quelle tra le due file di asterischi);
ho incollato la tabella di word in B1 dello stesso foglio;
NON sono capace di eseguire la macro;
e mi sono fermato qui - Help!


dunque....
la colpa è mia.... mi sono spiegato male....
apri il foglio di excel
vai al menu strumenti
scegli macro -->macro
digita xxx
scegli nel combo in basso "questa cartella di lavoro"
premi il pulsante Crea
a questo punto ti appare un form bianco con scritto
Codice:
Sub xxx()

End Sub

selezioni le tre righe
le sostituisci con :
Codice:
Sub Passi_Ordinamento()

'**********************************************************
'* nota del 24.10.2005-1.01 (dopo il rilascio sul forum)  *
'*--------------------------------------------------------*
'* nel caso in cui il riferimento alfabetico              *
'* sia composto da più di una lettera, occorre            *
'* richiedere l'autorizzazione a normalizzare             *
'* anche tale riferimento.                                *
'* l'attuale struttura ordina nello stesso modo           *
'* in cui excel denomina le colonne: A-Z; AA-AZ;BA-BZ.... *
'*--------------------------------------------------------*
'* SENZA la normalizzazione della parte alfabetica        *
'* (vedi richiesta ed eccezione nella normalizzazione)    *
'* l'ordinamento avviene elencando prima tutte le chiavi  *
'* con radice A poi quelle con radice B e così via....    *
'**********************************************************

'* definizioni -----------------------------------------------
  Dim CurrentWS     As Worksheet    'foglio contenente la tabella
  Dim TempWS        As Worksheet    'foglio per matrice di transito
  Dim Temp1WS       As Worksheet    'foglio per matrice di transito
 
  Dim sArgFrom      As String       'argomento chiave da eaminare
  Dim sKeyOrd       As String       'chiave di ordinamento
  Dim sCont         As String       'debug
  Dim sMsg          As String       'generico: testo del messaggio
 
  Dim avMaxLen      As Variant      'matrice di lunghezze massime per ogni livello
  Dim avTmp         As Variant      'matrice temporanea per suddivisione in substringhe
 
  Dim iLivelli      As Integer      'numero massimo di livelli generale
  Dim iLivRiga      As Integer      'numero massimo di livelli per riga
  Dim l             As Integer      'indice di scansione livelli (substringhe)
  Dim c             As Integer      'indice di scansione colonne di substringhe
 
  Dim r             As Long         'indice di scansione righe

  Dim bNormalize    As Boolean      'segnale di normalizzazione parte alfabetica


'* -----------------------------------------------------------
 
 
'* impostazioni iniziali -------------------------------------
 
  Set CurrentWS = Worksheets("Foglio1")
  Set TempWS = Worksheets("Foglio2")
  Set Temp1WS = Worksheets("Foglio3")
 
  iLivelli = -1
'* -----------------------------------------------------------
 
 
'*-------------------------------------------------------------
'* vedi nota iniziale
  sMsg = "SI VUOLE LA NORMALIZZAZIONE ANCHE DELLA PARTE ALFABETICA ?" _
       & String(2, vbLf) _
       & "normalizzando l'ordine sarà quello con cui excel nomina le colonne" _
       & vbLf _
       & "(A-Z ; AA-AZ ; BA-BZ;....)" _
       & String(2, vbLf) _
       & "NON normalizzando l'ordinamento avverrà raggruppando tutte le chiavi" _
       & vbLf _
       & "che hano la stessa lettera iniziale (prima tutte le A, poi tutte le B)" _
       & vbLf _
       & "indipendentemente dal numero di caratteri che compongono la parte alfanumerica della chiave"
  If MsgBox(sMsg, _
            vbQuestion + vbYesNo _
           ) _
     = vbYes _
  Then
    bNormalize = True
  End If
'*-------------------------------------------------------------

  On Error GoTo Errori_Routine



'************************************************************
'*               PRIMO PASSO                                *
'*----------------------------------------------------------*
'* analisi della tabella                                    *
'************************************************************
  With CurrentWS
   '*debug----------
   ' sCont = ""
   '*---------------
   
   '* ciclo di scansione fino alla prima cella vuota
    For r = 1 To .Rows.Count
     '* preleva contenuto
      sArgFrom = .Cells(r, 2)
      If Len(Trim(sArgFrom)) = 0 Then
       '* termina ciclo
        Exit For
      End If
     
     '*---------------------
     '* debug
      If r = 92 Then
        Stop
      End If
     '*---------------------
     
     '* suddivide in substringhe
      avTmp = Split(sArgFrom, "-")
      If UBound(avTmp) + 1 > iLivelli Then
       '* memo il numero massimo di livelli
        iLivelli = UBound(avTmp) + 1
      End If
     
     '* ciclo di scrittura matrice di substringhe
     '* memorizza a partire dal secondo elemento
     '* nel primo il numero di livelli
      For l = 0 To UBound(avTmp)
        TempWS.Cells(r, l + 2) = avTmp(l)
      Next
      TempWS.Cells(r, 1) = l
       
   '*debug -----------------------
'      sCont = sCont _
'            & .Cells(r, 2).Text _
'            & vbLf
   '*-----------------------------
    Next
   
   '*debug-----------------------------
'    MsgBox sCont _
'         & String(3, vbLf) _
'         & "totale righe = " & r - 1 _
'         & String(3, vbLf) _
'         & "max Livelli = " & iLivelli
   '*----------------------------------
   
  End With
'************************************************************
 
 
 
'************************************************************
'*               SECONDO PASSO                              *
'*----------------------------------------------------------*
'* analisi della matrice di substringhe                     *
'************************************************************
  With TempWS
   '* dimensiona la matrice(interna)
   '* per la lunghezza max di ogni colonna
    ReDim avMaxLen(iLivelli - 1)
   
   '* ciclo di scansione per stabilire la lunghezza max
   '* di ogni colonna di substringhe
    For r = 1 To .Cells.Count
     '* rileva contenuto cella del numero di livelli
      iLivRiga = Int(.Cells(r, 1))
     
      If iLivRiga = 0 Then
       '* esce dal ciclo
        Exit For
      End If
     
     '* ciclo di scansione substringhe di riga
      For c = 2 To iLivRiga + 1
       '* rileva la substringa
        sArgFrom = .Cells(r, c)
        If Len(sArgFrom) > avMaxLen(c - 2) Then
         '*memo la lunghezza maggiore
          avMaxLen(c - 2) = Len(sArgFrom)
        End If
      Next
    Next
 
  End With
 
'************************************************************
 
 
'************************************************************
'*               TERZO PASSO                                *
'*----------------------------------------------------------*
'* normalizzazione delle substringhe                        *
'************************************************************
  With TempWS
   '* ciclo di scansione per  la normalizzazione
    For r = 1 To .Cells.Count
     '* rileva contenuto cella del numero di livelli
      iLivRiga = .Cells(r, 1)

      If iLivRiga = 0 Then
       '* esce dal ciclo
        Exit For
      End If

     '* ciclo di scansione substringhe di riga
      For c = 2 To iLivRiga + 1
       '* rileva la substringa
        sArgFrom = .Cells(r, c)
        Temp1WS.Cells(r, c - 1).NumberFormat = "@"
       
       '*----------------------------------------------
       '* vedi nota iniziale
        If Not bNormalize And _
           c = 2 _
        Then
         '* NON normalizza la parte alfabetica
         '* (che per definizione è il primo livello)
          Temp1WS.Cells(r, c - 1) = sArgFrom
        Else
          If Len(sArgFrom) < avMaxLen(c - 2) Then
           '* normalizza con spazi a sinistra
           '* (nella seconda matrice di transito)
            Temp1WS.Cells(r, c - 1) = Space(avMaxLen(c - 2) - Len(sArgFrom)) _
                                    & sArgFrom
          Else
            Temp1WS.Cells(r, c - 1) = sArgFrom
          End If
        End If
       '*----------------------------------------------
      Next
    Next

  End With
'************************************************************
 


'************************************************************
'*               QUARTO PASSO                                *
'*----------------------------------------------------------*
'* composizione della chiave di ordinamento                 *
'************************************************************
  With TempWS
   '* ciclo di scansione per  la normalizzazione
    For r = 1 To .Cells.Count
     '* rileva contenuto cella del numero di livelli
      iLivRiga = .Cells(r, 1)

      If iLivRiga = 0 Then
       '* esce dal ciclo
        Exit For
      End If
     
      sKeyOrd = ""
     '* ciclo di scansione substringhe di riga
      For c = 2 To iLivelli + 1
       '* rileva la substringa
        sArgFrom = .Cells(r, c)
       '* imposta la proprietà testo per la cella
        Temp1WS.Cells(r, c - 1).NumberFormat = "@"
        If Len(sArgFrom) = 0 Then
         '* normalizza con tutti spazi livelli vuoti
          Temp1WS.Cells(r, c - 1) = Space(avMaxLen(c - 2))
        End If
        sKeyOrd = sKeyOrd _
                & Temp1WS.Cells(r, c - 1) _
                & IIf((c - 1) = 1 Or (c - 1) = iLivelli, "", "-")
      Next
     
     '* debug ------------------------
     ' Debug.Print "<"; sKeyOrd; ">"
     '* ------------------------------
     
     '* memo chiave temporanea di ordinamento
      CurrentWS.Cells(r, 1).NumberFormat = "@"
      CurrentWS.Cells(r, 1) = sKeyOrd
   
    Next

  End With
'************************************************************
   


'************************************************************
'*               QUINTO PASSO                               *
'*----------------------------------------------------------*
'* ordinamento                                              *
'************************************************************
  CurrentWS.Rows("1:" & r - 1).Select
  Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
      OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
'************************************************************

  End

Errori_Routine:
  MsgBox Err.Number & vbLf & Err.Description
  Exit Sub
  Resume 0

End Sub


torni al Foglio1 (click su excel nella barra delle applicazioni)
copi la tabella da word
la incolli in B1 del Foglio1
vai al menu strumenti
scegli macro -->macro
(Passi_Ordinamento dovrebbe essere evidenziata)
premi il pulsante esegui.

NB.
ho ripostato il codice perchè ho fatto una variante che è spiegata nel messaggio che appare all'inizio dell'esecuzione

se ci fosse qualche problema puoi sempre contattarmi per messaggio privato
o per email (in chiaro nel mio profilo) facendoti riconoscere altrimenti il mio filtro scarta tutto quello che non è autorizzato
Top
Profilo Invia messaggio privato
GrayWolf
Dio maturo
Dio maturo


Registrato: 03/07/05 17:24
Messaggi: 2325
Residenza: ... come frontiera i confini del mondo...

MessaggioInviato: 24 Ott 2005 14:41    Oggetto: Rispondi citando

Il risutato che ho ottenuto dai tuoi dati, eseguendo la mia macro NON normalizzando la parte alfabetica (che per definizione è considerata solo nel primo livello) è questo:

Citazione:

A-1
A-2
A-30
A-110
A-110-7
A-111
A-111-2
A-210
A-220
A-222
A-300-1-2
A-301
A-301-5002
A-301-5012
A-302
A-302-1
A-302-2
A-302-3
A-302-1000
A-302-1001
A-302-1004-1
A-302-1004
A-302-1004-2
A-302-2100-1
A-302-3001
A-302-3001-2
A-302-9999
A-303
A-304
A-305-11-2
A-306-6000
A-307
A-308
A-308-8000
A-310
A-311
A-315
A-316
A-319
A-400-2
A-400-4-1
A-501
A-601-2-1
A-602-1
A-604-1005
A-803
B
B-0-2
B-1
B-1-4
B-2
B-201
B-210
B-300
C-1-2
C-1-3
C-1-4
C-1-5
C-3
C-4
C-5
C-5-1
C-5-1-2
C-6
C-101
C-201
C-203
D-1
D-1-0
D-1-0
D-1-1
D-1-3
D-1-4
D-2-0
D-2-0-3
D-2-0-4
D-2
D-2-4
D-2-6
D-2-10
D-3
D-30
D-40
D-50
D-100
D-100-000
D-100-001
D-100-002
D-100-003
D-100-004
D-100-011
D-100-013
D-100-014
D-100-003 Q.F.
D-101
D-101-0100-2
D-101-1000
D-101-9100-1
D-104
D-110-2
D-110-2-0
D-110-2-1
D-111-1
D-111-1-11-2
D-111-1-11-4
D-111
D-112
D-113-1
D-113
D-114-1
D-114-2
D-114
D-116
D-117-4-0100
D-117-7
D-119-2
D-119-3
D-120
D-121
D-125
D-130
D-140-10
D-140-12
D-140
D-140-50
D-150-10-6
D-150-10
D-150-13
D-150-13-2
D-150-13-3
D-150-13-4
D-150
D-150-13-7
D-150-13-9
D-150-13-10
D-150-13-12
D-150-13-17
D-150-15
D-150-15
D-150-20
D-150-30-1
D-150-30-2
D-150-30-7
D-150-30-8
D-150-100
D-150-200
D-150-300-1
D-150-300-1-1
D-200-0
D-200-0200-0
D-200-0200-0
D-200-FARN-3
D-200-FARN-4
D-200-FARN-4
D-200-FARN-7
D-200-FARN
D-200-MADA
D-201
D-201-7
D-201-F8
D-201-FARN-CO
D-201-FARN-E3
D-201-FARN-F0
D-201-FARN-F4
D-202
D-210
D-211-0
D-212
D-213
D-303
D-304
D-304-RD
D-305-1-2
D-305
D-305-2
D-305-5
D-305-5-1
D-310-1
D-400
D-400-1
D-400-1-0
D-400-2
D-400-4
D-401
D-403-1
D-403-1-0
D-403-1-2
D-403-2-1
D-403-2-6
D-404
D-404-1
D-404-3
D-405-A4
D-500
D-500-1-0
D-500-1000
D-500-2000
D-501
D-501-1004
D-600
D-600-4
D-700
D-700-2
D-701
D-701-2001-3
D-702-2
D-702-4
E-3
E-6
E-10-5
E-10-5-4
E-10-11
E-15-3
E-15
E-16
E-21
E-21-3
E-100
E-103-0
E-103-100
E-230
E-232
E-235
E-244
E-246-1-4
E-300
E-300-4-2
E-300-4-3
E-501
F-0-1
F-0-7-1000
F-1-PG
F-1-UAMA
F-2
F-3
F-4
F-200-1
F-203-23
F-204
F-301
F-309
F-400
F-401
F-402
F-411-7
F-413-1-7
F-450-3
F-450-6
F-450-6-PARM
F.0.7-1000
G-0-2-0
G-0-3-3
G-0-3-5
G-0
G-001
G-004-2
G-005
G-005-4
G-5-6
G-006
G-007
G-008-3
G-9-1
G-9-2
G-011-6
G-020
G-025-5-3
G-028
G-035
G-036
G-9.2
G-900
G-901
H-1
H-50
H-106
H-107
H-108
H-200
H-300
H-300-9-1
H-5+5
J-100
J-100-3
J-100-4
J-101-2
J-101
J-102
J-103
J-104
J-106
J-110
J-111
J-120
J-120-0
J-120-KJ03-1
J-130
J-133
J-133-UC
J-150-2-1
J-150-20
J-150
J-201
J-300
K-5-1
K-7
K-7-KE21
K-9
K-A
K-B-300-9
K-E
K-E-100
K-E-114
K-E-322
K-E-370-2
K-E-650
K-K-10
K-B1
K-D1-101
K-D1
K-F2-1
K-G1-106
K-L5
K-E21
K-E33
L-1
L-2
L-3
L-3-M
L-3-C0
L-3-F0
L-3-K0
L-4-7
L-4
L-5-1
L-5-2
L-5-2-0
L-5-2-1
L-5-2-4
L-5-3-1
L-5-3-2
L-5-3-4
L-5-4
L-5-6
L-5
L-6
L-6-1000
L-6-1017
L-6-1019
L-6-1030
L-6-4000-2
L-7-3
L-7-3-1
L-7-7
L-7-10
L-7
L-8
L-8-D0
L-8-B11
L-8-B16
M-2-1
M-10
M-110
M-112
M-200
M-400-1
N-5-0
N-100
N-100-6-RAI
N-200
N-401-2
N-505


come potrai notare ci sono anomalie (esempio D-100-003 Q.F. oppure F.0.7-1000) che dipendono dalla struttura della chiave; il codice considera 003 Q.F. oppure F.0.7 come unico livello e quindi dimensiona tutti gli altri (con spazi a sinistra) che sono giocoforza minori come valore di testo.
Top
Profilo Invia messaggio privato
GrayWolf
Dio maturo
Dio maturo


Registrato: 03/07/05 17:24
Messaggi: 2325
Residenza: ... come frontiera i confini del mondo...

MessaggioInviato: 24 Ott 2005 14:52    Oggetto: Rispondi citando

mi correggo:

per F.0.7 anche se tutte le altre substringhe del primo livello, NON sono
normalizzate con spazi a sinistra, è comunque una stringa più lunga delle altre.
Top
Profilo Invia messaggio privato
torchiemana
Mortale devoto
Mortale devoto


Registrato: 28/09/05 14:31
Messaggi: 8
Residenza: roma

MessaggioInviato: 24 Ott 2005 17:09    Oggetto: Rispondi citando

Lupo Grigio, cerco di arrancare dietro la tua graditissima celerità! Adesso non posso fare altro che ringraziarti; poi ti farò sapere.
GRAZIE
Top
Profilo Invia messaggio privato
GrayWolf
Dio maturo
Dio maturo


Registrato: 03/07/05 17:24
Messaggi: 2325
Residenza: ... come frontiera i confini del mondo...

MessaggioInviato: 27 Ott 2005 11:32    Oggetto: Rispondi

Revisione della macro per Word inserita precedentemente

Codice:
Sub Passi_Ordinamento()

'***********************************************************
'* nota1 del 24.10.2005-1.01 (dopo il rilascio sul forum)  *
'*---------------------------------------------------------*
'* nel caso in cui il riferimento alfabetico               *
'* sia composto da più di una lettera, occorre             *
'* richiedere l'autorizzazione a normalizzare              *
'* anche tale riferimento.                                 *
'* l'attuale struttura ordina nello stesso modo            *
'* in cui excel denomina le colonne: A-Z; AA-AZ;BA-BZ....  *
'*---------------------------------------------------------*
'* SENZA la normalizzazione della parte alfabetica         *
'* (vedi richiesta ed eccezione nella normalizzazione)     *
'* l'ordinamento avviene elencando prima tutte le chiavi   *
'* con radice A poi quelle con radice B e così via....     *
'***********************************************************

'***********************************************************
'* nota2 del 27.10.2005                                    *
'*---------------------------------------------------------*
'* dopo alcune prove effettuate sugli originali forniti:   *
'*                                                         *
'* .1 modificata la normalizzazione con zeri anzichè spazi *
'* .2 introdotta la pulizia delle zone di lavoro           *
'* .3 estensione della NON  normalizzazione, se  scelta, a *
'*    TUTTE  le  parti alfabetiche o alfanumeriche nei li- *
'*    velli di chiave                                      *
'***********************************************************

'* definizioni -----------------------------------------------
  Dim CurrentWS     As Worksheet    'foglio contenente la tabella
  Dim TempWS        As Worksheet    'foglio per matrice di transito
  Dim Temp1WS       As Worksheet    'foglio per matrice di transito
 
  Dim oRange        As Range        'generico: di transito
 
  Dim sArgFrom      As String       'argomento chiave da eaminare
  Dim sKeyOrd       As String       'chiave di ordinamento
  Dim sCont         As String       'debug
  Dim sMsg          As String       'generico: testo del messaggio
 
  Dim avMaxLen      As Variant      'matrice di lunghezze massime per ogni livello
  Dim avTmp         As Variant      'matrice temporanea per suddivisione in substringhe
 
  Dim iLivelli      As Integer      'numero massimo di livelli generale
  Dim iLivRiga      As Integer      'numero massimo di livelli per riga
  Dim l             As Integer      'indice di scansione livelli (substringhe)
  Dim c             As Integer      'indice di scansione colonne di substringhe
 
  Dim r             As Long         'indice di scansione righe

  Dim bNormalize    As Boolean      'segnale di normalizzazione parte alfabetica


'*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 27.10.2005 >>>>>>>>
  Const Zeroes As String = "00000000000000000000000000000000000000000000000000"
'*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

'* -----------------------------------------------------------
 
 
'* impostazioni iniziali -------------------------------------
 
  Set CurrentWS = Worksheets("Foglio1")
  Set TempWS = Worksheets("Foglio2")
  Set Temp1WS = Worksheets("Foglio3")
 
  iLivelli = -1
 
'*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 27.10.2005 >>>>>>>>
'* pulizia dei fogli temporanei
  With TempWS
    .Activate
    Cells.Select
    Selection.ClearContents
  End With
 
  With Temp1WS
    .Activate
    Cells.Select
    Selection.ClearContents
  End With

'* pulizia della colonna per la chiave di ordinamento
 
  With CurrentWS
    .Activate
    Set oRange = .Columns("A:A")
    oRange.ClearContents
  End With
'*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
 
'* -----------------------------------------------------------
 
 
'*-------------------------------------------------------------
'* vedi nota1 iniziale
  sMsg = "SI VUOLE LA NORMALIZZAZIONE ANCHE DELLE PARTI ALFABETICHE o ALFANUMERICHE?" _
       & String(2, vbLf) _
       & "normalizzando l'ordine sarà quello con cui excel nomina le colonne" _
       & vbLf _
       & "(A-Z ; AA-AZ ; BA-BZ;....)" _
       & String(2, vbLf) _
       & "NON normalizzando l'ordinamento avverrà raggruppando tutte le chiavi" _
       & vbLf _
       & "che hano la stessa lettera iniziale (prima tutte le A, poi tutte le B)" _
       & vbLf _
       & "indipendentemente dal numero di caratteri che compongono la parte alfanumerica della chiave"
  If MsgBox(sMsg, _
            vbQuestion + vbYesNo _
           ) _
     = vbYes _
  Then
    bNormalize = True
  End If
'*-------------------------------------------------------------

  On Error GoTo Errori_Routine



'************************************************************
'*               PRIMO PASSO                                *
'*----------------------------------------------------------*
'* analisi della tabella                                    *
'************************************************************
  With CurrentWS
   '*debug----------
   ' sCont = ""
   '*---------------
   
   '* ciclo di scansione fino alla prima cella vuota
    For r = 1 To .Rows.Count
     '* preleva contenuto
      sArgFrom = .Cells(r, 2)
      If Len(Trim(sArgFrom)) = 0 Then
       '* termina ciclo
        Exit For
      End If
     
     '*---------------------
     '* debug
'      If r = 92 Then
'        Stop
'      End If
     '*---------------------
     
     '* suddivide in substringhe
      avTmp = Split(sArgFrom, "-")
      If UBound(avTmp) + 1 > iLivelli Then
       '* memo il numero massimo di livelli
        iLivelli = UBound(avTmp) + 1
      End If
     
     '* ciclo di scrittura matrice di substringhe
     '* memorizza a partire dal secondo elemento
     '* nel primo il numero di livelli
      For l = 0 To UBound(avTmp)
        TempWS.Cells(r, l + 2) = avTmp(l)
      Next
      TempWS.Cells(r, 1) = l
       
   '*debug -----------------------
'      sCont = sCont _
'            & .Cells(r, 2).Text _
'            & vbLf
   '*-----------------------------
    Next
   
   '*debug-----------------------------
'    MsgBox sCont _
'         & String(3, vbLf) _
'         & "totale righe = " & r - 1 _
'         & String(3, vbLf) _
'         & "max Livelli = " & iLivelli
   '*----------------------------------
   
  End With
'************************************************************
 
 
 
'************************************************************
'*               SECONDO PASSO                              *
'*----------------------------------------------------------*
'* analisi della matrice di substringhe                     *
'************************************************************
  With TempWS
   '* dimensiona la matrice(interna)
   '* per la lunghezza max di ogni colonna
    ReDim avMaxLen(iLivelli - 1)
   
   '* ciclo di scansione per stabilire la lunghezza max
   '* di ogni colonna di substringhe
    For r = 1 To .Cells.Count
     '* rileva contenuto cella del numero di livelli
      iLivRiga = Int(.Cells(r, 1))
     
      If iLivRiga = 0 Then
       '* esce dal ciclo
        Exit For
      End If
     
     '* ciclo di scansione substringhe di riga
      For c = 2 To iLivRiga + 1
       '* rileva la substringa
        sArgFrom = .Cells(r, c)
        If Len(sArgFrom) > avMaxLen(c - 2) Then
         '*memo la lunghezza maggiore
          avMaxLen(c - 2) = Len(sArgFrom)
        End If
      Next
    Next
 
  End With
 
'************************************************************
 
 
'************************************************************
'*               TERZO PASSO                                *
'*----------------------------------------------------------*
'* normalizzazione delle substringhe                        *
'************************************************************
  With TempWS
   '* ciclo di scansione per  la normalizzazione
    For r = 1 To .Cells.Count
     '* rileva contenuto cella del numero di livelli
      iLivRiga = .Cells(r, 1)

      If iLivRiga = 0 Then
       '* esce dal ciclo
        Exit For
      End If

     '* ciclo di scansione substringhe di riga
      For c = 2 To iLivRiga + 1
       '* rileva la substringa
        sArgFrom = .Cells(r, c)
        Temp1WS.Cells(r, c - 1).NumberFormat = "@"
       
       '*----------------------------------------------
       '* vedi nota1 iniziale
        If Not bNormalize Then
          If Not IsNumeric(sArgFrom) Then
           '* NON normalizza la parte alfabetica
           '* (vedi nota2 iniziale)
            Temp1WS.Cells(r, c - 1) = sArgFrom
          Else
            If Len(sArgFrom) < avMaxLen(c - 2) Then
             '* normalizza con zeri a sinistra
             '* (nella seconda matrice di transito)
             
             '*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 27.10.2005 >>>>>>>>
              Temp1WS.Cells(r, c - 1) = Left(Zeroes, avMaxLen(c - 2) - Len(sArgFrom)) _
                                      & sArgFrom
             '*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
           
            Else
              Temp1WS.Cells(r, c - 1) = sArgFrom
            End If
          End If
        End If
       
        If bNormalize Then
          If Len(sArgFrom) < avMaxLen(c - 2) Then
           '* normalizza con zeri a sinistra
           '* (nella seconda matrice di transito)
           
           '*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 27.10.2005 >>>>>>>>
            Temp1WS.Cells(r, c - 1) = Left(Zeroes, avMaxLen(c - 2) - Len(sArgFrom)) _
                                    & sArgFrom
           '*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
         
          Else
            Temp1WS.Cells(r, c - 1) = sArgFrom
          End If
        End If
       '*----------------------------------------------
      Next
    Next

  End With
'************************************************************
 


'************************************************************
'*               QUARTO PASSO                                *
'*----------------------------------------------------------*
'* composizione della chiave di ordinamento                 *
'************************************************************
  With TempWS
   '* ciclo di scansione per  la normalizzazione
    For r = 1 To .Cells.Count
     '* rileva contenuto cella del numero di livelli
      iLivRiga = .Cells(r, 1)

      If iLivRiga = 0 Then
       '* esce dal ciclo
        Exit For
      End If
     
      sKeyOrd = ""
     '* ciclo di scansione substringhe di riga
      For c = 2 To iLivelli + 1
       '* rileva la substringa
        sArgFrom = .Cells(r, c)
       '* imposta la proprietà testo per la cella
        Temp1WS.Cells(r, c - 1).NumberFormat = "@"
        If Len(sArgFrom) = 0 Then
         '* normalizza con tutti zeri i livelli vuoti
         
         '*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 27.10.2005 >>>>>>>>
          Temp1WS.Cells(r, c - 1) = Left(Zeroes, avMaxLen(c - 2))
         '*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
       
        End If
        sKeyOrd = sKeyOrd _
                & Temp1WS.Cells(r, c - 1) _
                & IIf((c - 1) = iLivelli, "", "-")
      Next
     
     '* debug ------------------------
     ' Debug.Print "<"; sKeyOrd; ">"
     '* ------------------------------
     
     '* memo chiave temporanea di ordinamento
      CurrentWS.Cells(r, 1).NumberFormat = "@"
      CurrentWS.Cells(r, 1) = sKeyOrd
   
    Next

  End With
'************************************************************
   


'************************************************************
'*               QUINTO PASSO                               *
'*----------------------------------------------------------*
'* ordinamento                                              *
'************************************************************
  CurrentWS.Rows("1:" & r - 1).Select
  Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
      OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
  CurrentWS.Columns("A:A").Select
'************************************************************

  End

Errori_Routine:
  MsgBox Err.Number & vbLf & Err.Description
  Exit Sub
  Resume 0


End Sub


Grazie in anticipo ( a chi volesse farne)
per suggerimenti e/o segnalazione di anomalie
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Software - generale Tutti i fusi orari sono GMT + 2 ore
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi