OVH Cloud OVH Cloud

RR carcatères spéciaux

22 réponses
Avatar
b.delap
Ola, buenas tardes, goût d'afternoon
Titillé par les indications de la reine du RR, j'ai un petit souci.
Je souhaite utiliser la belle macro de Anacoluthe pour faire des calculs
dans un doc.
Mais ces calculs sont présentés comme à l'école :
par exemple, au lieu de 6*5, le texte saisi est 6 x 5
où x est un truc que j'ai VBAisé et qui est désigné dans le code VBA par :
Font:="Symbol", CharacterNumber:=-3912, Unicode:= _True
L'expression n'est pas calculable ainsi.
J'avais donc imaginé ajouter à la macro un truc par RR qui me permettrait de
remplacer mon texte par 6*5.
Pour le replacer après le calcul.
Mais je ne vois pas comment je dois rédiger l'instruction pour que RR trouve
ce caractère.
J'ai esayé :
Utiliser les caractères génériques.
Rechercher : ?
Mise en forme : police : Symbol
Mais il ne trouve pas.

Autre fait troublant : quand je sélectionne ce cractère, la police qui
s'affiche dans la zone déroulante des polices n'est pas la police Symbol,
mais celle de l'ensemble du texte alentour.
En revanche, si je double clic sur le caractère, la boîte de dialogue
caractères spéciaux apparaît sur l'onglet symboles afficahant la police
Symbol et la case sélectionnée est bien celle du dit caractère.

En tout cas, merci d'avance pour les déjà très intéressantes infos à propos
de RR.

Voilà.
Bernard

10 réponses

1 2 3
Avatar
Clément Marcotte
Bonjour,

J'ai comme l'impression qu'il y a au moins deux caractères
différents qui

donnent le même résultat visuel.


Si tu as pris ce machin là × de la table des caractères, la macro n'en
tient pas compte. Mais elle tient compte, si mes souvenirs sont
exacts, du x, du X et du + du clavier.

Avatar
Clément Marcotte
Bonjour,

C'est pourquoi je l'utilise de
préférence à celle d'Anacoluthe.


J'espère qu'il s'en remettra, le pôvre :-))))))))))))))

Avatar
Clément Marcotte
Bonjour,

Pour que le × de la table des caractères (Unicode 0215), soit reconnu
à titre de signe "officiel" de multiplication, il manquait la quantité
effroyable de 2 lignes. Voici donc une nouvelle version avec les deux
lignes ajoutées. (Dans la boucle Do)

