Symboles dans Word

cs_youyou40 Messages postés 65 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 28 avril 2022 - 6 oct. 2005 à 11:47
cs_youyou40 Messages postés 65 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 28 avril 2022 - 10 oct. 2005 à 19:52
Bonjoiur à tous et merci d'avance de la part d'un débutant.
Je suis en train d'écrire des macros dans Word en VBA pour effectuer des calculs ( par exemple dans un doc Word est affiché une expression comme 3 fois 4 -où fois est écrit avec le symbole multiplié de la police Symbol -,on la sélectionne et la macro calcule le résultat) et j'aurais besoin de remplacer le signe de la multiplication par *.

Seulement je ne sais pas comment reconnaître le signe multiplié lorsqu'il a été inséré dans word par le menu Insertion - Caractères Spéciaux (cela correspond à la fonction InsertSymbol) . Les fonction Asc et AscW me renvoient le même code pour tous les symboles : le code 40 qui en fait dans la police utilisée (Times New Roman) est le code de la parenthèse ouvrante.
De plus, la propriété Font me renvoie Times New Roman alors que c'est un symbole de la police Symbol.
Donc je ne sais pas comment faire pour sélectionner par programmation ce symbole multiplié afin de le remplacer par*.

Je ne sais pas si j'ai été très clair...........

17 réponses

Tuning Max Messages postés 314 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 31 août 2006 1
6 oct. 2005 à 15:23
Je ne suis pas très sûr en effet d'avoir bien compris ce que tu cherche à faire. Voici une petite fonction qui te permet de rechercher une chaine de caractère et de la remplacer par autres choses.

Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "fois"
.Replacement.Text = "*"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
With Selection
If .Find.Forward = True Then
.Collapse Direction:=wdCollapseStart
Else
.Collapse Direction:=wdCollapseEnd
End If
.Find.Execute Replace:=wdReplaceOne
If .Find.Forward = True Then
.Collapse Direction:=wdCollapseEnd
Else
.Collapse Direction:=wdCollapseStart
End If
.Find.Execute
End With
0
cs_youyou40 Messages postés 65 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 28 avril 2022
6 oct. 2005 à 18:49
Merci pour ta réponse Tuning Max.
C'est en effet la fonction que j'utilise afin de remplacer les différentes écritures du signe "multiplié" dans un doc Word par * .
Si c'est écrit en toutes lettres , je fais exactement ce que tu m'as écrit , si c'est écrit avec la croix de la police courante , qui est le caractère ANSI 215 je mets

With Selection.Find
.Text = Chr(215)

mais si celui qui a écrit le doc , a inséré la croix de "multiplié" avec le menu Insertion -Caractères Spéciaux et la police Symbol (il s'agit du caractère numéro 180 d'après la table de Woird) et bien cela ne marche pas. Les fonctions Chr(180) et ChrW(180) ne me renvoie plus le signe multiplié mais une espèce d'apostrophe !
On dirait que ces symboles , insérés avec ce menu de Word , appartiennent à un autre jeu de caractères (ni ANSI ni Unicode) .... Je ne comprends plus.....
0
Tuning Max Messages postés 314 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 31 août 2006 1
7 oct. 2005 à 09:29
Le sygle x dans la table AINSI à le code 215. Le * à le code 42 et l'apostrophe ' a bien le code 180.
Personnellement j'ai fait le test et cela marche avec tous les codes

Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = Chr$(215)
.Replacement.Text = Chr$(42)
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
With Selection
If .Find.Forward = True Then
.Collapse Direction:=wdCollapseStart
Else
.Collapse Direction:=wdCollapseEnd
End If
.Find.Execute Replace:=wdReplaceOne
If .Find.Forward = True Then
.Collapse Direction:=wdCollapseEnd
Else
.Collapse Direction:=wdCollapseStart
End If
.Find.Execute
End With
End Sub
0
cs_youyou40 Messages postés 65 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 28 avril 2022
7 oct. 2005 à 11:31
Oui , mais il y a une autre façon d'écrire (ou plutôt d'insérer) le signe × avec le logiciel Word : dans le menu Insertion , Caractères Spéciaux , cliquer sur l'onglet Symboles et choisir la police Symbol : choisir alors le caractère ayant pour code 180 (en décimal).
Dans beaucoup de textes de math pour les collèges et lycée,, le symbole × est inséré de cette façon .
Le problème , c'est que je ne sais pas quel code taper pour rechercher ce caractère dans le texte : en effet , 180, (c'està-dire
0

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

