Afficher carré et losange dans un Label.Caption (ou Debug.print)

Résolu
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 - 7 juil. 2009 à 16:36
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 16 juil. 2009 à 09:03
Bien le bonjour,

me revoici avec une question dont la réponse doit être simple.

1) j'instancie un objet Excel , j'ouvre un fichier Workbook, je lit le text (.formula) d'une cellule d'un onglet. jusque la pas de soucis.
2) je souhaite afficher ce texte .

mais c'est la que ça cloche, certaines célules contiennent des caractères spéciaux :
    - Carré
    - Losange

je souhaiterait bien entendu que ces caractères soient affichés dans mon text box.

Je constate que dans le String que je li, sont remplacés :
    - les Carrés par des 'h'
    - les losanges par des '¯'

avec le logiciel FontCréator , j'ai obtenu le code Windows des caractères :
    - Carré = 9633
    - Losange = 9674

dans le Debug.print ChrW(...) ca affiche tentot un carre tentot un point d'interrogation sans que j'arrive a m'expliquer pourquoi.

lorsque j'écrit Chrw(9633) dans un Label.Caption ça me met bien un carré, cependant, le fait de remplacer les 'h' par des chrw(...) est vraiment moche et destructif (bien sur, il y a des h normaux ^^).

j'ai vu sur ce site des discutions à propos de 'OEM' mais je n'ai pas compris, peut-être est-ce la solution a mon problème...

Y a t'il un moyen de récupérer la chaine ou de la convertir de sorte à conserver et afficher les losanges / carrés.


noabéné :
cette chaine proviens d'un fichier excel
puis elle est stokée dans un fichier mdb dans une cellule au format 'adVarWChar'
puis elle est lue, puis traitée par un regexp
puis affichée dans un Label.caption
puis remise ds un fichier excel pour impression

jespère avoir été clair,
si ce n'est pas le cas n'ésités pas a me le dire

VB6, quand yen a plus yen a encore
Il y a tant a apprendre et seulement 24 heures dans une journée
A trop Chercher on fini par se fermer les yeux

6 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
8 juil. 2009 à 08:55
Unicode

soit tes carrés sont en ascii et c'est juste un jeu avec la police de caractère
soit excel affiche un caractère unicode qu'il te sera dfficile d'afficher en VB, avec les controles de base.

(possible via API)

a voir ce que tu as en face de toi...
3
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 3
12 juil. 2009 à 11:20
il semblerait que cela soit de l'unicode...

j'ai résolu mon problème en affichant dans un label factice : un HierarchicalMsFlexGrid à 1 colone et 1 ligne... bizard, lui sait afficher ces caractères.

VB6, quand yen a plus yen a encore
Il y a tant a apprendre et seulement 24 heures dans une journée
3
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 3
7 juil. 2009 à 17:09
apres de nouveau tests, je reformule ma question

debug.Print   ascW(Right(WS.Range(WS.Cells(L, 5), WS.Cells(L, 5)).Text ,1))

où le dernier caractère de la celule est un carré

résultat attendu = 9633

résultat obtenu = 104  --> AscW("h")

Questions :
une chaine string VB6 est elle capable de contenir le caractère 'Carré' sans le transformer en 'h' ? (je pense que oui)

les methodes de traitement de caractères tels que Right Left len ... (regexp également) sont elles capable de traiter les 'Carré'

comment récupérer ces foutu 'carré' et 'losange' de ma cellule Excelle pour la mettre dans un string

VB6, quand yen a plus yen a encore
Il y a tant a apprendre et seulement 24 heures dans une journée
0
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 3
7 juil. 2009 à 17:46
J' avance...
Le fichier excel a partir duquel je travail, ce n'est pas moi qui l'ai fait.
Je viens de me rendre compte que les fameux carrés et losanges présents dans les cellules ne sont pas des chrW(9633)  mais des Wingdings copiés
Ce qui explique l'impossibilité de récupérer mon code caractère.

bon maintenant que j'ai engueulé le mec qui les y a mis et que j'ai enfin des vrai caractères ChrW(9366) et ChrW(9374), je fait un

Label.Caption = range(blabla).Value
--> ca m'affiche un point d'interrogation a la place du carré ou du  losange
si je fait debug.print  AscW(Right(Range.Text,1))
j'ai bien 9366,

si je l'affiche avec un debug.print --> '?' affiché
si je le met dans un HierarchicalFlexGrid.text --> 'Carré' affiché
si je le met dans un TextBox.text --> '?' affiché.

J'ai pourtant déja affiché des carrés dans le debug.print
comment faire ?

VB6, quand yen a plus yen a encore
Il y a tant a apprendre et seulement 24 heures dans une journée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Flocreate Messages postés 300 Date d'inscription lundi 17 juillet 2006 Statut Membre Dernière intervention 27 mai 2012 3
8 juil. 2009 à 08:53
Personne ne saurais me dire comment afficher dans un Label.caption ou un TextBox.text ces maudits ChrW(9633) ... ?

VB6, quand yen a plus yen a encore
Il y a tant a apprendre et seulement 24 heures dans une journée
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
16 juil. 2009 à 09:03
un peu lourd pour un simple caption, peut etre...

un appel a l'API TextOutW, par exemple

Renfield Admin CodeS-SourceS - MVP Visual Basic
0