XL 2010 Problème avec un texte défilant d'un USF lors de son ouverture

Magic_Doctor

XLDnaute Barbatruc
Bonsoir,

Après que mapomme & Soan m'aient prêté main forte pour éclipser un USF via la touche "Esc", je me heurte à un nouveau problème. J'aurais pu rester sur le fil précédent, mais il s'agit là d'un tout autre problème.
J'ai un USF. Dans le TextBox qui s'y trouve on y rentre un mot de passe. Mais dans ce même TextBox peuvent apparaître des avertissements sous forme d'un texte défilant. Tout marche très bien, sauf à l'ouverture de l'USF. En effet, quand celui-ci s'ouvre, je voudrais que dans le TextBox il y ait un message défilant qui avertisse le pélerin du nombre d'essais auxquels il a droit. Il suffit ensuite de cliquer sur le champignon (à droite du TextBox) pour pouvoir rentrer le bon mot de passe ("zaza"). Quand on appelle l'USF et que l'on veut qu'il en soit ainsi à l'ouverture, ça plante (voir dans le module de l'USF où j'ai mis en REM la routine qui est censée gérer le défilement du texte à l'ouverture de l'USF).
Quoi qu'il en soit, on peut virer ipso facto l'USF en appuyant sur la touche "Esc" (astuce communiquée par mapomme dans le précédent fil).
 

Pièces jointes

  • Pb USF.xlsm
    26.3 KB · Affichages: 20
Dernière édition:

patricktoulon

XLDnaute Barbatruc
tiens Soan
une toute petite démo de rien du tout qui va peut être te faire comprendre

ouvre un fichier et met un userform
met ce code
VB:
Private Sub UserForm_Activate()
'Me.Left = 0
End Sub

Private Sub UserForm_Initialize()
Me.Left = 0
End Sub
lance le
mince alors!!! mon userform n'est pas déplacé
maintenant débloque le ligne dans le activate et relance ton userform
Ah ben ca alors !!

un module userform est un module avant tout et de type classe

par exemple tu peut très bien mettre des fonction persos dans le module userform et t'en servir comme module sans même l'afficher
exemple
dans le userform
VB:
Public Function calcul(x1, x2)
calcul = x1 + x2
End Function

et dans un module standard
VB:
Sub test()
    MsgBox UserForm1.calcul(10, 12)
End Sub

et j'aborde pas la notion de (classe controls) intra userform , suffisamment démontré avec mes boite de dialog dans les ressources dont mon calendrier en est un bon exemple

et pour finir
et là on vois bien la méprise tu en est un bel exemple
Perso, j'aurais dit : le code du Initialize() est le code qui s'exécute à l'ouverture du formulaire ;
et le code du Activate() est le code qui s'exécute quand on sélectionne le formulaire.
ben.. t'a tout faux
le initialize() s'execute a l'initialisation module userform AVANT!!!! QUE CA SOIT UN OBJECT USERFORM
le activate() qui aurait du porter le nom de "activated() s'execute une fois l'object userform activé
 
Dernière édition:

soan

XLDnaute Barbatruc
Inactif
@patricktoulon

whaooou ! super convaincante, ta démo !!! surtout qu'j'ai même pas eu besoin
d'cliquer sur le UserForm pour l'activer, et il s'est bien placé automatiquement
contre le bord gauche de l'écran ; j'adore !!! :D et cela même si en pratique :
je me sers du Initialize() pour initialiser des variables qui sont ensuite utilisées
dans les autres subs du UF, pas pour positionner le UF contre le bord gauche ;
et si j'avais eu besoin de mettre le UF contre le bord gauche, ou à un autre
endroit que le milieu horizontal de l'écran, j'aurais mis la position dans le Left
des propriétés du UF, directement ; mais j'comprends bien qu'ton exemple
était juste une démo pour montrer la différence entre Initialize() et Activate(),
ce que tu as démontré avec brio ! chapeau !!!


pour la 2ème partie, ça a bien démontré que la fonction calcul() du UserForm
est bien exécutée par la sub test() du module standard, alors même que le
UserForm n'est pas affiché ; bravo aussi pour cette autre démo, qui est très
intéressante !!!

pour ta dernière phrase, avec « classe controls », c'est trop technique pour moi !
j'ai déjà tellement à faire avec les modules standards, les UserForm, ou le code
de ThisWorkbook, ou celui d'une feuille de calcul, que pour l'instant, ce qui
concerne les modules de classe, je préfère m'en passer ; j'avais utilisé une seule
fois un module de classe, avec Excel 2003, pour créer une barre d'outils de
conversion Francs / Euros de la valeur de la cellule active, appelable depuis
n'importe quel classeur Excel (et pas uniquement par le classeur en cours) ;
je ne l'ai pas gardé car avec Excel 2007, ça va dans l'onglet « Compléments »
du Ruban, et si je suis sur un autre onglet, on ne le voit plus ; alors qu'avant,
ma barre d'outils d'Excel 2003 était visible en permanence dans le menu !
aussi, pour ce côté là, c'est devenu moins bien qu'avant ! comme quoi les
nouvelles versions d'Excel ne sont pas forcément mieux sur tous les points !

(comme ce post est assez long, tu comprends pourquoi j'ai beaucoup tardé
à te répondre ! et prends aussi en compte le temps que j'ai pris pour faire
les essais de tes 2 démos. ;))


soan
 

Magic_Doctor

XLDnaute Barbatruc
Bonjour patricktoulon,

Merci pour ce cours magistral que je vais étudier de plus près, parce que ce n'est pas encore gagné au niveau compréhension. Les USF sont donc plus subtils qu'il n'y paraît. Mais une chose est certaine, c'est qu'après avoir assimilé tout ça, on peut vraisemblablement manipuler les USF à sa guise.
Entre votre intervention et celle de mapomme pour la touche "Esc", on peut enfin commencer à fabriquer des USF High-Tech ! Même si ce n'est que pour le fun...
 

patricktoulon

XLDnaute Barbatruc
re
bonsoir @Magic_Doctor
oui on peu aller beaucoup plus loin qu'une simple fenêtre avec des boutons
un userform peut être applicatif, dialog, responsif , executeur
tout dépend du besoins
comme je disais plus haut mes contributions dans les ressources sur les dialog s'appuie sur un mode responsif

et ce ne sont là que des exemples basiques
ça me permet de coder module et userform que dans le module userform

les userform deviennent des fonctions avec interface ou des points central de l'App développée

et en faisant des codes générique un userform peut être facilement greffable dans une autre App
transportabilité 100% ;)
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir à tous,

C'est ce que j'ai voulu dire prosaïquement avec ma chaine de production d'une auto.
Quand on Initialise, on est en train de construire la voiture. Certaines caractéristiques peuvent être modifiées pendant la phase initialisation : la couleur, le type de siège mais on ne peut pas la faire avancer, reculer, tourner à gauche ou à droite. Le futur propriétaire ne peut même pas voir si les options désirées ont bien été prises en compte.
C'est uniquement quand la voiture vous est livrée (quitte la chaine - fin de l'initialisation) que tout ce qu'on a commandé se voit. Et alors on peut s'y assoir, la démarrer, la faire rouler à toutes vitesse voire avoir un accident mais pas avant la livraison.
 
Dernière édition:

Discussions similaires