Posez votre question
cs_youyou40 Messages postés 65 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 28 avril 2022
7 oct. 2005 à 11:35
Je poursuis le précédent message, il ne s'est pas enregistré entièrement...

En effet , 180, (c'est-à-dire Selection.Find.Text Chr(&80) ) ne permet pas de retrouver ce caractère.
J'ai l'impression que 180 n'est pas le code ANSI ,ni Unicode , de ce caractère.
Alors 180 , c'est quoi?
Et quel est le code ANSI ou Unicode de ce caractère?
0
cs_youyou40 Messages postés 65 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 28 avril 2022
7 oct. 2005 à 11:38
Euh ... je voulais écrire dans le prédédent message : Selection.Find.Text Chr(180)
0
Tuning Max Messages postés 314 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 31 août 2006 1
7 oct. 2005 à 14:26
Lorsque je regarde la table des caractères ANSI, le code pour le signe multiplier " × " est le 215
Tu as peut être un problème ailleurs car chez moi lorsque je fais une recherche comme je te l'ai indiqué dans mon message précédant ".Text = Chr$(215)" il me trouve bien le caractère " × " que j'avais inséré dans mon document via le gestionnaire de caractères spéciaux.
0
cs_youyou40 Messages postés 65 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 28 avril 2022
7 oct. 2005 à 15:43
Mais avais-tu sélectionné la police Symbol dans la boite de dialogue "Caractères spéciaux" , onglet "Symboles" ?

J'ai essayé sur trois systèmes différents (Win98 , et deux XP avec différentes versions de Word et le problème est le même).
0
Tuning Max Messages postés 314 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 31 août 2006 1
7 oct. 2005 à 16:12
oui bien sur, mais lorsque tu lance la recherche en mode "pas a pas", est ce que tu qu'il trouve quelque chose? Parceque ce qui est sûr c'est que le code ANSI pour le symbole multiplier est 215.
sinon je suis désolé mais je ne vois pas ce qui pourrait faire que ça ne fonctionne pas. Eventuellement si tu souhaite, je peux chercher où est le problème mais il me faudrait un de tes document type
0
Tuning Max Messages postés 314 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 31 août 2006 1
7 oct. 2005 à 16:15
Le plus simple dans ce cas serait que tu mettes ce document sur le site dans tes codes source pour que je puisse le récupérer.
0
cs_youyou40 Messages postés 65 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 28 avril 2022
7 oct. 2005 à 17:12
Ca ne fonctionne pas toujours parce qu'il y a au moins deux symboles multiplier : l'un qui est le caractère ayant pour numèro de code 215 (aussi bien dans le jeu de caractères ANSI que dans le jeu de caractère Unicode ) et un autre que l'on obtient avec le gestionnaire de caractères de Word (Menu Insertion puis Caractères spéciaux , onglet Symboles choisir la police Symbol , caratère 180.
A l'oeil nu , on voit la différence entre les deux signes (Tuning Max : je pourrais t'envoyer un fichier .doc contenant les deux si gnesmais je ne sais pas comment le faire ; est-ce possible en MP ?)
D'ailleurs lorsqu'on regarde dans le gestionnaire de caractères spéciaux , après avoir sélectionné la police Symbol , le champ "code de caractère" indique 180 et le champ "de " indique "Symboles (Décimal)" ou bien "Symboles (hexadécimal)" et non plus ANSI ou Unicode : on dirait qu'il s'agit d'un autre jeu de caractères ! ?
C'est très bizarre : ce symbole ainsi inséré dans word , si je le sélectionne avec la souris , word affiche la police par défaut "Times New Roman" alors qu'il a été inséré avec la police Symbol dans le gestionnaire de caractères spéciaux ...
Si je teste en VB le code de ce caractère a à l'aide de Chr( ) ou ChrW( ) j'obtiens 40 !!! qui est le code de la parenthèse ouvrante ....
Je ne comprends pas comment fonctionne cette police Symbol lorsqu'on y accéde par le gestionnaire de caractères spéciaux. (tous les symboles ainsi insérés me renvoient le code 40 avec Chr( ) et ChrW( ) ! )
0
cs_youyou40 Messages postés 65 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 28 avril 2022
7 oct. 2005 à 22:11
@ Tuning Man


Je t'ai répondu sans avoir vu ton dernier message de 16h15.


