Rientro seconda rig...
 
Notifiche
Cancella tutti

La consultazione del forum è libera per tutti.

Per poter porre un quesito è invece necessario essere un utente registrato (clicca qui se non lo sei).

Tutti gli utenti che richiedono un supporto, come da REGOLAMENTO, sono caldamente invitati ad allegare un file di esempio con l'indicazione di quello che si desidera ottenere.

Rientro seconda riga

8 Post
2 Utenti
2 Reactions
796 Visualizzazioni
Forum 1
(@aurelio)
Post: 0
New Member
Avviatore di Topic
 

Salve

vorrei sapere se è possibile, e come fare per, ottenere la seguente formattazione in una o più celle di un foglio di Excel:

dopo aver formattato le celle con testo a capo, mi servirebbe che nella seconda riga il rientro avvenisse non allineato con la prima ma dopo "n" spazi vuoti (nell'esempio allegato 7 spazi)

Allego il file di esempio:

 Spiegandomi meglio, vorrei che la frase contenuta nella cella:

3456 Il governo ottiene la fiducia con 172 sì. Il M5s non vota.

Draghi da Mattarella

comparisse con la seguente formattazione:

3456 Il governo ottiene la fiducia con 172 sì. Il M5s non vota.

        Draghi da Mattarella

Grazie

 

 

Versione di Excel
Sistema operativo
 
Postato : 14/07/2022 16:50
cromagno
(@cromagno)
Post: 174
Moderatore
 

Ciao,
scusa ma che c'entra il file che allegato:

Dove sarebbero i "rientri" che vuoi ottenere?
Ad ogni modo, sempre che non abbia capito male, quando crei la nuova stringa, nella "concatenazione" puoi usare anche la funzione RIPETI(" ";7) dove il 7 indica quante volte deve essere ripetuto lo spazio.

"Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

 
Postato : 14/07/2022 17:48
Forum 1
(@aurelio)
Post: 0
New Member
Avviatore di Topic
 

Scusami ma ho caricato il file sbagliato !!!!

Ho formattato una colonna di Excel con testo a capo ed allineamento a sinistra.

Ogni stringa contiene sempre un numero iniziale di 4 o 5 caratteri.

In molti casi la stringa è più lunga della colonna e quindi si osserva il rientro a capo.

Per tale motivo molte celle contengono due righe, naturalmente tutte allineate a sinistra.

Tanto premesso a me servirebbe che nei casi in cui avviene il rientro (perché la “frase” è più lunga della colonna) la seconda riga non fosse, anch’essa, allineata a sinistra ma alla prima lettera dopo il numero .

 
Postato : 14/07/2022 18:24
cromagno
(@cromagno)
Post: 174
Moderatore
 
Postato da: @aurelio

Tanto premesso a me servirebbe che nei casi in cui avviene il rientro (perché la “frase” è più lunga della colonna) la seconda riga non fosse, anch’essa, allineata a sinistra ma alla prima lettera dopo il numero .

Se a determinare la "mandata a capo" è solamente la larghezza della colonna, mi spiace ma a mio modo di vedere non puoi essere preciso.
Diverso se sei tu a determinare ogni quante lettere si deve mandare a capo.
Rimane il fatto che se tale "formattazione" la vuoi nella stessa cella (quindi senza creare una nuova stringa) allora devi usare per forza il VBA.

"Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

 
Postato : 14/07/2022 18:44
Forum 1
(@aurelio)
Post: 0
New Member
Avviatore di Topic
 

Se ho capito bene ciò che mi interessa si può fare solo con il VBA.

E' possibile averne il codice ?  (da utilizzare nel file esempio allegato)

Grazie

 
Postato : 14/07/2022 19:14
cromagno
(@cromagno)
Post: 174
Moderatore
 

Ciao,
scusa ma d'estate il tempo libero è quello che è...
Certo Excel non è proprio il software adatto per queste "manipolazioni" di stringhe, comunque, con VBA puoi ottenere una cosa del genere:

Per avere il testo correttamente allineato devi per forza utilizzare dei font monospazio (io ho usato Courier New ).
Il codice è assegnato al pulsante che vedi in foto; seleziona la cella che vuoi "formattare" e clicca sul pulsante.
Il codice utilizzato:

Sub IndentMyCell()
    Dim i As Long
    Dim ActString As String
    Dim NewString As String
    Dim LastSpaceCh As Integer
    Dim ActSpaceCh As Integer
    Dim FirstTab As Integer
    Dim FirstSpace As Integer
    Dim ActLine As Integer
    Dim NumCh As Integer
    Dim StrLen As Integer
    Dim LastCh As Integer
    Dim InitCh As Integer
    
    ActString = Replace(ActiveCell.Value, Chr(10), "")
    For i = 1 To 100
        ActString = Replace(ActString, "  ", " ")
    Next i
    FirstSpace = InStr(1, ActString, " ")
    FirstTab = 10   'numero di spazi per il rientro
    StrLen = 50     'numero caratteri per linea
    ActLine = 1
    InitCh = 1
    If FirstSpace = 0 Then GoTo Ultima_Parte
    ActString = Mid(ActString, 1, FirstSpace - 1) & Replace(ActString, " ", Space(FirstTab - FirstSpace + 1), FirstSpace, 1)
    LastCh = Len(ActString)
    
    For i = 1 To LastCh
        If i < LastCh Then
            If Mid(ActString, i, 1) = " " Then
                LastSpaceCh = ActSpaceCh
                ActSpaceCh = i - InitCh + 1
                
                If ActSpaceCh > IIf(ActLine > 1, StrLen - FirstTab, StrLen) Then
                    NewString = NewString & Mid(ActString, InitCh, LastSpaceCh - 1) & Chr(10) & Space(FirstTab)
                    ActLine = ActLine + 1
                    InitCh = InitCh + LastSpaceCh
                End If
            End If
        DoEvents
        End If
    Next i

Ultima_Parte:
    NewString = NewString & Mid(ActString, InitCh, StrLen)
    With ActiveCell
        .Value = Trim(NewString)
        .Font.Name = "Courier New"  'Font Monospaced
        .WrapText = True
        .ColumnWidth = 200
        .EntireColumn.AutoFit
        .EntireRow.AutoFit
    End With
End Sub

 

modifica questi due numeri per la spaziatura del rientro e il numero di caratteri per linea:

Adatta il codice per le tue reali esigenze.
Ti riallego il file...

 

"Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

 
Postato : 16/07/2022 16:31
Forum 1
(@aurelio)
Post: 0
New Member
Avviatore di Topic
 

Ti ringrazio

per l'uso che devo farne mi sembra un pò complesso anche per la presenza di un pulsante di comando che implica comunque ulteriori azioni..

Pertanto accetto tranquillamente quanto hai scritto in prima battuta "...Se a determinare la "mandata a capo" è solamente la larghezza della colonna, mi spiace ma a mio modo di vedere non puoi essere preciso. E' esattamente ciò che speravo fosse possibile, ma purtroppo non è così. Mi adeguerò.

Ti ringrazio per la disponibilità. Buon lavoro.

 
Postato : 18/07/2022 15:58
cromagno
(@cromagno)
Post: 174
Moderatore
 
Postato da: @aurelio

per l'uso che devo farne mi sembra un pò complesso anche per la presenza di un pulsante di comando che implica comunque ulteriori azioni..

il pulsante è a scopo d'esempio, non sapendo la struttura reale del tuo file.
Per questo motivo ti ho scritto di adattarlo; potresti ad esempio sfruttare l'evento Change del foglio per rendere tutto automatico.
In alternativa passa a Word che essendo un editor di testo ha anche questa funzione integrata.

"Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare."

 
Postato : 18/07/2022 16:36
Aurelio and Aurelio reacted
Condividi:
My Agile Privacy
Questo sito utilizza cookie tecnici e di profilazione. Cliccando su accetta si autorizzano tutti i cookie di profilazione. Cliccando su rifiuta o la X si rifiutano tutti i cookie di profilazione. Cliccando su personalizza è possibile selezionare quali cookie di profilazione attivare.
Attenzione: alcune funzionalità di questa pagina potrebbero essere bloccate a seguito delle tue scelte privacy
     Scarica il nostro ebook gratuito     

Unisciti a oltre 35.000 professionisti
che hanno già scelto di semplificare il proprio lavoro
e aumentare la produttività con la nostra newsletter!

Scarica l’ebook con i
migliori trucchi e suggerimenti per Excel
selezionati per te da Excel Academy

Download