Segmenter une variable string

Résolu
Bonjour,

Je travaille en vba pour Excel. Dans un tableau Tabl(i), j'ai une variable string (i) de plus de 1000 caractères. Je désire prendre cette variable en tranches de 250 caractères, chaque tranche étant insérée dans une nouvelle variable string. Je cherche une formule élégante et simple.

Merci

RC

3 réponses

  1. Contributeur
    bonjour,
    une autre avec possibilité d'autres textes et d'autres paramétages

    Function scinder(origine As String, nbre_blocs As Byte)
    Dim cptr As Byte, separe As Integer
    
    On Error GoTo fin
    separe = Len(origine) / nbre_blocs
    ReDim tablo(nbre_blocs - 1)
    For cptr = 0 To nbre_blocs - 1
         tablo(cptr) = Mid(origine, cptr * separe + 1, separe)
    Next
    scinder = tablo
    Exit Function
    fin:
    MsgBox "parametrage incorrect", vbCritical
    End Function
    '------------------------------------
    Sub test()
    Dim reponse()
     reponse = scinder(Range("A1").Value, 4)
    


    1. Merci à tous. Toutes ces solutions sont valables. J'ai trouvé plus simple avec STEP:

      For ii = 1 To Len(Tableau(i)) Step 250
      MaVar = Mid(Tableau(i), ii, 250)
      Next

      À +
  2. Modérateur
    Bonjour,

    Une variante à la proposition de f894009 (salut au passage), avec une variable tableau qui réceptionne les résultats.

    Dim str1000 As String, str250(3) As String, i As Byte
    For i = 1 To 4
        str250(i - 1) = Mid(str1000, (250 * i) - 249, 250)
    Next i
    For i = 0 To 3
        Debug.Print str250(i)
    Next i 
    1. Bonjour,

      Principe

      Sub test()
        Dim var1000 As String
        Dim var1_250, var251_500, var501_750, var751_1000
        
        var1000 = String(250, "A") + String(250, "B") + String(250, "C") + String(250, "D")
        var1_250 = Left(var1000, 250)
        var251_500 = Mid(var1000, 251, 250)
        var501_750 = Mid(var1000, 501, 250)
        var751_1000 = Mid(var1000, 751, 250)
        
        Debug.Print var1000
        Debug.Print var1_250
        Debug.Print var251_500
        Debug.Print var501_750
        Debug.Print var751_1000
        
      End Sub
      


      Bonne suite