Arrêt macro VBA

Tidauph0 Messages postés 19 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 17 novembre 2006 - 24 oct. 2006 à 18:07
Tidauph0 Messages postés 19 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 17 novembre 2006 - 27 oct. 2006 à 16:02
Bonjour tout le monde..
Voilà j'ai un problème... J'ai développé un code avec le VB d'Excel pour que mon fichier soit modifiable sur un poste et consultable sur un autre en lecture seule via des Userfrom.

Seulement voilà, pour que le poste client soit à jour je lance la commande "ThisWorkbook.UpdateFromFile". Cette commande marche très bien seulement elle ferme mes userfrom et arrête toutes mes macro du coup plus moyen de la relancer en automatique, comme c'est le cas au lancement du fichier.

Pourriez-vous me donner une manip ou une commande qui ne me ferais pas revenir sur ma feuille Excel mais qui me laisserait mon interface ouverte.
Merci d'avance.<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>

6 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
24 oct. 2006 à 18:50
Salut,

et après avoir lancé ton instruction, en plaçant NomUserForm.Show
Ca ne fonctionne pas ?

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 4
24 oct. 2006 à 20:01
Question redirigée du Bar vers "Visual Basic / Langages dérivés / VBA"...

<hr width="100%" size="2" />Nurgle(Antoine)
0
Tidauph0 Messages postés 19 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 17 novembre 2006
25 oct. 2006 à 09:45
"et après avoir lancé ton instruction, en plaçant NomUserForm.Show
Ca ne fonctionne pas ?"

Salut,
Bah Excel me met une erreur : 
               Feuille déjà affichée ; affichage modal impossible

Et si je la passe non-modal (false), je reviens sur ma feuille Excel et je pense que les macros s'arrêtent parce que le fichier n'est plus mis à jour...

Merci de ta réponse
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
25 oct. 2006 à 19:53
C'est une histoire de visible ou load. La fenêtre UserForm est toujours lancée.


Est ce qu'elle disparait mais revient après ton update ? Si oui, c'est que tu ne peux faire autrement et qu'excel à besoin de neutraliser les actions utilisateurs durant cette opération.


Si elle ne revient pas, c'est qu'à un moment ou un autre, tu l'as rendu invisible (UserForm.Visible = False ou UserForm.Hide).


Sinon, j'ai déjà eu des galères avec les load et show. Me concernant je lance un UserForm comme ceci : UserForm.Show et je l'enlève ainsi : Unload Me
>> jamais eu de problèmes avec ces syntaxes.

Renseigne toi aussi sur l'instruction UpdateFromFile, voir si ce n'est pas elle qui arrête toute exécution de code durant l'updating !

@++





<hr width="100%" size="2" />

  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Tidauph0 Messages postés 19 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 17 novembre 2006
26 oct. 2006 à 01:25
Bah en fait il me semble que ça serait plutôt cette histoire d'arrêt des exécutions qui pose problème.

Je ne suis pas au bureau (normal vu l'heure), mais il me semble que j'ai essayé de décharger l'userform avec hide après la mise à jour et de recharger avec show mais je reste sur le tableau. C'est mon programme VB qui est totalement arreté je pense. Il n'y aurait pas moyen de le relancer automatiquement?

Sinon j'utilise cette fonction pour remettre le pc client à jour périodiquement mais je suis prêt à changer mon fusil d'épaule contre une solution pour commander la mise à jour à partir du pc serveur (pc où le fichier est ouvert en lecture/écriture) par un bouton par éxemple.

Merci et bonne nuit, faut que je soit en forme pour réfléchir à tout ça demain...
0
Tidauph0 Messages postés 19 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 17 novembre 2006
27 oct. 2006 à 16:02
C'est bon j'ai trouvé... Il fallait en fait lancer un timer qui me recharge mon userform avant de lancer la mise à jour (pour les personnes intéressées, si ça ne fonctionne pas essayer d'augmenter les tempos le temps que le fichier ai le temps de se charger...) :

Merci Mortalino pour ton aide...

   Dans un module qui s'appel "Timers" :
Sub ExecutionTimer1()
'code à exécuter à la fin de chaque Interval secondes


    Application.OnTime (Now + TimeSerial(0, 0, 15)), "ThisWorkbook.MAJ"
    ThisWorkbook.UpdateFromFile
       
'code obligatoire
    Application.OnTime (Now + TimeSerial(0, 0, 5)), "ExecutionTimer1"


End Sub

   Dans un userform qui s'appel "Liste" :

Public Sub MAJ()
    Liste.recup_donnée
    Liste.Show
End Sub

   Dans le "ThisWorkBook" :

Private Sub UserForm_Activate()
    Timers.ExecutionTimer1
End Sub
0
Rejoignez-nous