Optimisation - Manipulation d'un string

  • Initiateur de la discussion Initiateur de la discussion pacoako
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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:
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
437
Réponses
3
Affichages
918
Retour