Sub autrecalculhorizontal()
'Clément Marcotte
'Amos (Québec)
'Écrite en 2001 et
'modifiée le 5 mars 2005
'pour inclure le support pour
'le caractère × à titre
'de signe de multiplication
'Macro antérieure à celle d'Anacoluthe sur la FAQ
'et effectivement meilleure.
expression = Selection
If Len(Selection) <= 1 Then
MsgBox "Vous n'avez pas sélectionné de nombre", vbOKOnly,
"Erreur dans la sélection"
End
End If
place% = 1
dehors% = False
Do
If InStr(place%, expression, "X") > 0 Then
place% = InStr(expression, "X")
Mid$(expression, InStr(expression, "X"), 1) = "*"
ElseIf InStr(expression, "x") > 0 Then
place% = InStr(expression, "x")
Mid$(expression, InStr(expression, "x"), 1) = "*"
ElseIf InStr(place%, expression, "×") > 0 Then
Mid$(expression, InStr(expression, "×"), 1) = "*"
ElseIf InStr(expression, "÷") > 0 Then
Mid$(expression, InStr(expression, "÷"), 1) = "/"
Else
dehors% = True
End If
Loop Until dehors% = True
expression1 = Selection
Selection = expression
expression = expression1
resultat = Selection.Calculate
Position% = InStr(resultat, ".")
If Position% = 0 Then Position% = InStr(resultat, ",")
If Position% = 0 Then
longueur = Len(resultat)
caractere = ""
Select Case longueur
Case Is <= 3
Nombreseparateurs = 0
Case 4 To 6
Nombreseparateurs = 1
Case Else
Nombreseparateurs = longueur 3
End Select
reponse = resultat
Else
partieentiere = Left(resultat, Position% - 1)
PartieDécimale = Right(resultat, Len(resultat) - Position%)
longueur = Len(partieentiere)
Select Case longueur
Case Is <= 3
Nombreseparateurs = 0
Case 4 To 6
Nombreseparateurs = 1
Case Else
Nombreseparateurs = longueur 3
End Select
reponse = resultat
caractere = ","
End If
If Nombreseparateurs >= 1 Then
reponse = ""
premierseparateur = longueur Mod 3
If premierseparateur = 0 Then premierseparateur = 3
j% = 1
For i% = 1 To Nombreseparateurs + 1
Select Case i%
Case 1
nombrecaracteres = premierseparateur
Case 2
nombrecaracteres = 3
Case Else
End Select
extrait = Mid(resultat, j%, nombrecaracteres)
j% = j% + nombrecaracteres
If i% <= Nombreseparateurs Then
reponse = reponse & extrait & Chr(160)
Else
reponse = reponse & extrait & caractere
End If
Next
reponse = " = " & reponse & PartieDécimale
Else
reponse = " = " & reponse
End If
Selection.Delete
Selection.InsertAfter expression
Selection.InsertAfter reponse
Selection.MoveRight Unit:=wdCharacter, Count:=1
End Sub


"Clément Marcotte" a écrit dans le
message de news:
Bonjour,

J'ai comme l'impression qu'il y a au moins deux caractères
différents qui

donnent le même résultat visuel.


Si tu as pris ce machin là × de la table des caractères, la macro
n'en

tient pas compte. Mais elle tient compte, si mes souvenirs sont
exacts, du x, du X et du + du clavier.







Avatar
Clément Marcotte
Bonjour,

MeuhNon, meuhnon,

Elle a été conçue avant qu'un groupe d'individus dénommé AMIS décide
de pourchasser ceux qui s'adonnent aux joies de la programmation ;-)


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


