Les meilleurs développeurs web freelances sont sur Codeur.com

Projet VBA Word

 Fermé·Moins de 500 €·1 offre·742 vues·2 interactions


Bonjour,

Je souhaiterais écrire mes cours de mathématiques sur mon ordinateur portable, ce qui nécessite de pouvoir facilement et rapidement écrire des formules mathématiques diverses (opérateurs, sommes, intégrales, divisions etc.) avec des mises en forme spécifiques et éventuellement des zones à compléter (par exemple les bornes de l’intégrale ou l’expression à sommer dans le cas d’une somme). Tous ces éléments se trouvent dans le module « Equations mathématiques » (Image 1) mais il faut les sélectionner un par un dans l’onglet « Equations » pour les utiliser, ce qui est trop long pour une prise de notes. J’ai des moyens assez limités merci d’en tenir compte.

Je souhaiterais que Word ou une macro remplace automatiquement des mots-clés précis par les objets mathématiques auxquels je les aurais associés : par exemple, le mot sum sera remplacé par le signe de la somme telle quelle apparaît dans l’onglet « Equations » (donc avec le signe de la somme et une zone pour écrire l’expression à sommer) ; le mot int sera remplacé par une intégrale (le signe et les zones à compléter évidemment) etc. Le caractère « $ » sera parfois mis devant toutes les mots-clés pour différencier clairement les mots destinés à être remplacés par un objet mathématique des autres mots, comme par exemple pour différencier e de $e (la fonction exponentielle). Je voudrais aussi que les mots-clés soient remplacés uniquement s’ils sont séparés des autres mots : imaginons par exemple que je fasse une faute et que j’écrive « ma$intenant » au lieu de « maintenant », je ne veux pas que Word reconnaisse le mot-clé « $int » dans le mot « ma$intenant » et le remplace directement au milieu du mot, je souhaite que le mot-clé soit totalement séparé des autres par des espaces pour qu’il soit remplacé.

Cela marche parfaitement avec les corrections automatiques, qui remplacent bien le nom de l'insertion automatique par son contenu mis en forme. Il suffit juste d'un espace pour les insérer mais malheureusement, les corrections automatiques ne fonctionnent que sur des écris considérés comme textes, donc ne marchent pas dans les zones d'équations mathématiques. Par exemple, si j'écris $sum pour faire apparaître une somme, elle apparaîtra, mais si je veux écrire quelque chose dans cette somme ou marquer les bornes, je ne peux plus insérer d’autres expressions mathématiques via corrections automatiques dans les zones dédiées de la somme car la somme est dans une zone d'équation mathématique, qui n'est pas considéré comme du texte mais des équations, ce qui empêche d’utiliser les corrections automatiques.

Word arrive parfaitement à reconnaître le nom d'une correction automatique et à la changer directement avec juste un espace et à le faire dans tous les cas, sauf dans les zones d'équations.

Mon problème consiste en quelque sorte à trouver un moyen d’étendre le concept de correction automatique dans les zones d’équations.

J’ai d’abord essayé d’utiliser les insertions automatiques (QuickParts) pour régler mon problème mais bien qu’elles marchent partout, même dans les zones d’équation, il faut toujours utiliser la touche F3 pour les insérer après avoir marché leur nom, ce qui est embêtant et me faire perdre un temps fou car elle est assez petite sur mon clavier et éloignée des zones où j’écris habituellement, à la différence des corrections automatiques, qui utilisent naturellement la touche ESPACE.

