IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Comment lancer une procédure après affichage d'une form


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Par défaut Comment lancer une procédure après affichage d'une form
    Bonjour,

    J'affiche dans un userform un textbox qui m'affiche toutes les secondes le contenu d'un fichier txt.
    Le contenu de ce fichier est modifié par un autre programme, et j'utilise le textbox pour afficher un suivi de l'évolution des calculs.
    Le problème est que je ne sais pas comment lancer automatiquement la procédure qui rafraichie le contenu du textbox lors de l'ouverture de cet userform. En effet il s'agit d'une boucle infinie et lorsque je lance la procédure à la fin de l'initialisation de l'userform, celui-ci ne s'affiche jamais puisque la boucle infinie empeche l'initialisation de l'userform de se terminer...

    Acutellement j'utilise un bouton pour lancer cette procédure, mais existe t'il un moyen pour lancer directement la procédure après l'affichage de l'userform sans avoir à cliquer sur un bouton ou quoi que ce soit ?

    Merci d'avance
    Rémi

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    1) Quel évènement de ta UserForm as-tu utilisé pour lancer ta boucle de lecture
    2) comment et par quoi la lances-tu "toutes les secondes"

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Par défaut
    Pour le moment j'utilise un clic sur un bouton, lorsque j'ai essayé de mettre l'appel de la procédure dans l'initialisation de la form (UserForm_Initialize) elle ne s'est jamais affichée, ce qui me parait normal en y réfléchissant puisque la boucle infinie prend le relais sur l'initialisation qui ne se termine jamais à moins qu'on sorte de la boucle infinie mais dans ce cas ça n'a plus d'utilité puisqu'on à aucun "retour" en direct...

    Ensuite pour ce qui est de la boucle, j'utilise un while avec une condition lue dans un fichier pour sortir lorsque l'autre programme indique qu'il a terminé... Et pour vérifier le fichier toutes les secondes je met "Now" dans une variable et à chaque passage dans la boucle je teste si le moment présent est supérieur de une seconde ou plus par rapport à la valeur présente dans la variable...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
        Dim S As Integer
        While fini = False
            If Second(Now) > S Or Second(Now) = 0 Then
     
                nbEtapes = LireNbEtapes
                etapeEnCours = LireEtapeEnCours
                fini = LireTerminer
     
                TextBox1.SetFocus
                TextBox1.Text = LireRetour
                TextBox1.SelStart = Len(TextBox1.Text)
     
                S = Second(Now)
     
            End If
            DoEvents
        Wend

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    Utilise plutôt l'évènement Userform_Activate.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Par défaut
    Ouiii ! Merci !

    J'ai même pas pensé que cet évènement pouvait être levé après Initialize !

    Ca marche impec merci !

  6. #6
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    Je viens de jeter un coup d'oeil sur ta boucle (celle pour afficher toutes les secondes)
    Laisse ton appli tourner 5 minutes au moins, dans rien toucher, et écoute le ventilateur de refroidissement de ton processeur ... Il ne s'énerve pas, avec cette méthode ? (si l'autre programme met du temps à terminer; bien sûr)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 27/06/2011, 15h56
  2. Réponses: 5
    Dernier message: 25/09/2009, 09h08
  3. Réponses: 0
    Dernier message: 11/09/2009, 18h25
  4. Réponses: 3
    Dernier message: 15/04/2009, 07h30
  5. Affichage d'une image après insertion dans une base
    Par leloup84 dans le forum Langage
    Réponses: 9
    Dernier message: 24/01/2006, 16h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo