utilisation vieux formulaires XL

  • Initiateur de la discussion Nabil
  • Date de début
N

Nabil

Guest
Bonjour tout le monde
Voila j'ai un soucis sur un fichier Excel qui contient un vieux formulaire

(On peut en créer, directement dans le classeur (pas dans le projet VBA), en faisant "insérer" et de sélectionnant "boite de dialogue" plutôt que "feuille".)

la boite existante etait ouverte avec
DialogSheets("Dialog1").Show
puis la valeur des champs était récupérée avec
Worksheets(1).Cells(7, 6).Value =
DialogSheets("Dialog1").EditBoxes("Modification 9").Text

La deuxième partie ne marche plus bien sur sous XP
Mais je n'ai pas l'impression qu'il y ai de solution
en effet
Dialog1.Show
Ne marche pas, ce n'est pas une userform

Est ce qu'il y a un autre moyen, ou dois-je recréer complètement le formulaire sous VBA ????

Merci pour toute information

Nabil
 
@

@+Thierry

Guest
Salut Nabil, le Forum

Je pense qu'il doit y avoir encore moyen, mais je ne travaille pas encore sous XP...

De toute manière, et il faut bien en arriver tôt ou tard à cette évidence, ce n'est qu'une question de prochaine version pour que tous ces objets finissent par ne plus être gérés du tout... D'après ce que tu dis, XP peut encore gérer l'usage de ces boites de dialogue Excel 4, mais ne permet plus d'Edition... Ce qui parait tout à fait logique compte tenu de la politique de Micro$oft...

Moi je suis bien heureux, en tant que développeur, de ne plus rien avoir qui tourne encore avec ces "vieux objets" (n'en déplaise à la SPAM* et son Président JM !!! lol) et je conseille vivement à tous et toutes de commencer tranquillement une migration vers les UserForms et tout leur panoplie d'ActiveX qui seront de toutes les façons bien plus pratiques et surtout mille fois plus puissants....

Car si vous attendez que MS vous sorte une version de plus qui ne gèrera plus ces Objets qui datent tout de même de plus de dix ans et dont le remplacement a commencé à être effectif depuis Excel 97, vous risquez d'être sérieusement à la bourre le jour où celà va arriver !

Bon Courage
et Bon Week End
@+Thierry
 
L

LaurentTBT

Guest
Bonjour à tous.

J'ai eu l'occasion de travailler au boulot sur un fichier avec des DialogSheets. Tout fonctionnait parfaitement jusqu'à Excel 2000. Sur XP, nombreux plantages.

Je m'étais presque résolu à tout refaire sous VBA, et finalement, en exécutant les macros pas à pas, je me suis rendu-compte que mes bugs venaient de ce problème: sous XP, les noms des contrôles insérés dans les dialogsheets n'étaient parfois plus les mêmes. Mais ces noms n'étaient pas réactualisés dans les lignes de codes.
Par exemple, une macro pouvait contenir une ligne toute simple Range("A1")=textbox1, mais le Textbox1 ne s'appelait plus textbox1.

N'ayant pas accés au fichier depuis la maison, il me semble juste me souvenir, sans en être sûr, que c'était le cas quand les contrôles avaient un noms avec des caractères spéciaux (accents, ou majuscules, ou tirets). Ma mémoire flanche.

Nabil, inspecte ton fichier dans cette optique, il ne te restera qu'à redonner l'ancien nom à tes contrôles, si c'est le même problème. Dans mon cas, cela a marché. C'est assez fastidieux, moins cependant que de tout recommencer à zéro!

Sinon, tu peux essayer de joindre ton fichier, s'il n'est pas trop volumineux, car j'ai excel 2000 et XP de dispo en ce moment.

Bon courage, et dis-nous si ma solution suffit.

@+. Laurent.
 
@

@+Thierry

Guest
Salut LaurentTBT, un petit moment qu'on ne s'est croisé

Donc tu dis aussi qu'avec XP ce qui marchait parfaitement bien sous 2000 devenait source de nombreux plantages...

Par conséquent tu réconfortes ce que j'ai dit plus haut, et à mon humble avis, plutôt que de chercher la facilité de rafistoler du vieux, on refait du neuf, car de toute manière conserver ces vieux objets c'est reculer pour mieux sauter !

Et surtout ne comptez pas sur Micro$oft pour maintenir à "vita eternam" tous ces vieux objets, ils ne se gèneront pas, ils l'ont déjà fait et hyper radicalement entre XL95 et XL97 pour le VBA en "patois" local !!

D'ailleurs sur l'aide c'est déjà bel et bien indiqué (par exemple à "DialogSheet")

"Objet Masqués"
Les objets masqués dans le modèle d'objet de Visual Basic pour Microsoft Excel 97 sont listés dans le tableau suivant. Ces objets ne sont pris en charge que pour assurer une compatibilité descendante. Si vous écrivez du nouveau code, utilisez les nouvelles fonctionnalités proposées par Microsoft Excel 97

Donc ne pensez surtout pas que MS a un quelconque cahier des charges à respecter envers vous !

Donc un homme averti en vaut deux !

Bonne Fin de Journée
@+Thierry
 
@

@+Thierry

Guest
Salut Jean Marie, Notre Vénéré Président de la SPAM !

Ici je sais pas vraiment si il fait moins chaud, j'ai le capot du PC ouvert et tout sorti avec un ventilateur de salon directement sur la carte mère sinon il s'arrête avant de prendre feu !

Bon alors je viens boire l'apéro chez toi !

@+Thierry
 
L

LaurentTBT

Guest
Salut Thierry, Jean-Marie et les autres.

Et oui, ma présence sur le forum est en dent de scie. J'ai été pas mal occupé ces jours-ci à la découverte de mon nouveau portable (d'où la migration vers Excel XP!). Sinon, je suis en vacances. Je reste à la maison, en attente d'un heureux événements d'ici quelques jours. Donc il faut aussi (et surtout) s'occuper des enfants! Excel passe au second plan. Encore qu'avec le nouvel achat, je vais forcément être tenté...

