_samy_
Messages postés14Date d'inscriptionsamedi 15 octobre 2005StatutMembreDernière intervention23 janvier 2008
-
25 oct. 2006 à 17:49
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 2018
-
26 oct. 2006 à 11:06
Bonjour à tous !
J'ai une question qui pourrait ressembler à une autre que j'avais posée auparavant ( ici ).
Le contexte :
Je suis sous Excel 2003, XP.
J'ai un classeur avec un userform modal (showmodal=true) qui peut lire et écrire dans "son" classeur.
Cependant, je peux avoir besoin d'aller chercher manuellement une valeur dans un autre classeur Excel.
Pour cela, je "hide" ce userform pour en afficher un autre (non modal) tout petit, avec juste un bouton qui le ferme et réaffiche le premier (c'est une "sorte" de Minimize en fait).
Le problème :
Lorsque je réaffiche le userform initial, et que je l'utilise pour lire ou écrire une donnée dans "son" classeur, il plante quand j'ai activé un autre classeur pour aller chercher manuellement une donnée.
Ce que j'ai essayé de faire, c'est de déclarer une variable publique (Wbk) qui, à l'initalisation du userform principal, prend le nom du classeur.
Le soucis, c'est que même déclarée publique, la variable est vide lorsque je veux m'en servir dans l'autre petit userfom (dans la sub click du bouton). Donc je ne peux pas réactiver mon classeur original par workbooks(Wbk).activate ...
J'arrive à me débrouiller en général en VBA, mais c'est vrai que je pèche beaucoup lorsqu'il s'agit de ce genre de problème.
Dites-moi si vous voulez d'autres infos.
Et un grand merci par avance !
Samy.
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 25 oct. 2006 à 23:25
Lorsque tu démarres ton premier classeur, tu peux donner le nom de ton
classeur à une variable Workbook. C'est probablement ce que tu fais...
(?)
Public Wbk as workbook ' déclaré dans un module Set Wbk = ActiveWorkbook ' appelé à l'ouverture ou ailleurs
Lorsque tu Hide ton Userform principal pour aller dans un autre
classeur, tu le réaffiches en utilisant ton "UserFormMinimize"
(si j'ai bien compris...).
Il faudrait que dans ce petit UserForm, dans le code du bouton qui active le classeur principal, tu mettes Wbk.Activate ( et non pas <strike>Workbooks</strike>(Wbk).activate)
_samy_
Messages postés14Date d'inscriptionsamedi 15 octobre 2005StatutMembreDernière intervention23 janvier 2008 26 oct. 2006 à 10:06
Merci MPi !
Ca fonctionne parfaitement !
Donc, pour déclarer des vars publiques et pour qu'elles soient accessibles partout (userform, subs....), il faut les mettre absolument dans un module.
Je crois que je vais désormais moins me prendre la tête. J'ai souvent été bloqué par ce type de problème, et souvent, j'était obligé de "ruser" pour y pallier.