Ne sachant pas trop comment t'envoyer un document (je n'avais pas vu que l'on pouvait joindre un zip à la source ) j'ai voulu t'envoyer les lignes de code qui insèrent les caractères en question : alors j'ai ouvert Word et son enregisteur de macro , puis menu Insertion...puis Caractères spéciaux , onglet Symboles , j'ai laissé la police sur (texte normal) et j'ai inséré le signe multiplié : voilà le code enregistré :
Selection.InsertSymbol Font:= "Times New Roman", CharacterNumber:=215, Unicode:=True
Donc , c'est normal , c'est le signe multiplié des polices habituelles.

Puis j'ai inséré l'autre signe multiplié dont je parle depuis le début de ce sujet : menu Isertion...,caractères spéciaux , onglet Symboles , police Symbol , et double-clic sur le multiplié (caractère 180 marqué en bas) et voilà le code!!!!!!Selection.InsertSymbol Font: ="Symbol", CharacterNumber:=-3916, Unicode:=True

Ce serait donc le caractère -3916 (en Unicode) bizarre et pourquoi ce 180 dans le gestionnaire de caractères spéciaux (mais le jeu de caractères est appellé (Symboles décimal) dans Word et non plus ANSI ou Unicode...

J'ai fait une autre manip : j'ai sélectionné ce signe dans le doc , j'ai lancé l'enregistreur de macro puis menu Edition , Rechercher , j'ai fait un collé dans le champ Rechercher et Word m'a bien trouvé le fameux caractère dans mon doc.
Je regarde le code enregistré : (je n'ai pas tout réécrit)
With Selection.Find
.Text = ChrW(61620)
Donc maintenant c'est le caractère Unicode 61620 . !!!!!!

Ensuite si je lance une macro avec
Selection.InsertAfter ChrW(61620)
Selection.InsertAfter ChrW(-3916)
word ne m'écrit aucun caractère (juste deux rectangles vides)
Je ne comprends vraiment pas.
Mais pour mon problème de départ, Selection.Find.Text ChrW(61620) , marche bien pour trouver le fameux deuxième signe multiplié et aussi Selection.Find.Text ChrW(-3916 )et les deux me retrouvent même les rectangles vides obtenus avec Selection.InsertAfter ChrW(61620) et Selection.InsertAfter ChrW(-3916) !!!

.....ceci dit j'aimerais bien comprendre...
0
Tuning Max Messages postés 314 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 31 août 2006 1
10 oct. 2005 à 09:54
La question va te paraitre bête, mais est tu sûr que tu n'aurais pas un problème avec ta version de Word?


Je te pose la question car le code 180 qu'il soit sur mon gestionnaire de caractères spéciaux ou sur mes archives de cours correspond à une apostrophe. Par ailleurs ce que je trouve surprenant ce sont les codes que tu fournis plus haut. En Unicode dans le gestionnaire de caractère spéciaux, le signe x est donnée avec le code "00D7". Personnellement je fonctionne sous XP avec Office2003. Peut être aurait tu intérêt à réinstaller la table des caractères ASCII.
Tu peux le faire à l'adresse internet ci-dessous:

http://office.microsoft.com/fr-fr/assistance/HA011331361036.aspx
0
cs_youyou40 Messages postés 65 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 28 avril 2022
10 oct. 2005 à 12:19
Merci Tuning Max de continuer à t'intéresser à ce problème .

Mais d'après ce que tu me dis, je crois que tu n'as pas trouvé le deuxième signe multiplier dont je parle (j' ai vérifié sur un système avec XP + Word2003 ) .
Pour obtenir ce signe va dan s le gestionnaire de caractères spéciaux , va dans l'onglet Symboles : par défaut cet onglet s'ouvre avec dans le champ Police l'indication de la police utilisée à cet endroit de ton document Word : change cela en choisissant dans le champ Police la police Symbol.
Elle comporte un signe multiplié , de code 180 mais le jeu de caractère n'est plus marqué ANSI ni Unicode mais Symboles(décimal) ou Symboles(héxadécimal) ; le code est bien 180 (en décimal) ou B4 en héxadécimal.
Autre façon d'obtenir le même signe multiplier cette macro :
Sub essai()
Selection.InsertSymbol Font:="Symbol", CharacterNumber:=-3916, Unicode:= _
True
End Sub

Cela donne un autre signe multiplier que celui dont tu parles (sinon je suis d'accord en ANSI aussi bien qu'en Unicode , 215 est un signe multiplier et 180 une espèce d'apostrophe.
C'est pour cela que je pense qu'avec le gestionnaire de caractères spéciaux réglé sur la police Symbol ; le jeu de caractères est particulier : ni ANSI, ni Unicode (d'ailleurs Word l'appelle Symboles(Héxadécimal) ou Symboles(Décimal).
0
cs_youyou40 Messages postés 65 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 28 avril 2022
10 oct. 2005 à 15:19
J'ai dù me tromper en voulant insérer l'image dans le post précédent et je ne sais pas comment faire pour l'enlever (j'ai l'impression que cela bloque IE en mode html).
J'ai mis l'image ici : http://micheltrey.free.fr/Word/Caract_Speciaux.jpg
0
Tuning Max Messages postés 314 Date d'inscription mercredi 15 juin 2005 Statut Membre Dernière intervention 31 août 2006 1
10 oct. 2005 à 18:22
A priori, après avoir bien regardé ton image, je pense qu'il s'agit d'une table de caractères spécifique à ton entreprise car à ma connaissance et après confirmation auprès d'autres développeurs de ma boite, il n'existe pas de police dénommée symbole comme c'est indiqué dans ton image.
Je pense qu'il s'agit d'une table de caractères spécifique importé et installé sur les postes de ton entreprise. Ce qui explique aussi pourquoi tu ne parviens pas à faire fonctionner correctement la fonction Chr() qui s'appui sur la table system ASCII.
Pour t'en convaincre si tu sélectionne le signe multiplier avec une police (texte normal) de la table ASCII(décimal), et que tu change de police ; Tu t'aperçois que quelque soit la police sélectionné, le code 215 reste le même.
En configuration normale, (chez toi ou dans d'autres entreprises) si tu regarde les différentes tables de caractères disponibles, tu verras :


Unicode (hexadécimal)


ASCII (décimal)


ASCII (hexadécimal)



Après avoir cherché un peu chez Microsoft, tu peu peut être essayé la fonction ChrW() utilisé pour les codes de la table de caractère Unicode ou encore la fonction ChrB().
Dans tous les cas, il est toujours déconseiller d'utiliser des caractères de tables spécifique tel que la tienne car tu auras toujours des problèmes de compatibilité voir même sur des poste ou cette table n'existe pas, un caractère complètement différent ou absent.
Dans la mesure du possible il faudrait que tu modifie ce caractère par un ASCII (décimal) et que tu vois pour que les personnes de ta boite n'utilisent pas l'autre.
Sinon, je ne vois pas comment tu pourrais faire autrement
0
cs_youyou40 Messages postés 65 Date d'inscription lundi 20 décembre 2004 Statut Membre Dernière intervention 28 avril 2022
10 oct. 2005 à 19:52
Ok mais cette capture d'écran que j'ai postée , elle correspond à ce que l'on trouve dans toutes les versions de Word que je connais (Word97 , Word2000 , Word2002 ,word2003) et ceci à la maison comme à mon travail (je suis prof de math).
Tu ne l'as pas dans ta version de Word ??????? Tu n'arrives pas à l'écran que je t'ai montré???

La police Symbol fait partie de Windows depuis longtemps (depuis au moins Windows95). C'est une police comme les autres mais , là où je ne comprends plus c'est lorsqu'on s'en sert pour insérer des symboles à l'aide du gestionnaire de caractères spéciaux de Word.( Cela correspond alors à la méthode VBA : InsertSymbol. : c'est elle qui a un comportement particulier me semble-t-il.....)

Je viens de réinstaller un système ,après formattage , avec Xp + SP2 et Office 2003 et ça y est aussi.
En discutant avec d'autres profs de maths et en regardant sur internet les documents de math écrits par des profs , on s'aperçoit que le signe multiplié est souvent écrit de cette façon ( on utilise cela aussi pour d'autres symboles mathématiques : les lettres grecques , inférieur ou égal , différent de , à peu près égal etc...).cela n' a donc rien de particulier...
Personnellement , j'écris mes sujets avec le caractère ANSI 215 de ma police habituelle (souvent Times New Roman mais parfois d'autres polices et c'est toujours évidemment le même code 215). Seuleument , lorsque je récupère les docs d'autres profs que je connais ou sur internet , le signe multiplié est souvent celui écrit avec le gestionnaire de caractères spéciaux , réglé sur la police Symbol : et là ce n'est plus 215 mais j'ai finalement trouvé que la méthode Selection.Find.Text ChrW(61620) ou Selection.Find.Text ChrW(-3916) me permettaient de les retrouver , mais pourquoi ?....
(Unicode utilisant deux octets pour chaque caractères , donc 65536 possibilités , il est normal que 61620 correspondent à -3916.....me semble-t-il...).
0
Rejoignez-nous