OVH Cloud OVH Cloud

Bizarrerie fonction Replace

4 réponses
Avatar
defluc
Bonjour,

Replace("Z,l,", ",", "é") fonctionne, mais pas Replace("Z,l,",
Chr(130), Chr(233))

Pourquoi ?

4 réponses

Avatar
Raymond [mvp]
Bonjour.

la bizarerie ne fonctionne pas que pour la virgule sinon tous les autres
caractères fonctionnent.
tu peux essayer MsgBox Replace("Zala", Chr(65), Chr(233))
je pense que la chaîne "," ajouté à des séparateurs , doit semer le trouble
dans access.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"defluc" a écrit dans le message de news:

Bonjour,

Replace("Z,l,", ",", "é") fonctionne, mais pas Replace("Z,l,", Chr(130),
Chr(233))

Pourquoi ?



Avatar
defluc
Comme le but est de remplacer le caractère «,» d'un ancien fichier ASCII
par le «é» qui lui correspond dans le codage actuel, il était très
simple, trop, de faire de la façon suivante :
Private Function DosWinConv(TmpStr, m, n) As String
Dim i As Integer
Dim CharTable(15, 15) As String

CharTable(1, 1) = 130: CharTable(2, 1) = 233 ' é
CharTable(1, 2) = 138: CharTable(2, 2) = 232 ' è
CharTable(1, 3) = 135: CharTable(2, 3) = 231 ' ç
CharTable(1, 4) = 133: CharTable(2, 4) = 224 ' à
CharTable(1, 5) = 151: CharTable(2, 5) = 249 ' ù
CharTable(1, 6) = 131: CharTable(2, 6) = 226 ' â
CharTable(1, 7) = 136: CharTable(2, 7) = 234 ' ê
CharTable(1, 8) = 140: CharTable(2, 8) = 238 ' î
CharTable(1, 9) = 147: CharTable(2, 9) = 244 ' ô
CharTable(1, 10) = 150: CharTable(2, 10) = 251 ' û
CharTable(1, 11) = 132: CharTable(2, 11) = 228 ' ä
CharTable(1, 12) = 137: CharTable(2, 12) = 235 ' ë
CharTable(1, 13) = 139: CharTable(2, 13) = 239 ' ï
CharTable(1, 14) = 148: CharTable(2, 14) = 246 ' ö
CharTable(1, 15) = 129: CharTable(2, 15) = 252 ' ü

For i = 1 To 15
DosWinConv = Replace(TmpStr, Chr(CharTable(m, i)), Chr(CharTable(n, i)))
Next
End Function


Cela a marché jusqu'hier, même pour chr(130).

Aujourd'hui, c'est bernique.

Raymond [mvp] a écrit:
Bonjour.

la bizarerie ne fonctionne pas que pour la virgule sinon tous les autres
caractères fonctionnent.
tu peux essayer MsgBox Replace("Zala", Chr(65), Chr(233))
je pense que la chaîne "," ajouté à des séparateurs , doit semer le trouble
dans access.


Avatar
Raymond [mvp]
j'ai fait mes essais sur 2003, quelle version as-tu ? as-tu fais des
changements ces temps-ci ?

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"defluc" a écrit dans le message de news:

Comme le but est de remplacer le caractère «,» d'un ancien fichier ASCII
par le «é» qui lui correspond dans le codage actuel, il était très simple,
trop, de faire de la façon suivante :
Private Function DosWinConv(TmpStr, m, n) As String
Dim i As Integer
Dim CharTable(15, 15) As String

CharTable(1, 1) = 130: CharTable(2, 1) = 233 ' é
CharTable(1, 2) = 138: CharTable(2, 2) = 232 ' è
CharTable(1, 3) = 135: CharTable(2, 3) = 231 ' ç
CharTable(1, 4) = 133: CharTable(2, 4) = 224 ' à
CharTable(1, 5) = 151: CharTable(2, 5) = 249 ' ù
CharTable(1, 6) = 131: CharTable(2, 6) = 226 ' â
CharTable(1, 7) = 136: CharTable(2, 7) = 234 ' ê
CharTable(1, 8) = 140: CharTable(2, 8) = 238 ' î
CharTable(1, 9) = 147: CharTable(2, 9) = 244 ' ô
CharTable(1, 10) = 150: CharTable(2, 10) = 251 ' û
CharTable(1, 11) = 132: CharTable(2, 11) = 228 ' ä
CharTable(1, 12) = 137: CharTable(2, 12) = 235 ' ë
CharTable(1, 13) = 139: CharTable(2, 13) = 239 ' ï
CharTable(1, 14) = 148: CharTable(2, 14) = 246 ' ö
CharTable(1, 15) = 129: CharTable(2, 15) = 252 ' ü

For i = 1 To 15
DosWinConv = Replace(TmpStr, Chr(CharTable(m, i)), Chr(CharTable(n, i)))
Next
End Function


Cela a marché jusqu'hier, même pour chr(130).

Aujourd'hui, c'est bernique.



Avatar
defluc
Je suis en Access 2000 sous windows 2000.
Je n'ai pas fait de changement conscient.
Ceci dit, c'est la deuxième fois que j'ai une fonction qui tout à coup
ne fonctionne plus.
La fois précedente, c'était pour affecter un champs vide à une zone de
texte. J'ai du utiliser la fonction NZ pour régler le problème. Quelque
jours après, par curiosité, je supprime cette fonction de mon
instruction et cela remarche comme auparavant.

Ce qui me fait penser que quelque chose rend l'interpréteur VBA
instable, mais quoi ?

Raymond [mvp] a écrit:
j'ai fait mes essais sur 2003, quelle version as-tu ? as-tu fais des
changements ces temps-ci ?