Sinon, dans le cas d'incompatibilité avec XP, c'était pour un fichier assez lourd, réalisé par un collègue aussi amateur que moi, donc difficile à reprendre (c'est à ce collègue que je dois d'avoir découvert VBA).
Et comme à l'époque je ne connaissais pas encore XLD, j'avoue avoir été très content de trouver la solution sans passer par une re-création du fichier complet.

NB: dans l'aide de VBA XP, rien sur DialogSheet. En fait il n'y a même plus de compatibilité descendante!

@+. Laurent.
 
N

Nabil

Guest
Bonjour

Désolé pour le retard, je n’ai pu revenir sur le forum que ce midi.
En tout cas merci pour vos réponses

Sinon en ce qui concerne la boite de dialogue "ancien modèle", rien a faire, mes tests ne sont pas concluants.
J’ai essayé de renommer les champs, recréer une autre boite à coté

Toujours le même message
"Impossible de lire la propriété EditBoxes de la classe DialogSheets"
A priori sous XP, les méthodes et propriétés des objets DialogSheets ne sont plus accessibles.

Vu que ce code date de la V5, la compatibilité n’est apparemment plus assurée.
J’ai bien peur de devoir recréer ma boite en UserForm.

Sur le fond ça me parait normal, ça date, mais comme je risque d’en avoir d’autres a corriger dans un lapse de temps assez court, la récup me convient aussi :)
J’ai joint le fichier en cause, si quelqu’un en sort quelque chose.

Et encore merci
Bonne journée

Nabil
 

Pièces jointes

  • AppelDialog1.xls
    46 KB · Affichages: 69
L

LaurentTBT

Guest
Bonjour Nabil.

