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. 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
    1. 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. 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

          À +