OVH Cloud OVH Cloud

frm style WordBasic

7 réponses
Avatar
Ringard
Bonjour.
J'ai h=E9rit=E9 d'une macro qui avait =E9t=E9 con=E7ue =E0 l'=E9poque du =

WordBasic. Elle comporte des bo=EEtes de dialogue=20
accompagn=E9es de leurs "fonctions" (ceux qui ont fait du=20
WordBasic savent de quoi il s'agit). Je crois comprendre=20
que si une telle macro est transf=E9r=E9e dans une version=20
post-WordBasic de Word, il faut que, dans la d=E9finition de=20
la bo=EEte de dialogue (je ne dis pas dans la d=E9finition de=20
la fonction), le nom de cette fonction soit pr=E9c=E9d=E9 du nom=20
du module o=F9 se trouve la d=E9finition de la fonction, sans=20
quoi il se produit une erreur difficile =E0 d=E9tecter. Le=20
probl=E8me est que chaque fois qu'on change le nom du=20
module, on doit donc penser =E0 aller le changer aussi avant=20
le nom des fonctions dans les d=E9finitions des bo=EEtes de=20
dialogue. J'aurais cru que si on ne mentionnait pas le nom=20
du module, ce serait le module "courant" qui serait=20
suppos=E9 indiqu=E9, mais ce n'est pas le cas : si on proc=E8de=20
ainsi, le r=E9sultat est incorrect, au moins en ce qui=20
concerne l'affectation de variables.
Quelqu'un conna=EEtrait-il une solution ? Ou peut-=EAtre=20
devrais-je abandonner les bo=EEtes de dialogue de style=20
WordBasic ? Je le regretterais, car elles me semblent=20
avoir un avantage (elles permettent de partager une=20
variable entre une proc=E9dure et un module sans =E9tendre le=20
partage =E0 tout le projet). Merci d'avance.
Ringard.

7 réponses

Avatar
Anacoluthe
Bonjour !

Les quelques particularités de WordBasic ne suffisent pas
à mon humble avis pour le conserver, en tout cas pas la
portée des variables. Je conseillerais de tout migrer en vba.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnword97/html/msdn_wbmigrat.asp

Anacoluthe
« Ce sont les maigres qui migrent »
- Valentin ZORG

'Ringard' nous a écrit ...
Bonjour.
J'ai hérité d'une macro qui avait été conçue à l'époque du
WordBasic. Elle comporte des boîtes de dialogue
accompagnées de leurs "fonctions" (ceux qui ont fait du
WordBasic savent de quoi il s'agit). Je crois comprendre
que si une telle macro est transférée dans une version
post-WordBasic de Word, il faut que, dans la définition de
la boîte de dialogue (je ne dis pas dans la définition de
la fonction), le nom de cette fonction soit précédé du nom
du module où se trouve la définition de la fonction, sans
quoi il se produit une erreur difficile à détecter. Le
problème est que chaque fois qu'on change le nom du
module, on doit donc penser à aller le changer aussi avant
le nom des fonctions dans les définitions des boîtes de
dialogue. J'aurais cru que si on ne mentionnait pas le nom
du module, ce serait le module "courant" qui serait
supposé indiqué, mais ce n'est pas le cas : si on procède
ainsi, le résultat est incorrect, au moins en ce qui
concerne l'affectation de variables.
Quelqu'un connaîtrait-il une solution ? Ou peut-être
devrais-je abandonner les boîtes de dialogue de style
WordBasic ? Je le regretterais, car elles me semblent
avoir un avantage (elles permettent de partager une
variable entre une procédure et un module sans étendre le
partage à tout le projet). Merci d'avance.
Ringard.


Avatar
Ringard
Merci Anacoluthe.
Les quelques particularités de WordBasic ne suffisent pas
à mon humble avis pour le conserver, en tout cas pas la
portée des variables. Je conseillerais de tout migrer en
vba.

http://msdn.microsoft.com/library/default.asp?
url=/library/en-us/dnword97/html/msdn_wbmigrat.asp


Il y a un autre avantage des boîtes de dialogue de style
WordBasic, c'est qu'elles voyagent dans le module. Si on
copie d'un PC dans un autre un module qui contient des
boîtes de dialogue style VBA, on ne doit pas oublier (mais
je l'oublie toujours) de copier aussi les frm, ce qui
n'est pas le cas pour les boîtes de style WordBasic.
Ceci dit, je crois que je vais me résigner à dessiner des
frm VBA pour remplacer les dernières frm WordBasic qui me
restent. Sans quoi, je risquerais d'être tenu hors forum
pour préhistoricité... Merci encore.
Ringard.

Avatar
Geo
Bonjour Ringard


Bonjour.
J'ai hérité d'une macro qui avait été conçue à l'époque du
WordBasic. Elle comporte des boîtes de dialogue
accompagnées de leurs "fonctions" (ceux qui ont fait du
WordBasic savent de quoi il s'agit).
[...]

Je vais regarder demain au boulot, j'ai encore des macros "héritées"
comme tu dis, mais il me semble bien justement que les fonctions m'ont
donné du souci lors de la conversion.
Ceci dit, j'en ai encore un paquet qui fonctionnent et je ne les ai
pas réécrites en fonction du principe de base de l'informatique "on ne
touche pas à ce qui marche"
et par flemme aussi ;-)
la notion de module n'existait pas en wordBasic, mais si tu ne vaux
pas avoir à qualifier tes noms, il suffit normalement de les déclarer
Public.

--

A+

Avatar
Merci Geo. (Je prends connaissance de votre message en
arrivant ce matin au bureau.)
-----Message d'origine-----
Je vais regarder demain au boulot, j'ai encore des
macros "héritées"

comme tu dis, mais il me semble bien justement que les
fonctions m'ont

donné du souci lors de la conversion.
Ceci dit, j'en ai encore un paquet qui fonctionnent et je
ne les ai

pas réécrites en fonction du principe de base de
l'informatique "on ne

touche pas à ce qui marche"
et par flemme aussi ;-)
la notion de module n'existait pas en wordBasic, mais si
tu ne veux

pas avoir à qualifier tes noms, il suffit normalement de
les déclarer

Public.


Je reçois en somme deux conseils divergents : "migrer,
migrer" et "on ne touche pas à ce qui marche". Je les
crois d'ailleurs bons tous les deux, question de temps et
de priorités. Ayant un peu de temps devant moi et devant
bientôt changer de service, je vais essayer d'éliminer les
dernières traces de Word Basic de mes macros, car elles
pourraient poser des problèmes à mon successeur, qui
risque de ne jamais avoir entendu parler du Word Basic.
Encore merci.
Ringard.

Avatar
geo
Bonjour

Suis au bureau aussi :-)
En partique les fonctions associées aux BeginDialog sont
déclarées en Private mais dans le même module que les
BeginDialog.
C'est un peu ce que je disais hier, en wordbasic la notion
de module n'existatit aps ( ou je ne la connaissais pas)
En regroupant macro de dialogue et fonctions associées
dans le même module, il n'y a pas de souci et comme on
exporte un module en entier, le dialogue accompagne la
macro.

En ce qui concerne la réécriture, l'histoire va dans ce
sens,
les dialogues avec vba sont nettement plus souples et
conviviaux, transposer simplement est un peu dommage.
On est alors tenté de tout reconcevoir,
il faut donc du temps pour écrire et tester.
Pi il est question que MS abandonne vba :-(
C'est effectivement une question d'enjeux

A+
Avatar
Ringard
Merci Geo pour cette seconde réponse.
-----Message d'origine-----
(...)
En ce qui concerne la réécriture, l'histoire va dans ce
sens,
les dialogues avec vba sont nettement plus souples et
conviviaux, transposer simplement est un peu dommage.
On est alors tenté de tout reconcevoir,
il faut donc du temps pour écrire et tester.
Pi il est question que MS abandonne vba :-(
C'est effectivement une question d'enjeux


Je suppose que c'est la compatibilité avec Word Basic que
Microsoft envisage d'abandonner, et que "vba" est une
faute de frappe... Ceci dit... il m'arrive de rêver d'un
traitement de texte qui offrirait des macros à écrire non
dans une variété de Basic mais dans une sorte de (C++)--
qui ne comporterait pas les parties délicates du C et du
C++ (pointeurs) mais l'équivalent C++ du VBA. Ce serait
aussi facile à apprendre que le VBA et cela constituerait
un point de départ pour une étude plus complète du C++.
Mais trêve de rêves et encore merci.
Ringard.

Avatar
geo
Re

Je suppose que c'est la compatibilité avec Word Basic que
Microsoft envisage d'abandonner, et que "vba" est une
faute de frappe...


Non non, on parle bien de vba au profit de vb, je ne vois
pas trop comment, mais au moins on aurait une syntaxe et
des fonctions identiques.

Je ne connais rien au C++, mais je vais peut être jeter un
oeil. Un langage plus performant que vb à l'exécution
m'intéresse.
Mais là on est Hors sujet.
Bonne fin de semaine.