Segmenter une variable string

Résolu/Fermé
RC - Modifié par RC le 3/12/2012 à 21:54
 RC - 4 déc. 2012 à 13:04
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

f894009
Messages postés
16642
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
12 août 2022
1 648
4 déc. 2012 à 08:50
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
0
pijaku
Messages postés
12259
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
9 août 2022
2 701
4 déc. 2012 à 09:27
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 
0
michel_m
Messages postés
16574
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
3 août 2022
3 277
4 déc. 2012 à 09:30
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)




0
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

À +
0