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.
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.
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.
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.
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 :-))))))))))))))
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 :-))))))))))))))
C'est pourquoi je l'utilise de préférence à celle d'Anacoluthe.
J'espère qu'il s'en remettra, le pôvre :-))))))))))))))
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.
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" <clement.marcotte@sympatico.ca> a écrit dans le
message de news:OEMWc5cIFHA.580@TK2MSFTNGP15.phx.gbl...
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.
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.
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&pg8
Circé
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é" <circe@aea.gr> a écrit dans le message de
news:mn.2cc67d5371bea2b8.20493@aea.gr...
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 ?
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&pg8
Circé
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 lemprise du pastis-tomate, elle navait dautre 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
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 lemprise du pastis-tomate,
elle navait dautre 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
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 lemprise du pastis-tomate, elle navait dautre 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
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 lemprise du pastis-tomate, elle navait dautre 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
Bonne vacances !
"Anacoluthe" <nopub_anacoluthe@Ouanadoo.fr> a écrit dans le message de
news:ebnRWikIFHA.236@TK2MSFTNGP14.phx.gbl...
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 lemprise du pastis-tomate,
elle navait dautre 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
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 lemprise du pastis-tomate, elle navait dautre 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
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
Bonjour à tous,
dans le message 4229eb7d$0$817$8fcfb975@news.wanadoo.fr,
| 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+
| 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
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
Bonjour à tous,
dans le message 4229bd0b$0$807$8fcfb975@news.wanadoo.fr,
| 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+
| 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
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+
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) !
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+
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
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:u3xgJamIFHA.1304@TK2MSFTNGP10.phx.gbl...
Bonjour à tous,
dans le message 4229eb7d$0$817$8fcfb975@news.wanadoo.fr,
| 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+
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+