Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Accidenti, oggi ho scoperto che anche le lettere minuscole accentate si possono rendere accentate in maiuscolo senza utilizzare l'apostrofo(apice).
Pensa che non so come si ottiene da tastiera la lettera accentata PATTÈ, l'ho dovuta copiare e incollare altrimenti l'avrei scritta PATTE' come avrebbero fatto in molti.
Quindi, fin qui, tutto OK. interviene sia sulla colonna A del Cognome e anche sulla C della Residenza.
Ho cercato di scoprire cosa potesse fare il tuo codice riga per riga ma non essendoci un commento ci ho rinunciato, non posso dire che ho fatto un atto di fede perchè ho voluto provarla mettendo blank davanti ... in fondo, mettendo lettere minuscole intercalate a maiuscole e con accenti finali ma funziona alla grande. Direi eccezionale, ma sempre con il tarlo di prendere il pacchetto così com'è.
Pertanto fino qui, OK. Se vuoi darmi in pasto un altro pezzo di codice per proseguire, lo aspetto con ansia.
Intanto commento la parte che immagino risulti *ostica* del codice precedente:
With sh
'trovo l'ultima cella con un valore in colonna A
lRiga = .Range("A" & .Rows.Count).End(xlUp).Row
'definisco il range con nomi e cognomi
Set rng = .Range("A2:A" & lRiga)
'ciclo in range; per ogni cella nel range
For Each c In rng
'pulisco le due variabili
s = ""
v = ""
'in c
With c
'divido la stringa della cella in tante parti
'utilizzando lo spazio " " come separatore
v = Split(.Value, " ")
'per ogni parte ottenuta
For lng = 0 To UBound(v)
'se la parte è diversa da stringa vuota
If v(lng) <> "" Then
'aggiungo la parte alla variabile s
s = s & v(lng) & " "
End If
Next
'modifico il valore della cella
'mettendo tutto maiuscolo la stringa s
'ed eliminando l'ultimo carattere
'(nello specifico è uno spazio che so
'di avere nella stringa)
.Value = UCase(Mid(s, 1, Len(s) - 1))
'pulisco le variabili
s = ""
v = ""
'divido la stringa della colonna C
'(Offset(0,2)
v = Split(.Offset(0, 2).Value)
'ripeto quanto fatto per la colonna A
For lng = 0 To UBound(v)
If v(lng) <> "" Then
s = s & v(lng) & " "
End If
Next
.Offset(0, 2).Value = UCase(Mid(s, 1, Len(s) - 1))
End With
Next
End With
Per le accentate, vedi qui: http://www.asciitable.it/asciiext.asp
ALT+0192 ti darà À, ecc.
Vedo di andare avanti... ;-)