Il existe cependant un mode de correction automatique appelé « Automaths », qui fonctionne comme les corrections automatiques, mais dans les zones d’équation, mais qui ne règle absolument pas mon problème étant donné que les expressions qui s’y trouvent sont inutilisables mathématiquement : par exemple, la somme n’est constituée que du signe somme et il n’y a pas de zones pour écrire les bornes, tout comme l’intégrale où il n’y a pas de zones pour écrire les bornes ou la fonction à intégrer. Il n’y a que le signe et pas les zones à compléter. De plus, il est possible de rajouter de nouvelles corrections automatiques « Automaths », mais à la différence des autres corrections automatiques, il n’est pas possible de conserver la mise en forme pour Automaths : imaginons que l’on essaye d’enregistrer la somme contenant des zones à compléter dans Automaths, seul le signe de la somme sera enregistré car Automaths n’enregistre pas les mises en forme.
J'ai pensé à ce qu'une macro puisse savoir où stocker le nom de toutes mes insertions automatiques pour qu'elle les remplace automatiquement à chaque fois que je les écris dans un mot « isolé » des autres par des espaces.

J’ai demandé à quelqu’un de résoudre mon problème. Cette personne m’a bien fournie un code VBA fonctionnel (les acronymes sont remplacés quand on fait un espace, même dans les zones d’équation mathématiques, on ne l’enclenche qu’une seule fois) mais ce code me pose de nombreux problèmes :

1) La macro s’active à chaque fois que je clique sur espace, même s’il n’y a pas de remplacement. Cela engendre un très court chargement à chaque fois que je clique sur espace, ce qui est assez gênant

2) L’insertion est parfois assez lente, au contraire des corrections automatiques, je crois que cela est dû à la trop grande complexité de la macro ou à la longueur des expressions mathématiques insérées

3) Le code VBA repose sur les noms des objets mathématiques. Or, plusieurs objets mathématiques différents peuvent avoir le même nom : par exemple, la somme de l’image 4 est différente de la somme de l’image 3 mais elles ont le même nom. Il faudrait que la macro se réfère directement au nom que j’ai donné à chaque objet mathématique et non au nom de base. Par exemple, on peut stocker tous les objets dans des quickpart avec des noms différents et les insérer. Voici où ils sont stockés sur mon ordinateur pour le quickpart $test par exemple :

Application.Templates( _
"C:\Users\NomUtilisateur\AppData\Roaming\Microsoft\Templates\Normal.dotm"). _
BuildingBlockEntries("$test").Insert Where:=Selection.Range, RichText:= _

5) J’ai constaté de nombreux problèmes avec le curseur qui sautait des lignes, la disposition des lignes qui était modifiée et l’apparition du message d’erreur mypos (voir le code VBA) quand j’utilisais de manière diverse la touche espace : par exemple, si j’insère une équation avec la macro et qu’ensuite je mets un espace dans cette équation même, un message d’erreur apparaît. De plus, il arrive que le message d’erreur apparaisse dans d’autres moments en utilisant l’espace.

Il faudrait que la macro ne prenne pas trop de temps pour s’activer et que l’insertion soit fluide, sans aucun problème avec les espaces. De plus, elle doit soit être directement activée à l’ouverture du fichier, soit activée une seule et unique fois à chaque ouverture du fichier (juste après avoir ouvert le document).

6) Le message d’erreur est totalement inutile et pose des problèmes. Il faudrait le supprimer : si l’insertion ne marche pas, rien ne se passe.

Si vous êtes intéressé, je vous envoie le code.

PS : étant donné la facilité du projet, je propose 30 euros comme prix.

Budget indicatif : Moins de 500 €

Publication : 27 avril 2020 à 17h45

Profils recherchés : Développeur de plugin freelance, Correcteur freelance

Le profil du client est reservé aux prestataires abonnés

Créer un compte

1 freelance a répondu à ce projet

1 proposition de devis en moins de 2h

Publier un projet similaire

Chaque jour, des centaines de clients utilisent Codeur.com pour trouver un prestataire. Créez votre compte dès maintenant, remplissez votre profil et trouvez de nouveaux clients.

Trouver des nouveaux clients

Votre navigateur Web n’est plus à jour. Il ne permet pas d’afficher correctement le site Codeur.com.
Nous vous invitons à mettre à jour votre navigateur ou à utiliser un autre navigateur plus récent.