Comment faire une pause mais que excel reste actif?

Résolu
louvierseb Messages postés 63 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 15 juillet 2009 - 31 juil. 2008 à 17:57
louvierseb Messages postés 63 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 15 juillet 2009 - 1 août 2008 à 14:01
Bonjour,
voici mon code
Sub bConnection()
a = UserformInterface.bsymbole1.Text
Workbooks("Action1.xls").Sheets("Input").Range("B3") = a
x
a = Workbooks("Action1.xls").Sheets("Input").Range("B10")
UserformInterface.bprix1.Text = a

Seulement la valeur de la cellule excel B10 cest       =RTD("Tf.RtdSvr",,"Q",B3,"LAST")
en fait en entrant un symbole dans B3 ca ecrit la valeur du symbole dans B10 et le userform me  renvoie cette valeur
le seul probleme cest qu il y a un temps avant de recuperer la valeur pour qu il laffiche dans B10
le temps est celui quil faut pour quil la prenne du serveur Tf.RtdSvr
ce quil faut:
cest pouvoir mettre une pause a la place de la croix rouge mais que ca ne bloque pas excel daller chercher la valeur
en fait si a la place cette  histoire de serveur, javais dans B10 une formule calculee a partir de B3 et bien si il a pas eu le temps de calculer il bug
autrement dit il faut faire une pause dans le code mais pas dans excel
merci a tous

9 réponses

us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
1 août 2008 à 11:05
Bonjour,

"DoEvents" semble bien la solution. A priori, je mettrais DoEvents dans une boucle qui testerait si le contenu de B10 a changé..

=

En codage, quelque chose comme ça :

Sub es()



' Retient valeur du départ
Vini = Workbooks("Action1.xls").Sheets("Input").Range("B10")



' Ton truc
a = UserformInterface.bsymbole1.Text
Workbooks("Action1.xls").Sheets("Input").Range("B3") = a



' LA boucle d'attente
Do
    DoEvents
    a = Workbooks("Action1.xls").Sheets("Input").Range("B10")
Loop Until Vini <> a



' Renvoi
UserformInterface.bprix1.Text = a



End Sub


=

(Evidemment, je ne peux pas le tester...)

Amicalement,
Us.
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
31 juil. 2008 à 18:01
salut,

le code qui est après la croix rouge, tu pourrais peut-être le mettre dans une autre procédure.
Et à la place de la croix, tu fais un OnTime :
Application.OnTime Now + TimeValue("00:00:05"), "La_Nouvelle_Procedure"

A tester, mais sans garanti

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
0
louvierseb Messages postés 63 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 15 juillet 2009
31 juil. 2008 à 18:02
oui mais en fait je dois le garder dans la meme procedure pour des problemes par la suite...
merci quand meme
une autre idee?
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
31 juil. 2008 à 18:05
regarde l'API Sleep
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Mais je crains qu'Excel soit figé !

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
0

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

Posez votre question
louvierseb Messages postés 63 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 15 juillet 2009
31 juil. 2008 à 18:13
oui fige, bel et bien fige....
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
31 juil. 2008 à 18:16
Donc à part ma première proposition, je ne vois pas, désolé.
Qu'est ce qui te bloque sur le fait de faire 2 procédures ?
Si c'est pour récupérer des valeurs, places la déclaration de tes variables dans un module, de portée public

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
0
louvierseb Messages postés 63 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 15 juillet 2009
31 juil. 2008 à 18:34
meme ta premiere idee laisse cette page excel figee
je cherche je cherche...
il faudrait faire un bouton recuperation des donnees
et un autre calcul
et la ca marcherai
je pense....
qui q une qutre idee???
merciii
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
1 août 2008 à 07:59
salut,

et un bon vieux doevents ne convient pas?
voire le cumul de doevents et de sleep (petite valeur, genre 20ms) en boucle 1 à 50

<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
0
louvierseb Messages postés 63 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 15 juillet 2009
1 août 2008 à 14:01
lol merci
et moi qui avait palier ce probleme avec un on error goto msg
msg:
x=msgbox("vous devez attendre un moment  le temps que le calcul se fasse")

merci! les gars
0
Rejoignez-nous