AB a exposé le 05/03/2005 :
Hello tout le monde !
Si ça vous intéresse, voici le code (désolé, c'est un peu long,
mais ce n'est que tu texte). Encore MERCI Clément !!!



Euh... J'ai pas suivi, mais c'est pas celle que j'ai mise dans la
faq ?... ou me trompe-je ?


http://faqword.free.fr/download.php?lng=fr&pgƒ8

Circé





Avatar
Anacoluthe
Bonjour !

'Clément Marcotte' nous a écrit ...
C'est pourquoi je l'utilise de
préférence à celle d'Anacoluthe.


J'espère qu'il s'en remettra, le pôvre :-))))))))))))))


Je ne pense pas m'en remettre :-) ))))

Ma malheureuse macro de 15 lignes ne fait pas le poids !!!
Écrite à Marseille sous l’emprise du pastis-tomate,
elle n’avait d’autre but que de faire oublier un instant
que Word est peu doué pour le calcul... :-p

Non je ne m'en remettrai pas !
Aussi vais-je vous quitter maintenant une dizaine de jours,
plus près du soleil chercher la force du titan.

À bientôt tous !

Anacoluthe
« Rien ne développe l'intelligence comme les voyages. »
- Émile ZOLA


Avatar
Clément Marcotte
Bonne vacances !


"Anacoluthe" a écrit dans le message de
news:
Bonjour !

'Clément Marcotte' nous a écrit ...
C'est pourquoi je l'utilise de
préférence à celle d'Anacoluthe.


J'espère qu'il s'en remettra, le pôvre :-))))))))))))))


Je ne pense pas m'en remettre :-) ))))

Ma malheureuse macro de 15 lignes ne fait pas le poids !!!
Écrite à Marseille sous l’emprise du pastis-tomate,
elle n’avait d’autre but que de faire oublier un instant
que Word est peu doué pour le calcul... :-p

Non je ne m'en remettrai pas !
Aussi vais-je vous quitter maintenant une dizaine de jours,
plus près du soleil chercher la force du titan.

À bientôt tous !

Anacoluthe
« Rien ne développe l'intelligence comme les voyages. »
- Émile ZOLA




Avatar
Guy Moncomble
Bonjour à tous,
dans le message 4229eb7d$0$817$,

| Clément Marcotte a pris le temps de m'instruire, et je l'en remercie.
|
|| Je viens tout juste de la réessayer avec 4X7, 6/2 et 6÷2. Chaque fois
|| j'ai eu le bon résultat. As tu bien sélectionné l'opération et gardé
|| la sélection avant de lancer la macro ?
| Mauvaise manip de ma part. Toutes mes désoles.
| Ca marche avec 4X7, 6/2, et aussi avec 4x7 (j'avais déjà farfouillé et
| modifié je ne sais quoi avant de faire cet essai là. )
| En rvanche pas avec 6÷2.
| Je crois que le problème vient de ce type de caractère : ´ ou ¸ que
| la macro ne reconnaît pas.
| Si je suis le processus que tu m'indiques pour insérer ´ dans le
| code VBA, il en affiche un autre qui ressemble à : ' (apostrophe).
| Alors que j'arrive sans difficulté à insérer ce caractère dans ce
| courrier, par exemple.Mais ayant pris le temps de relire avant de
| poster, je m'aperçois qu'il ne s'affichent pas comme ils devraient,
| les vilains.
|
| Mais, bon ... Tout cela est un peu sans utilité autre que celle de
| comprendre.
| Je vais plutôt m'orienter vers une autre astuce perso (si j'en
| trouve).
|
| Merci pour tout.

Après une aussi longue absence, je m'étonne d'être encore émerveillé par
l'impressionnante quantité de travail que certains sont prêts à
s'infliger. Dans le cas de la programmation, y compris VBA, cela conduit
immanquablement au code spaghetti.
Faisons une pose et réfléchissons. En l'occurence il s'agit d'une macro
de calcul (déjà complexe), qui prend une chaîne en entrée et qui accepte
d'effectuer un calcul.
Je suggère d'accepter l'idée que ce problème est d'une simplicité
biblique.
La macro doit être écrite de la façon la plus simple et compacte que
possible, avec une liste unique d'opérateurs acceptés et aucun alias, ce
qui n'est pas le cas actuellement, mais ce n'est pas grave. En bonne
logique, à chaque ajout, non pas d'un nouvel opérateur, mais d'un nouvel
alias d'opérateur, il faudrait refaire l'analyse syntaxique. Je crie NON
! il suffit de fournir à la macro une chaîne conforme à ce qu'elle
comprend. Pour cela on utilise un préanalyseur qui remplace tous les
alias par l'opérateur qui va bien. Ce travail en deux passes fournit
nécessairement une application plus robuste. Dans le cas présent le
préanalyseur n'est qu'en procédure de remplacement : pour cela on peut
utiliser la fonction replace ou en écrire une si l'on veut pouvoir
l'utiliser quelle que soit la version de Word.
--
A+

G.M. MVP Word
Avatar
Guy Moncomble
Bonjour à tous,
dans le message 4229bd0b$0$807$,

| Autre fait troublant : quand je sélectionne ce cractère, la police qui
| s'affiche dans la zone déroulante des polices n'est pas la police
| Symbol, mais celle de l'ensemble du texte alentour.
| En revanche, si je double clic sur le caractère, la boîte de dialogue
| caractères spéciaux apparaît sur l'onglet symboles afficahant la
| police Symbol et la case sélectionnée est bien celle du dit caractère.

C'est peut-être troublant, mais Word est programmé comme celà ! En fait
il n'y a, à ma connaissance que deux méthodes simples pour accéder aux
propriétés d'un caractère de la police symbol : celle que tu as indiquée
"à la main", ou avec VBA par Dialogs(wdDialogInsertSymbol). C'est cette
dernière possibilité qui a été employée dans le visualiseur ASCII
accessible en téléchargement.
--
A+

G.M. MVP Word
Avatar
Geo
Bonjour Anacoluthe


Non je ne m'en remettrai pas !
Aussi vais-je vous quitter maintenant une dizaine de jours,


C'est donc toi l'inventeur de la BDD
(bouderie à durée déterminée) !

--

A+

Avatar
Clément Marcotte
Bonjour,

Le gros du programme a été écrit en 2000 - 2001, alors que je me
remettais à la programmation après plusieurs années. De plus, il est
le résultat de quelques ajouts demandés par André et d'autres. C'est
sur que si je le refaisais aujourd'hui, je le ferais autrement.


"Guy Moncomble" <http://cerbermail.com/?QOoOlzu81P> a écrit dans le
message de news:
Bonjour à tous,
dans le message 4229eb7d$0$817$,

| Clément Marcotte a pris le temps de m'instruire, et je l'en
remercie.

|
|| Je viens tout juste de la réessayer avec 4X7, 6/2 et 6÷2. Chaque
fois

|| j'ai eu le bon résultat. As tu bien sélectionné l'opération et
gardé

|| la sélection avant de lancer la macro ?
| Mauvaise manip de ma part. Toutes mes désoles.
| Ca marche avec 4X7, 6/2, et aussi avec 4x7 (j'avais déjà
farfouillé et

| modifié je ne sais quoi avant de faire cet essai là. )
| En rvanche pas avec 6÷2.
| Je crois que le problème vient de ce type de caractère : ´ ou ¸
que

| la macro ne reconnaît pas.
| Si je suis le processus que tu m'indiques pour insérer ´ dans le
| code VBA, il en affiche un autre qui ressemble à : ' (apostrophe).
| Alors que j'arrive sans difficulté à insérer ce caractère dans ce
| courrier, par exemple.Mais ayant pris le temps de relire avant de
| poster, je m'aperçois qu'il ne s'affichent pas comme ils
devraient,

| les vilains.
|
| Mais, bon ... Tout cela est un peu sans utilité autre que celle de
| comprendre.
| Je vais plutôt m'orienter vers une autre astuce perso (si j'en
| trouve).
|
| Merci pour tout.

Après une aussi longue absence, je m'étonne d'être encore émerveillé
par

l'impressionnante quantité de travail que certains sont prêts à
s'infliger. Dans le cas de la programmation, y compris VBA, cela
conduit

immanquablement au code spaghetti.
Faisons une pose et réfléchissons. En l'occurence il s'agit d'une
macro

de calcul (déjà complexe), qui prend une chaîne en entrée et qui
accepte

d'effectuer un calcul.
Je suggère d'accepter l'idée que ce problème est d'une simplicité
biblique.
La macro doit être écrite de la façon la plus simple et compacte que
possible, avec une liste unique d'opérateurs acceptés et aucun
alias, ce

qui n'est pas le cas actuellement, mais ce n'est pas grave. En bonne
logique, à chaque ajout, non pas d'un nouvel opérateur, mais d'un
nouvel

alias d'opérateur, il faudrait refaire l'analyse syntaxique. Je crie
NON

! il suffit de fournir à la macro une chaîne conforme à ce qu'elle
comprend. Pour cela on utilise un préanalyseur qui remplace tous les
alias par l'opérateur qui va bien. Ce travail en deux passes fournit
nécessairement une application plus robuste. Dans le cas présent le
préanalyseur n'est qu'en procédure de remplacement : pour cela on
peut

utiliser la fonction replace ou en écrire une si l'on veut pouvoir
l'utiliser quelle que soit la version de Word.
--
A+

G.M. MVP Word



1 2 3