You are here:--[RISOLTO] Split e copia dati da Celle Foglio1 a Celle Foglio2
[RISOLTO] Split e copia dati da Celle Foglio1 a Celle Foglio22018-06-13T09:24:29+01:00

Home Forum Domande su Excel VBA e MACRO [RISOLTO] Split e copia dati da Celle Foglio1 a Celle Foglio2

  • Autore
    Articoli
  • Avatarrexottantotto
    Partecipante
      Post totali: 158

      Nel file ho due Fogli:

      Foglio1

      Foglio2

      Nelle Celle A1:A3 del Foglio1 ho inserito alcune stringhe di diversa lunghezza.

      Sullo stesso Foglio1 ho inserito un pulsante Apri Form con il quale apro la UserForm1.

      Quando apro la UserForm1 la ListBox1 che si trova sulla stessa form viene popolata con le stringhe che si trovano nelle Celle A1:A3 del Foglio1.

      Sulla UserForm1 ho inserito anche il pulsante Copia.

      Su questo pulsante ho messo questa sub:

      Private Sub Copia_Click()
      Dim sh1 As Worksheet
      Dim sh2 As Worksheet
      Dim lRiga As Long
      Dim rng As Range

      With ThisWorkbook
      Set sh1 = .Worksheets(“Foglio1”)
      Set sh2 = .Worksheets(“Foglio2”)
      End With

      With sh1
      Set rng = sh1.Range(“A1:A3”).CurrentRegion
      rng.Copy
      End With

      With sh2
      lRiga = .Range(“A” & .Rows.Count).End(xlUp).Row + 1
      .Range(“A” & lRiga).PasteSpecial
      End With

      Set sh1 = Nothing
      Set sh2 = Nothing

      End Sub

      Con questa sub i dati che si trovano nelle Celle A1:A3 del Foglio1 vengono copiati nel Foglio 2 a partire dalla Cella A2.

      Non voglio fare questo, ma copiare le stringhe delle Celle A1:A3 del Foglio1 nella Colonna A del Foglio2 come meglio spiegato nello stesso Foglio2 ottenendo il risultato riportato nel Foglio3.

      Vorrei anche poter selezionare la stringa da copiare perchè non sempre devo copiare tutte e tre le stringe.

      Specifico che le Celle A1:A7 del Foglio2 sono formattate in questo modo:

      Larghezza 81

      Altezza 20

      Carattere Calibri 11

      http://www.filedropper.com/datidafoglio1afoglio2

      • Questo argomento è stato modificato 1 anno, 6 mesi fa da sid sid.
      • Questo argomento è stato modificato 1 anno, 5 mesi fa da sid sid.
    • Avatarrexottantotto
      Partecipante
        Post totali: 158

        Scusate, ho corretto il file e lo allego nuovamente.

        http://www.filedropper.com/datidafoglio1afoglio2v1_1

      • Avatarrexottantotto
        Partecipante
          Post totali: 158

          Forse sarebbe più aderente a quello che vorrei realizzare modificare il titolo in questo modo:

           

          Split e copia dati da Celle Foglio1 a Celle Foglio2

        • sidsid
          Moderatore
            Post totali: 723

            Ciao
            Volevo capire perchè splittare il testo su 2 righe; senza scomodare vba potresti adattare la riga al testo inserito, quindi usare solo una riga.
            Non va bene?

          • Avatarrexottantotto
            Partecipante
              Post totali: 158

              Lo scopo finale di questo lavoro è trasferire le stringhe che sono nelle celle A1:A3 del Foglio1 alle celle A1:A7 del Foglio2 come spiegato nel Foglio2 ottenendo il risultato come spiegato nel Foglio3.

              Il trasferimento viene fatto cliccando sul pulsante COPIA che ho messo sulla UserForm1.

              Nella UserForm1 ho messo una listbox che viene popolata con le stringhe del Foglio1.

              Specifico che le Celle A1:A7 del Foglio2 sono formattate in questo modo:

              Larghezza 90

              Altezza 20

              Carattere Calibri 11

              La necessità di dividere la stringa sta nel fatto che dalla cella originaria A1 del Foglio1 la stringa la devo mettere nelle due celle A1 e A2 del Foglio2, e così per la stringa che sta nella cella Ae del Foglio1 la devo mettere nelle due celle A6 e A7 del Foglio2.

              Un’ultima cosa.

              Siccome l’inserimento nel Foglio2 non viene fatto per tutte e tre le stringhe che sono nelle celle A1:A3 del Foglio1 c’è un modo per selezionare dalla listbox che sta sulla Userfom1 solo quella o quelle che voglio inserire?

              http://www.filedropper.com/datidafoglio1afoglio2v3

            • sidsid
              Moderatore
                Post totali: 723

                Con quale criterio dividi la stringa?

              • Avatarrexottantotto
                Partecipante
                  Post totali: 158

                  Le stringhe devono essere lunghe max 90.

                  Cioè nel Foglio2 la lunghezza della stringa compresi gli spazi deve essere 90.

                • sidsid
                  Moderatore
                    Post totali: 723

                    Perchè la seconda frase sta solo nella riga 4 di foglio2, invece che in 2 righe??

                  • Avatarrexottantotto
                    Partecipante
                      Post totali: 158

                      Scusa è un mio errore.

                      La stringa della cella A2 deve andare nelle celle A4 e A5 del Foglio2.

                      http://www.filedropper.com/datidafoglio1afoglio2v4

                    • sidsid
                      Moderatore
                        Post totali: 723

                        Altra info: hai detto che non tutte le righe vanno splittate, ma solo quelle che selezioni nella listbox
                        Ammettendo che decidi di splittare solo la seconda, va inserita sempre partendo da riga 1, oppure nella riga 4?

                      • Avatarrexottantotto
                        Partecipante
                          Post totali: 158

                          Riga 4

                        • sidsid
                          Moderatore
                            Post totali: 723

                            “Le stringhe devono essere lunghe max 90.”

                            Solo per precisare; la larghezza della cella non dipende solo dalla quantità di caratteri nella stringa, ma anche dal font del carattere, dal carattere stesso, dal maiuscolo/minuscolo.
                            Esempio le parole “MALATA” e “MILITI” contengono entrambe 6 lettere ma cambiano le vocali; se le inserisci in 2 celle diverse vedrai che la prima è più larga della seconda perchè la “I” occupa meno spazio rispetto alla “A”

                            Secondo le tue disposizioni:

                            “Specifico che le Celle A1:A7 del Foglio2 sono formattate in questo modo:
                            Larghezza 81
                            Altezza 20
                            Carattere Calibri 11”
                            e usando 90 caratteri, le stringhe escono fuori dalla larghezza della cella; quindi devi fare dei test per scegliere il giusto compromesso.

                          • Avatarrexottantotto
                            Partecipante
                              Post totali: 158

                              OK

                            • sidsid
                              Moderatore
                                Post totali: 723

                                Questo il codice da abbinare al pulsante della form
                                Per modificare i caratteri ammessi nella cella, devi agire sull’istruzione
                                nCaratteri = 90

                                Private Sub CommandButton1_Click()
                                Dim nRiga As Long, j As Long, jj As Long
                                Dim nCaratteri As Integer
                                Dim sStringa As String, s1 As String, s2 As String
                                Dim ws1 As Worksheet, ws2 As Worksheet
                                Dim v As Variant
                                
                                Set ws1 = Sheets("Foglio1") 'nome foglio sorgente
                                Set ws2 = Sheets("Foglio3") 'nome foglio bersaglio
                                ws2.Range("A1:A8").ClearContents
                                
                                nCaratteri = 90
                                
                                nRiga = 1
                                For j = 0 To Me.ListBox1.ListCount - 1
                                    sStringa = Me.ListBox1.List(j)
                                    If Me.ListBox1.Selected(j) Then
                                        If Len(sStringa) > nCaratteri Then
                                            v = Split(sStringa, " ")
                                            For jj = LBound(v) To UBound(v)
                                                s1 = s1 & v(jj) & " "
                                                s2 = s1 & v(jj + 1) & " "
                                                If Not Len(s2) <= nCaratteri Then
                                                    ws2.Range("A" & nRiga).Value = Mid(s1, 1, Len(s1) - 1)
                                                    ws2.Range("A" & nRiga + 1).Value = Mid(sStringa, Len(s1) + 1, Len(sStringa))
                                                    Exit For
                                                End If
                                            Next jj
                                        Else
                                            ws2.Range("A" & nRiga).Value = sStringa
                                        End If
                                    End If
                                    nRiga = nRiga + 3
                                    s1 = vbNullString
                                    s2 = vbNullString
                                Next j
                                Unload Me
                                Set ws1 = Nothing
                                Set ws2 = Nothing
                                End Sub
                              • Avatarrexottantotto
                                Partecipante
                                  Post totali: 158

                                  Funziona.

                                  Una domanda:

                                  la larghezza della listbox non contiente sulla stessa riga la stringa della Cella A2 del Foglio1.

                                  E’ possibile in una listbox mettere una stringa di una cella su due righe?

                                • sidsid
                                  Moderatore
                                    Post totali: 723

                                    Non ho capito nulla di quello che hai detto
                                    Forse ti basta allargare la listbox

                                  • Avatarrexottantotto
                                    Partecipante
                                      Post totali: 158

                                      Ho fatto come mi hai detto:

                                      “Forse ti basta allargare la listbox”

                                      La mia era una curiosità.

                                      Chidevo solo se, data una larghezza della listbox, una stringa più lungha della larghezza poteva andare a capo.

                                       

                                       

                                    • Avatarrexottantotto
                                      Partecipante
                                        Post totali: 158

                                        <pre class=”bbcode_code” style=”height: 36px;”>Questa istruzione si prò usare per la listbox?

                                        WrapText = True

                                      • sidsid
                                        Moderatore
                                          Post totali: 723

                                          Wraptext non è un aproprietà di un controllo all’interno di una form
                                          Lo è di una cella, di un range.
                                          La listbox non ha proprietà per andare a capo, come ad esempio nelle textbox in cui si imposta la proprietà
                                          multiline = true + wordwrap = true
                                          Quindi puoi solo allargare la listbox

                                        • Avatarrexottantotto
                                          Partecipante
                                            Post totali: 158

                                            Farò come mi hai detto.

                                            Allargare la listbox.

                                            Grazie.

                                            RISOLTO

                                             

                                          La discussione ‘[RISOLTO] Split e copia dati da Celle Foglio1 a Celle Foglio2’ è chiusa a nuove risposte.

                                          Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

                                          Questo sito utilizza i cookie per fornire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o cliccando su "Accetta" permetti il loro utilizzo.

                                          Chiudi