Parser avec Split pour Excel 97

Résolu
Eldros Messages postés 4 Date d'inscription samedi 5 mars 2005 Statut Membre Dernière intervention 13 septembre 2005 - 12 sept. 2005 à 18:49
Eldros Messages postés 4 Date d'inscription samedi 5 mars 2005 Statut Membre Dernière intervention 13 septembre 2005 - 13 sept. 2005 à 10:16
J'ai un tableau Excel qui contient une colonnes avec des cellules ayant un contenu sur plusieurs ligne (donc saut à la ligne). Le problème c'est qu'elle ne fait rien, malgré les différent Code Source de la fonction Split adapté pour Office 97 que j'ai essayer, alors je me demande si cela ne viens pas d'ailleurs. Voici le code :

Sub Parser()


Dim i, j, k As Long


j = 0
k = 0
i = 1


While (Worksheets(1).Cells(i, 3).Value <> "")
While (UBound(Split(Worksheets(1).Cells(i, 3), vbCrLf)) <> j)
Worksheets(2).Cells(k, 1).Value = Worksheets(1).Cells(i, 1).Value
Worksheets(2).Cells(k, 2).Value = Worksheets(1).Cells(i, 2).Value
Worksheets(2).Cells(k, 3).Value = Split(Worksheets(1).Cells(i, 3), vbCrLf)(j)
j = j + 1
k = k + 1
Wend
j = 0
i = i + 1
Wend


End Sub

Je suis plus que novice avec VB (et donc VBA), donc soyez indulgent.

4 réponses

Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 8
12 sept. 2005 à 19:47
Salut,

Sauf erreur, il me semble que sous Excel 97, split déconne... Tu peux essayer le code suivant :


Option Explicit

Public Function Parse(sIn As String, sDel As String) As Variant

Dim i As Integer, x As Integer, s As Integer, t As Integer i 1: s 1: t = 1: x = 1
ReDim tArr(1 To x) As Variant

If InStr (1, sIn, sDel) <> 0 Then

Do
ReDim Preserve tArr(1 To x) As Variant
tArr(i) = Mid(sIn, t, InStr(s, sIn, sDel) - t)
t = InStr (s, sIn, sDel) + Len(sDel)
s = t
If tArr(i) <> "" Then i = i + 1
x = x + 1
Loop Until InStr (s, sIn, sDel) = 0

ReDim Preserve tArr(1 To x) As Variant
tArr(i) = Mid (sIn, t, Len(sIn) - t + 1)
Else
tArr(1) = sIn
End If

Parse = tArr
End Function


' Exemple d'utilisation
Private Sub Command1_Click()

Dim A As Variant
Dim i As Integer
i = 1
A = Parse("Salut, comment vas-tu ???", " ")

For i = 1 To UBound(A)
MsgBox A(i)
Next i
End Sub






++

Zlub
3
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
12 sept. 2005 à 23:31
Bonsoir,
Que veux-tu que fasse ta Macro ???

jpleroisse
0
Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 8
12 sept. 2005 à 23:35
Salut JP Leroise,


B'hein qu'il voit si à la place de split ça fonctionne ou
pas... vu qu'en début de mon dernier post, j'indiquais qu'il me semble
que split a un fonctionnement étrange sous Office 97 ... sauf erreur de
ma part ...

Voilà, tout simplement,


++

Zlub
0
Eldros Messages postés 4 Date d'inscription samedi 5 mars 2005 Statut Membre Dernière intervention 13 septembre 2005
13 sept. 2005 à 10:16
Comme je l'ai dit, j'étais au courant que la fonction Split ne fonctionnait pas (elle est inexistante pour ainsi dire) avec Excel 97. Cependant j'ai trouvé des sources sur ce site qui proposais des fonctions similaire à Split. Et malheureusement ça ne donnait rien.

Mais grace à ton code et quelque remaniement sur le mien. Cela marche du tonnerre.

Merci beaucoup.
0
Rejoignez-nous