Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Jeu caractères Win/mac

18 réponses
Avatar
dcdc2
Bonjour,

J'utilise une macro pour enregistrer automatiquement un lien hypertexte
dans une cellule.
Pour cela je converti certains caractères (espace en %20 par exemple).

Mais j'ai quelques problèmes pour certains caractères spéciaux:
exemple le retour à la ligne "utile et fonctionnel" sous Mac est %0D (13)
tandis qu'il faut %0A (10) sous windows. Y a-t-il un moyen de faire ces
conversions de façon dépendante du système et/ou de savoir sur quel système
on est (et s'adapter)... Car ma macro et mon fichier est utilisé sur Mac et
sur Win !

des idées ?
(sous mac, il arrive carrément parfois que ça plante lamentablement au
moment de créer l' " hyperlink ")


--
dc

10 réponses

1 2
Avatar
le_troll
Bonjour,

Ma réponse n'est pas exhaustive, mais tu peux déjà:
-1- Jeter ton Mac et acheter un PC, lol
-2- Tester le caractère 13 ascii et le transformer en 10, et idem pour le
10, le transformer en 13...

Nora bene, je reste néanmoins étonné, que dis-je, interloqué, que Mac
n'adopte pas la norme ASCII primaire, en inversant les ascii 13 et 10, t'es
sûr d'être certain ?

--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !


"dcdc2" a écrit dans le message de
news:
Bonjour,

J'utilise une macro pour enregistrer automatiquement un lien hypertexte
dans une cellule.
Pour cela je converti certains caractères (espace en %20 par exemple).

Mais j'ai quelques problèmes pour certains caractères spéciaux:
exemple le retour à la ligne "utile et fonctionnel" sous Mac est %0D (13)
tandis qu'il faut %0A (10) sous windows. Y a-t-il un moyen de faire ces
conversions de façon dépendante du système et/ou de savoir sur quel


système
on est (et s'adapter)... Car ma macro et mon fichier est utilisé sur Mac


et
sur Win !

des idées ?
(sous mac, il arrive carrément parfois que ça plante lamentablement au
moment de créer l' " hyperlink ")


--
dc




Avatar
dcdc2
> -1- Jeter ton Mac et acheter un PC, lol



arrête je vais rire

-2- Tester le caractère 13 ascii et le transformer en 10, et idem pour le
10, le transformer en 13...



hein ?

Nora bene, je reste néanmoins étonné, que dis-je, interloqué, que Mac
n'adopte pas la norme ASCII primaire, en inversant les ascii 13 et 10,


t'es
sûr d'être certain ?



c'est au moment du passage auprès du client de messagerie, excel semble
gérer bien mais sous l'un des OS il me met des petits carré pour 10 et sur
l'autre c'est pour 13...

je peux toujours mettre 10 suivi de 13, ainsi j'ai toujours un carré et un
saut de ligne garanti pour tous, mais bon si on peut se passer du carré.
outlook sous MacOS, lui, il prend le 10 pour un petit carré !

ceci la question n'était pas de savoir si j'étais sûr ou non du problème.
la question était de savoir s'il y avait un moyen de convertir de façon
dépendante du système voire de tester le nom système... question que tu n'as
même pas frôlé ;-)
Avatar
le_troll
Ah, oh l'autre, j'ai pas frôlé, j'ai dit de changer 10 en 13 et 13 en 10,
enfin, c'est une solution... Les carrés, c'est généralement quand les
valeurs sus-citées ne sont pas gérées, elles apparaissent sous cette
forme...

--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !


"dcdc2" a écrit dans le message de
news: #
> -1- Jeter ton Mac et acheter un PC, lol

arrête je vais rire

> -2- Tester le caractère 13 ascii et le transformer en 10, et idem pour


le
> 10, le transformer en 13...

hein ?

> Nora bene, je reste néanmoins étonné, que dis-je, interloqué, que Mac
> n'adopte pas la norme ASCII primaire, en inversant les ascii 13 et 10,
t'es
> sûr d'être certain ?

c'est au moment du passage auprès du client de messagerie, excel semble
gérer bien mais sous l'un des OS il me met des petits carré pour 10 et sur
l'autre c'est pour 13...

je peux toujours mettre 10 suivi de 13, ainsi j'ai toujours un carré et


un
saut de ligne garanti pour tous, mais bon si on peut se passer du carré.
outlook sous MacOS, lui, il prend le 10 pour un petit carré !

ceci la question n'était pas de savoir si j'étais sûr ou non du problème.
la question était de savoir s'il y avait un moyen de convertir de façon
dépendante du système voire de tester le nom système... question que tu


n'as
même pas frôlé ;-)





Avatar
dcdc2
> Ah, oh l'autre, j'ai pas frôlé, j'ai dit de changer 10 en 13 et 13 en 10,
enfin, c'est une solution... Les carrés, c'est généralement quand les
valeurs sus-citées ne sont pas gérées, elles apparaissent sous cette
forme...



oui et c'est bien pour ça que j'ai demandé comment obtenir le nom du
système, pour que le code choisisse tout seul ce qu'il est pertinent de
mettre !

une réponse possible (trouvée entre temps) étant d'utiliser les variables
d'environnement de windows:
dil CR$
On Error Resume Next
CR = "%0D" 'variable globale
If (InStr(1, Environ("OS"), "Win", vbTextCompare)) Then: CR = "%0A"
' si jamais erreur c'est que l'os n'est pas windows


Ceci dit, le plus propre serait d'avoir une méthode d'encodage ou de
convertion "incluse" dans le système.
Donc cette possibilité là reste totalement ouverte.

Il y a souvent des messages sur la façon d'expédier des mels...
donc forcément il y a déjà des gens qui ont dû faire ce type d'encodage.

des méthodes propres pour s'y prendre ?
(car on ne peut pas mettre n'importe quels caractères dans l'adresse, en
particulier pour l'instant je converti un à un les =, & , % etc. )
Avatar
Alain CROS
Bonjour

Sous XL il y a Application.OperatingSystem et la constante vbNewLine qui s'adapte auto au système.

Alain CROS

"dcdc2" a écrit dans le message de news:
Bonjour,

J'utilise une macro pour enregistrer automatiquement un lien hypertexte
dans une cellule.
Pour cela je converti certains caractères (espace en %20 par exemple).

Mais j'ai quelques problèmes pour certains caractères spéciaux:
exemple le retour à la ligne "utile et fonctionnel" sous Mac est %0D (13)
tandis qu'il faut %0A (10) sous windows. Y a-t-il un moyen de faire ces
conversions de façon dépendante du système et/ou de savoir sur quel système
on est (et s'adapter)... Car ma macro et mon fichier est utilisé sur Mac et
sur Win !

des idées ?
(sous mac, il arrive carrément parfois que ça plante lamentablement au
moment de créer l' " hyperlink ")


--
dc




Avatar
dcdc2
la constante vbNewLine ajoute le bon caractère selon le système, mais la
problématique est d'ajouter les chaînes "%0A" ou "%0D" à l'intérieur de la
chaîne confiée à la messagerie (pour que elle, elle interprète bien la
chose). Bref, cette constante VB, que je suis heureux de découvrir, sera
bien pratique pour ajouter dans des textes affichés sur l'écran... (encore
que sous Win 10 et 13 ont le même effet : un passage à la ligne. Alors on
pourrait mettre 13 partout pour tous les OS)

Mais pour former une URL (mailto:...) complète ça ne résoud pas le problème
directement.
Il faudrait peut-être (pour éviter le test d'OS) faire une boucle sur chaque
caractère de vbnewline
(car sous Win elle en contient deux: 10 et 13 accolés) et les remplacer par
"%0A" et/ou "%0D"
ce qui finalement est sûrement moins souple que la solution du test d'OS.
Avatar
ng
Salut,

(car sous Win elle en contient deux: 10 et 13 accolés)


Non c'est 13 et 10, sous Unix c'est 10 tout court et sur Mac 13 tout court.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/


dcdc2 wrote:
la constante vbNewLine ajoute le bon caractère selon le système, mais
la problématique est d'ajouter les chaînes "%0A" ou "%0D" à
l'intérieur de la chaîne confiée à la messagerie (pour que elle, elle
interprète bien la chose). Bref, cette constante VB, que je suis
heureux de découvrir, sera bien pratique pour ajouter dans des textes
affichés sur l'écran... (encore que sous Win 10 et 13 ont le même
effet : un passage à la ligne. Alors on pourrait mettre 13 partout
pour tous les OS)

Mais pour former une URL (mailto:...) complète ça ne résoud pas le
problème directement.
Il faudrait peut-être (pour éviter le test d'OS) faire une boucle sur
chaque caractère de vbnewline
(car sous Win elle en contient deux: 10 et 13 accolés) et les
remplacer par "%0A" et/ou "%0D"
ce qui finalement est sûrement moins souple que la solution du test
d'OS.


Avatar
le_troll
Ben en plus, si il raconte des sonettes, heu... des sornettes, moi aussi ça
me paraissait bizarre que Mac fasse 10+13 alors que ASCII est une norme
internationale (pour le standard)...

--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !


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

Salut,

> (car sous Win elle en contient deux: 10 et 13 accolés)
Non c'est 13 et 10, sous Unix c'est 10 tout court et sur Mac 13 tout


court.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/


dcdc2 wrote:
> la constante vbNewLine ajoute le bon caractère selon le système, mais
> la problématique est d'ajouter les chaînes "%0A" ou "%0D" à
> l'intérieur de la chaîne confiée à la messagerie (pour que elle, elle
> interprète bien la chose). Bref, cette constante VB, que je suis
> heureux de découvrir, sera bien pratique pour ajouter dans des textes
> affichés sur l'écran... (encore que sous Win 10 et 13 ont le même
> effet : un passage à la ligne. Alors on pourrait mettre 13 partout
> pour tous les OS)
>
> Mais pour former une URL (mailto:...) complète ça ne résoud pas le
> problème directement.
> Il faudrait peut-être (pour éviter le test d'OS) faire une boucle sur
> chaque caractère de vbnewline
> (car sous Win elle en contient deux: 10 et 13 accolés) et les
> remplacer par "%0A" et/ou "%0D"
> ce qui finalement est sûrement moins souple que la solution du test
> d'OS.




Avatar
dcdc2
> Ben en plus, si il raconte des sonettes, heu... des sornettes



il raconte pas des sornettes, il a juste inversé 13 et 10, et ps/ merci de
vous souvenir que l'objet n'est pas d'insérer une ligne nouvelle dans une
"string" mais d'ajouter des chaînes "%0A" et/ou "%0D" pour l'envoyer à un
client mel... merci.

(PS/ ne vous en déplaise, les deux systèmes ne réagissent pas de la même
façon face à 10 et à 13, même si c'est une norme... sinon vbNewLine lui non
plus n'aurait pas besoin de valeurs dinstinctes selon le système)
Avatar
dcdc2
Il semblerait que de nombreuses personnes aient mal (du moins pas bien)
compris où je voulais en venir, alors on va dire que je n'ai pas détaillé
assez ma demande:

quand on veut ajouter un retour à la ligne dans une chaîne, on sait faire:
T$ = "toto" & chr(13) & "tata"
(ou bien utiliser vbNewLine pour être sûr de la compatibilité selon le
système.)

mais lorsque cela doit entrer dans une URL, exemple:
mailto:?Subject=sujet&Body=toto%0A%0Dtata

là il nous faut mettre l'encodage URL/ascii de certains caractères (comme %,
=, &, ?, NewLine,par exemple) sinon ça ne fonctionnera pas forcément bien,
et même plutôt mal parfois.

%0A indique chr(10) à la façon URL

mon problème étant que sous Mac il semble falloir envoyer %0D pour obtenir
un saut, mais sous Win il faut %0A (ou %0A%0D) pour que le client mel
reconnaisse et affiche ce saut de ligne

je cherchais donc un moyen d'ajouter ça proprement, et d'une façon générale
d'obtenir cet encodage URL (avec des %) sans avoir à écrire (comme
actuellement) une fonction qui transforme les caractères spéciaux...

actuellement j'ai besoin de passer par cette fonction
Spe_char$ = .Substitute(Spe_char, "%", "%25")
Spe_char = .Substitute(Spe_char, Chr(10), "%0A")
Spe_char = .Substitute(Spe_char, Chr(13), "%0D")
Spe_char = .Substitute(Spe_char, "?", "%3F")
Spe_char = .Substitute(Spe_char, "!", "%21")
Spe_char = .Substitute(Spe_char, "&", "%26")
Spe_char = .Substitute(Spe_char, "=", "%3D")
Spe_char = .Substitute(Spe_char, ":", "%3A")
Spe_char = .Substitute(Spe_char, " ", "%20")
Spe_char = .Substitute(Spe_char, "+", "%2B")


PS/ à l'heure actuelle je n'ai pas essayé encore toutes les façons sous Mac
puisque je suis essentiellement sous Win... Il me reste en particulier à
essayer la fonction ci-dessus, avec dans la chaîne initiale des vbNewLine.
Mais pour le moment je vois mal comment me passer de la fonction de
convertion.
1 2