Form

Form - VB/VBA/VBS - Programmation

Marsh Posté le 16-05-2005 à 13:54:10    

Bonjour à tous
 
Comment peut-on faire pour fermer un form par une macro et non grâce à une action déclenchée par un utilisateur ?
 
Thanks
 

Reply

Marsh Posté le 16-05-2005 à 13:54:10   

Reply

Marsh Posté le 16-05-2005 à 14:39:25    

Unload userform
Ou unload me si la macro est dans le form lui-même


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
Reply

Marsh Posté le 18-05-2005 à 13:24:13    

Cette méthode ne fonctionne pas, parce que quand tu charges ton form, alors la macro s'arrête et attend une action de l'utilisateur (fermeture par exemple) pour continuer la lecture des lignes suivantes. Donc le unload ne sert plus à rien.
 
Voilà ce que je cherche à faire : quand je lance une macro un form s'affiche pour dire à l'utilisateur de patienter pendant son exécution. J'ai essayé d'utiliser la méthode "progressbar" mais mon VB(xp) ne connaît pas cette fonction.

Reply

Marsh Posté le 18-05-2005 à 13:27:53    

VB(xp) prend très bien en charge cette technique.
 
Tout dépend du code que tu lui a mis. (envoie pour voir)


---------------
now : do nothing
Reply

Marsh Posté le 18-05-2005 à 13:38:16    

j'ai essayé plusieur solutions, surement bidon car je ne sait pas comment l'utiliser. J'ai cherché également dans l'aide et "tête de trombone" y connait pas !!!!!!!

Reply

Marsh Posté le 18-05-2005 à 14:49:17    

Le problème c'est que la fonction timer n'existe pas sur VBA. Voilà un truc un peu bricolé mais qui finctionne relativement bien :

Code :
  1. If valu = "" Then valu = Now
  2. ' Si valu est nul, on lui affecte l'instant présent
  3. ReTry:
  4. ' Retour de boucle
  5. If Not valu = Now Then
  6. ' Si valu n'est plus égal à l'instant préssent, 1 seconde s'est écoulée
  7. valu = Now
  8. ' On réaffecte la variable Value
  9. End If
  10. ' Fin du If


Dans ton programme avec la ProgressBar, cela pourrait donner

Code :
  1. Me.ProgressBar1.Value = 0
  2. ' On s'assure que la ProgressBar est à 0
  3. If valu = "" Then valu = Now
  4. ' Si valu est nul, on lui affecte l'instant présent
  5. ReTry:
  6. ' Retour de boucle
  7. If Not valu = Now Then
  8. ' Si valu n'est plus égal à l'instant préssent, 1 seconde s'est écoulée
  9. valu = Now
  10. ' On réaffecte la variable Value
  11. Me.ProgressBar1.Value = Me.ProgressBar1.Value + 10
  12. ' On augmente la valeur de la ProgressBar
  13. End If
  14. ' Fin du If
  15. If Not Me.ProgressBar1.Value >= 100 Then GoTo ReTry
  16. ' Si la valeur est à son maximal, ici 100, on arrête, sinon on continue


 
Sinon pour ceux qui savent où se trouve le Timer sous VBA, je suis preneur ...


---------------
now : do nothing
Reply

Marsh Posté le 18-05-2005 à 16:44:28    

merci pour la réponse, je test et je te donnes des news

Reply

Marsh Posté le 18-05-2005 à 18:15:23    

knakes a écrit :

Sinon pour ceux qui savent où se trouve le Timer sous VBA, je suis preneur ...


Aide de VBA:
 
Timer Function
 
Returns a Single representing the number of seconds elapsed since midnight.
 
Syntax
 
Timer


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
Reply

Marsh Posté le 18-05-2005 à 19:13:43    

Merki beaucoup.
 
Je n'avais même pas pensé à la touche F1  :non: C'est pas bien.


---------------
now : do nothing
Reply

Marsh Posté le 18-05-2005 à 19:26:03    

Ah, non...
 
LE FOUET, LE Fouet, le fouet, le f...


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
Reply

Marsh Posté le 18-05-2005 à 19:26:03   

Reply

Marsh Posté le 18-05-2005 à 20:04:03    

humm. Quand même pas. Si ?


---------------
now : do nothing
Reply

Marsh Posté le 19-05-2005 à 14:06:52    

sympas pour ces infos, même intéressantes, je ne connaisait pas la fonction Timer.  
J'ai donc tout testé mais j'ai toujours mon problème d'affichage de l'UserForm qui me bloc l'exécution de ma macro tant que l'utilisateur ne la pas fermé manuellement.
 
Et la progress bar, y connait pas l'aide microsoft, y a t'il différente version/pack de XP professionnel ?

Reply

Marsh Posté le 19-05-2005 à 15:50:51    

Personnellement, j'affiche le UserForm et je fais faire la fonction (d'ouverture, de connexion, ...) par ce dernier.
Il me suffit de faire Unload Me quand l'opération est terminée.


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed