Optimisation - Manipulation d'un string

pacoako

XLDnaute Occasionnel
Bonjour à tous,

J'ai commencé un nouveau projet qui consiste à manipuler un string qui est séparé par des ";" et des "|". Le but est de récupérer l'information du string et la placer dans un listbox. Évidemment je prévoit pouvoir ajouter de l'information à ce string et aussi en supprimer ou en modifier.

L'informations du string est divisé ainsi :

Heure1;Heure2;Code;Description|Heure1;Heure2;Code;Description|etc...|Détails

Chaque information séparée par un ";" sont inscrites dans une colonne différente et le "|" représente une nouvelle ligne que j'appelle communément un segment. Le «Détails» à la fin doit se retrouver dans un TB à part du tableau.

Alors voici la procédure que j'initialise au début de mon UserForm pour remplir ma listbox. Je me demandais s'il n'y avais pas une façon plus simple de faire cela. Si vous avez des suggestions ou des pistes d'amélioration, ce serait plus qu'apprécié!

p.s. Ma feuille se nomme F_Calendrier_Details, vous pouvez modifier cette partie du code si vous désirez le faire fonctionner.

LB = ListBox et TB = Textbox
Code:
Private Sub RefreshSegment()

Dim StringOriginal As String
Dim StringRestant As String
Dim x As Integer
Dim y As Integer
Dim nSegment As Integer

StringOriginal = F_Calendrier_Details.Range(ActiveCell.Address)
nSegment = NbCharString(StringOriginal, "|")
StringRestant = StringOriginal

If nSegment = 0 Then GoTo SkipSegments
ReDim Segments(0 To nSegment - 1, 0 To 3)

For x = 0 To nSegment - 1
    Segments(x, 0) = Format(Left(StringRestant, InStr(StringRestant, ";") - 1), "HH:MM:SS")
    StringRestant = Mid(StringRestant, InStr(StringRestant, ";") + 1)
    Segments(x, 1) = Format(Left(StringRestant, InStr(StringRestant, ";") - 1), "HH:MM:SS")
    StringRestant = Mid(StringRestant, InStr(StringRestant, ";") + 1)
    Segments(x, 2) = Format(Left(StringRestant, InStr(StringRestant, ";") - 1), "HH:MM:SS")
    StringRestant = Mid(StringRestant, InStr(StringRestant, ";") + 1)
    Segments(x, 3) = Format(Left(StringRestant, InStr(StringRestant, "|") - 1), "HH:MM:SS")
    StringRestant = Mid(StringRestant, InStr(StringRestant, "|") + 1)
Next x

LBSegments.Clear
LBSegments.List = Segments
SkipSegments:

TBDetails = StringRestant

End Sub

Code:
Function NbCharString(MyString As String, MyChar As String, Optional RespectCase As Integer = 1) As Long

  NbCharString = (Len(MyString) - Len(Replace(MyString, MyChar, "", , , RespectCase))) / Len(MyChar)

End Function

Et voici un string exemple que vous pouvez utiliser. À mettre dans une cellule.
HTML:
40179,3125;40179,3515162037;4VCM;TEL|40179,5457638889;40179,7459837963;PT;CHARGE|Bonjour!
Merci à tous et surtout, bonne journée/soirée!
 
Dernière édition:

wilfried_42

XLDnaute Barbatruc
Re : Optimisation - Manipulation d'un string

bonjour

pour recuperer chatque phrases :
Code:
dim tablo1() as variant
mystring = "40179,3125;40179,3515162037;4VCM;TEL|40179,5457638889;40179,7459837963;PT;CHARGE|Bonjour!"
tablo = split(mystring;"|")
for i = lbound(tablo1) to ubound(tablo1)
     msgbox tablo1(i)
next i
if suffit ensuite de creer un tablo2 pour chaque tablo1
Code:
dim tablo1() as variant[COLOR="Red"], tablo2 as variant[/COLOR]
mystring = "Heure1.Heure2.Code.Description|Heure1.Heure2.Code. Description|etc...|"
tablo = split(mystring;"|")
for i = lbound(tablo1) to ubound(tablo1)
     [COLOR="red"]tablo2 = split(tablo1(i),";")
     for j = lbound(tablo2) to ubound(tablo1)
          lst.additem(tablo2(j)
     next j[/COLOR]
next i

cordialement
 

Statistiques des forums

Discussions
312 508
Messages
2 089 137
Membres
104 046
dernier inscrit
ouiza