Je confirme qu'il y a bien des problèmes avec les noms des contrôles.
1 - Tu as des erreurs de frappes dans le nom de tes DialogSheets: "Dialogue1" à mettre au lieu de "Dialogue 1" (ie: pas d'espace avant le 1)
2 - Le nom "Zone d'édition 6" n'est pas reconnu. Par contre, avec l'index de chaque contrôle, ça marche.
Ainsi MsgBox DialogSheets("Dialog1").EditBoxes(1).Text Donne bien le résultat 28 saisi dedans (L'éditBox n°1 est donc bien la Zone d'édition 6)

J'ai alors eu l'idée de tester ceci:
MsgBox DialogSheets("Dialog1").EditBoxes("Edit Box 6").Name, et surprise, il m'a répondu: "Edit Box 6" au lieu de "Zone d'édition 6"
Du coup, MsgBox DialogSheets("Dialog1").EditBoxes("Edit Box 6").Text fonctionne.

Je n'ai pas regardé sur tous les autres controles, mais en faisant une macro qui te donne EditBoxes(i).Name, tu t'y retrouveras.

Mais le plus simple est de renommer tout tes contrôles avec des noms différents des noms donnés par défaut. Par exemple, j'ai renommé EditBoxes(1) alias EditBoxes("Edit Box 6") alias "Zone d'édition 6" en "TbxSemaine" dans le Dialog1, et miracle, la ligne MsgBox DialogSheets("Dialog1").EditBoxes("TbxSemaine").Text fonctionne.

Voilà, tu devrais t'en sortir.

Bon courage. Laurent.

NB: je ne connais rien à cette ancienne version, mais est-ce vraiment nécessaire d'avoir à la fois Dialog1 et Dialogue1? Cela me paraît bizarre, ceci dit, cela doit être nécessaire puisque à DialogSheets("Dialog1").Show, VBA enchaîne sur Sub Dialogue1_QuandAffichage().
Enfin, bref, vive les versions up to date!
 
N

Nabil

Guest
Eh bè
Merci Laurent

La tu m'enlève une sacrée épine du pied. Effectivement ça marche très bien.
C’est comme si à la migration, ça avait été renommé automatiquement pour que ça ne marche plus.
Trop bizarre quoi.

J’ai remplacé Modification par Edit Box dans tout le projet, ça marche nickel.
J’ai aussi le choix de l’endroit du renommage (code ou boite), donc je peux éviter de toucher au code.

C’est claire que le mieux est de reconstruire complètement un UserForm, mais le principal et d’abord d’avoir un truc qui marche et vite

Encore merci
Et bonne fin de journée

Nabil (rassuré)

NB : pour Dialog1 et Dialogue1, c’est juste du nommage automatique
Dialog1 c’est ce qu’il y avait avant et qui ne marchait pas, et qui avait été créé dans une version en Anglais
Dialogue1 je l’ai créé en faisant une copie de la première, et du coup ça ne marchait pas on plus.
Je cherchais dans la mauvaise direction.
 
L

LaurentTBT

Guest
Re Nabil,

Après m'être relu, j'avais peur de ne pas m'être bien exprimé. Je suis heureux de t'avoir dépanné.

Bon, on est tous d'accord avec Thierry, mieux vaut refaire tout en langage VBA d'aujourd'hui. Encore faut-il en avoir le temps, notamment sur de grosses applis, surtout si on n'en est pas l'auteur et qu'il faut aussi reprendre le code!

Bonne journée à tous.
 
@

@+Thierry

Guest
Bonjour Laurent, Nabil


Et oui les gars !!!


Moi en tout cas je deviens fou avec cet espèce de %@**#### d'Excel 97 !!!

En fait je fais l'inverse, là je fait du développement sous 2000 pour tourner sous 97, pas évident non plus !!!

Lien supprimé

Enfin je ne baisse pas les bras !!!

@+Thierry
 
N

Nabil

Guest
Si si, j'ai bien profité de ta réponse, moi qui m’étais résolu à réécrire complètement la boite de dialogue.

C’est le mieux à faire effectivement mais quand on a pas le temps et que le principal est que ça marche, surtout que l’espérance de vie du fichier en question (qui n'est pas le mien) risque de na pas dépasser celle de XP, le choix est fait.

Encore merci Laurent

Sinon pour Thierry ,
désolé j’étais vachement occupé et le poste avec 97 que j’ai sous la main n’était pas dispo.
Mais apparemment il a réglé son PB, donc tout va bien

A+
Nabil
 

Statistiques des forums

Discussions
314 120
Messages
2 106 095
Membres
109 488
dernier inscrit
Abdel44