Luki
XLDnaute Accro
Bonsoir le forum,
Confronté à une difficulté en voulant lire une liste déléments dans une clé du registre, je viens de découvrir une particularité étonnante du caractère « Chr(0) » utilisé dans une chaîne : Si on veux utiliser la chaîne complète, elle set tronquée au premier Chr(0) rencontré !
Jimagine que les pros connaissent ça par cSur et quils ont des explications (que jattends avec impatience !) mais il y a aussi les autres, dont je fais partie !
Alors je vous propose cette macro pour que vous puissiez vérifier vous-même&
A +
Sub Essai_Chr0()
Dim Rg As Range, C As Range
Dim Str As String, Msg As String
Dim i As Integer, EndStr As Integer
Set Rg = Range('A1:A4')
Cells(1, 1) = 'Bonjour'
Cells(2, 1) = 'Chers'
Cells(3, 1) = 'ami(e)s'
Cells(4, 1) = 'Xldien(ne)'
Str = ''
'Crée la chaîne, le caractère '_' sépare les éléments:
For Each C In Rg
Str = Str & C & ' '
Next C
Range('A6') = Str ' tout va bien, la chaîne est complète
Str = ''
'Crée la chaîne, le caractère Chr(0) sépare les éléments:
For Each C In Rg
Str = Str & C & Chr(0)
Next C
Range('A8') = Str 'La chaîne est tronquée!
'mais elle est exploitable en évitant les Chr(0):
i = 1
Do Until Len(Str) = 0
If Len(Str) <= 1 Then Exit Do ' si elle ne finit pas par Chr(0)
EndStr = InStr(1, Str, Chr(0))
Msg = Left(Str, EndStr - 1)
Str = Right(Str, Len(Str) - EndStr)
Cells(i, 3) = Msg
i = i + 1
Loop
End Sub
Edition!!!
Tiens, au passage, ce sera ma petite contribution pour le 300ème que j'ai loupé!
Message édité par: luki, à: 18/12/2005 23:20
Confronté à une difficulté en voulant lire une liste déléments dans une clé du registre, je viens de découvrir une particularité étonnante du caractère « Chr(0) » utilisé dans une chaîne : Si on veux utiliser la chaîne complète, elle set tronquée au premier Chr(0) rencontré !
Jimagine que les pros connaissent ça par cSur et quils ont des explications (que jattends avec impatience !) mais il y a aussi les autres, dont je fais partie !
Alors je vous propose cette macro pour que vous puissiez vérifier vous-même&
A +
Sub Essai_Chr0()
Dim Rg As Range, C As Range
Dim Str As String, Msg As String
Dim i As Integer, EndStr As Integer
Set Rg = Range('A1:A4')
Cells(1, 1) = 'Bonjour'
Cells(2, 1) = 'Chers'
Cells(3, 1) = 'ami(e)s'
Cells(4, 1) = 'Xldien(ne)'
Str = ''
'Crée la chaîne, le caractère '_' sépare les éléments:
For Each C In Rg
Str = Str & C & ' '
Next C
Range('A6') = Str ' tout va bien, la chaîne est complète
Str = ''
'Crée la chaîne, le caractère Chr(0) sépare les éléments:
For Each C In Rg
Str = Str & C & Chr(0)
Next C
Range('A8') = Str 'La chaîne est tronquée!
'mais elle est exploitable en évitant les Chr(0):
i = 1
Do Until Len(Str) = 0
If Len(Str) <= 1 Then Exit Do ' si elle ne finit pas par Chr(0)
EndStr = InStr(1, Str, Chr(0))
Msg = Left(Str, EndStr - 1)
Str = Right(Str, Len(Str) - EndStr)
Cells(i, 3) = Msg
i = i + 1
Loop
End Sub
Edition!!!
Tiens, au passage, ce sera ma petite contribution pour le 300ème que j'ai loupé!
Message édité par: luki, à: 18/12/2005 23:20