tempo pour userform

julos08

XLDnaute Nouveau
Bonsoir a tous,

Comment creer une macro qui lance une userform et qui la ferme au bout de 10s.

Merci a tous

@++
julos08
 
F

Franck

Guest
Salut Julios08
J'ais deja eu ce probleme et voila ce que j'ai trouvé



Private Sub UserForm_Activate()

newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 10
waitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait waitTime

Unload Me
End Sub


A + Franck
 

Eric C

XLDnaute Barbatruc
Bonsoir le forum
Bonsoir Julos08, bonsoir Franck

Non que je veuille gagner des points (Lol....) mais je m'autorise 2 points pour les lecteurs suivants en quête d'une réponse similaire :

Franck, il te manque le 'lancement' de la macro à l'ouverture du fichier donc :

Code:
Private Sub Workbook_Open()
UserForm1.Show
End Sub

Pour Julos08, de visu il me semble que ton USF qui se lance, l'on ne sait pas comment (Je reprend mon point ci-dessus) ne 's'effacera' que si tu actionnes les touches de fermeture Alt F4.

Ci-joint un code similaire mais COMPLET dans un fichier que j'avais commencé.
;)
 
F

Franck

Guest
Salut Eric C


Bon point quand meme !

C'est vrais que pour que ça marche il faut lancer l'Userform
Julios l'avait compris mais ceux qui nous lisent peut etre pas -

Bon! je ferai attention c'est promis

A + Franck
 

JeanMarie

XLDnaute Barbatruc
Bonjour tout le monde

Je ne suis qu'un débutant en VBA, je n'ai aucune expérience dans les userform. Mais je dirais que le code de Franck est plus 'propre' que celui de Julos.

Je m'explique, il faut faire attention à l'utilisation de la Méthode OnTime, dans l'aide en ligne de VBA il y a un exemple qui montre comment exécuter my_Procedure à 17 heures, et indique comment arrêter 'my_Procedure', par

Application.OnTime EarliestTime:=TimeValue('17:00:00'), _
Procedure:='my_Procedure', Schedule:=False

Il est préférable d'utiliser les conseils de l'aide en ligne.

Autre point, étant sur environnement Mac, l'utilisation de la méthode SendKeys n'est pas supportée. Il est préférable d'utiliser la méthode

Unload UserForm1

Autre inconvénient, si l'utilisateur quitte l'userform avant les 10 secondes...
1er cas, si la méthode 'sortie' se trouve dans le module de l'userform, VBA va afficher un message d'erreur, disant qu'il ne trouve pas la sub 'sortie'
2ème Cas, si la méthode 'sortie' se trouve dans un autre module, VBA va vouloir fermer la fenêtre active, ce qui ne sera pas le cas avec UnLoad.

Tout ceci, implique de nommer une variable publique pour stocker l'heure d'arrêt (obligatoire sur Mac), et l'affection de la procédure d'arrêt aux événements et objets de fermeture de l'userform, voir du fichier.

@+Jean-Marie
 
F

Franck

Guest
Salut JeanMarie Salut Julio

Voila moi j'ai déja realisé ce tru la et ça marche tres bien

Ca m'ouvre mon USF le temps voulu et ça la referme tout seul
j'y ajoute un peu de code qui permet d'enlever les 3 boutons de commande de la fenetre en haut a droite et la impossible de planter


Private Declare Function GetWindowLongA Lib 'user32' _
(ByVal hWnd As Long, ByVal nIndex As Long) As Long

Private Declare Function SetWindowLongA Lib 'user32' _
(ByVal hWnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long

Private Declare Function FindWindowA Lib 'user32' _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
-------------------------------------------------------------------------
Private Sub CommandButton1_Click() ' Un bouton pour fermer
Unload Me
End Sub
--------------------------------------------------------------------------
Private Sub UserForm_Initialize()
Dim hWnd As Long
hWnd = FindWindowA('Thunder' & IIf(Application.Version Like '8*', _
'X', 'D') & 'Frame', Me.Caption)
SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) And &HFFF7FFFF
End Sub

Private Sub UserForm_Activate()

newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 10
waitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait waitTime

Unload Me
End Sub

'et bien sur comme dirait Eric

Private Sub Workbook_Open()
UserForm1.Show
End Sub

Mais attention quant tu cré ton USF pense bien a mettre un bouton pour fermer pour faire tes essais si non !!!


en tout cas pour Application.Wait waitTime j'ai pas beucoup de merite c'est dand l'aide VBE



A + Franck
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Franck, Jean-Marie, Eric, Julos, le Forum

Pour ta dernière macro Franck, il y a un bail, au début de l'ancien Forum, j'avais fait une démo sans croix avec des appels API comme toi... Et bien Ti m'a 'enguirlandé' car il m'a montré le 'UserForm_QueryClose'... Et j'ai retenu la leçon !!! (merci Ti )

N'oubliez pas que plus on reste simple, plus votre programme aura de chance d'être fiable et de perdurer vis à vis des versions d'offices et de windows... (Les API ne sont pas forcément toujours suivies de versions en versions...) Et je ne parle même pas sous Mac pour Jean-Marie par exemple...

Donc ceci suffit amplement :

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then Cancel = True
End Sub

Seul un CommandButton lié à une macro 'unload me' pourra fermer le UserForm, la Croix et ALT F4 n'y feront rien... (Dans ton cas le wait qui lance le Unload devrait faire l'affaire)

Bon Dimanche
@+Thierry
 
F

Franck

Guest
re re

Pourqoi faire compliqué ?? bien sur


J'aimerai si tu le permet te mettre a contribution sur l'autre affaire de Julios qui semble liée a celle ci - il semble vouloir activer un GIF animé dans son USF et j'avoue que la solution m'interesse aussi
Comment VBE peut il gerer ce format ?

A + Franck
 

_Thierry

XLDnaute Barbatruc
Repose en paix
re Salut Franck

Et bien donc comme j'ai répondu dans l'autre Fil

Go to the Lien supprimé

Tu y verras une méthode... En utilisant l'ActveX WebBrowser, LaurentTBT à d'ailleurs amélioré l'usage de ce Control pour le cadre de fenêtre invisible, sans passer par des balises HTML.., je pense dans son 'grenier XLD' mais je ne sais pas où il se trouve dans ce nouveau Forum.

Bon Dimanche
@+Thierry
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Vernissage Démo / Vernissage Démo / Vernissage Démo / Vernissage Démo / Vernissage Démo

INVITATION POUR UNE PERSONNE

            Lien supprimé

Welcome !
@+Thierry

Message édité par: _Thierry, à: 13/03/2005 19:27
 

Discussions similaires

Réponses
2
Affichages
205
Réponses
12
Affichages
479

Statistiques des forums

Discussions
314 450
Messages
2 109 730
Membres
110 553
dernier inscrit
loic55