Pause

Résolu
Fabian26 Messages postés 28 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 18 juin 2008 - 9 juin 2008 à 14:51
Fabian26 Messages postés 28 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 18 juin 2008 - 9 juin 2008 à 17:24
Bonjour,


Je m'appelle Fabian et je suis étudiant.

Je ne suis pas tres dioué en informatique.

Je dois faire un programme qui permet de réceptionner des données
venant d'une liaison RS232. D'afficher ses données dans un tableau
Excel pour faire un graph.

dans mon prog je dois pouvoir envoyer les données dans excel tout les x temps (ce temps doit etre rentré par l'utilisateur)

Le prob est que je n'arriva pas gérer ce temps.

Je ne sais pas quelle fonction utilisée ni ou je dois la placer dans
mon programme. de plus le temps de pause que je dois effectué entre
l'acquisition de deux données consécutives doit etre une variable
rentré par l'utilisateur.


Aider moi svp !!!

Fab's
A voir également:

17 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
9 juin 2008 à 17:07
tout est  possible

pour ton comm précédant :
For i = 1 To 100
        Cells(i, 2).Value = val
        For j = 1 To 60
            Sleep 1000
        Next j
Next i

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
9 juin 2008 à 14:57
Salut,

utilise un controle Timer. A toi de gérer la conversion (secondes ou minutes => miliseconds pour l'interval)

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
0
Fabian26 Messages postés 28 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 18 juin 2008
9 juin 2008 à 15:19
Je viens de trouver la fonction :

DeclareSub Sleep Lib "kernel32" (ByVal dwMilliseconds AsLong)

    Exemple d'utilisation :
    MsgBox Time

    Sleep 10000
    MsgBox Time


Est)ce que je pourrais emloyer cette fonction pour faire une pause
entre l'envoi de 2 données dans deux cellules excel succesives?

J'ai essayé mais je ne sais pas ou placer la ligne DeclareSub Sleep Lib "kernel32" (ByVal dwMilliseconds AsLong) ???

Ensuite il ne suffit plus qu'a faire une boucla avec dedans une, ligne
decommande permettant d'exporter les données sous Excel et une pause du
type sleep x ???

Fab's
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
9 juin 2008 à 15:26
Salut,

tout en haut de ton module. voici un exemple de structure de module

Option explicit

'declaration des fonctions API
DeclareSub Sleep Lib "kernel32" (ByVal dwMilliseconds AsLong)

'declaration des variables
Dim mavariable as string
------------------------------------------------------------------------------
Sub MaMacro()
       
blablabla

En Sub

A+
0

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

Posez votre question
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
9 juin 2008 à 15:28
une déclaration d'API se place dans les déclarations, donc tout en haut dans ton Module de code.

Ensuite, pour l'utiliser :

dim i as integer

for i = 1 to 100
    cells(i, 1).Value = "ta donnée " & i
    sleep 2000
next i

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
0
Fabian26 Messages postés 28 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 18 juin 2008
9 juin 2008 à 15:42
Quand je le place la :


    Private Sub Command1_Click()


    Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)


    Dim...


Quand je compile le prog il me met comme erreur que seuls des
commentaire peuvent apparaitre après End Sub,  End Function ou End
Property


...

Fab's
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
9 juin 2008 à 15:51
une déclaration d'API se place dans les déclarations, donc tout en haut dans ton Module de code.



je précise, en dehors de tes évènements.
Bref, c'est la première ligne

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
0
Fabian26 Messages postés 28 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 18 juin 2008
9 juin 2008 à 15:56
Ouais ok

Mais si je le place au dessus il me mais aussi une erreur : Des
constntes, chaines de longueur fixe, tableaux, types définis par
l'utilisateur et instruction Declare ne sont pas autorisés comme menbre
public de modules d'objet.


Désolé d'insister :s mais je ne suis vraiment pas doué en vb et il faut que mon prog fonctionne.

Fab's
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
9 juin 2008 à 15:59
place Private devant (sans ce mot clé, c'est Public) :

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
0
Fabian26 Messages postés 28 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 18 juin 2008
9 juin 2008 à 16:06
Ca marche !


Un grand MERCI !!!

Fab's
0
Fabian26 Messages postés 28 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 18 juin 2008
9 juin 2008 à 16:16
Encore un e chose, est-il possible a la place de faire des pause en milliseconde de les faire en seconde???

Par exemple en changeant l'instruction ci dessous:

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)


en :


Private Declare Sub Sleep Lib "kernel32" (ByVal dwSeconds As Long)


?


Parce que en fait je dois faire des poses de plusieurs minutes voir dizaine de minutes dans certains cas.

J'ai essayer de transformé moi meme les millisecondes en minutes mais il m'indique un dépassage de capacité.

Fab's
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
9 juin 2008 à 16:22
c'est un paramètre non modifiable.

Si tu demandes le temps en secondes, dans un textbox :

sleep 1000 * clng(Text1.text)

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
0
Fabian26 Messages postés 28 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 18 juin 2008
9 juin 2008 à 16:28
J'ai le meme problème de dépacement de capacié.

Mais pas grave je vais chercher


Merci d'y avoir réfléchi  ;)

Fab's
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
9 juin 2008 à 16:33
Bizarre, me semblait qu'en tant que type Long, on pouvait y aller ..

Tente avec une boucle, genre si c'est tout le temps en minutes :

For i = 1 to val(Text1.Text)
    Sleep 60000
Next i

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
0
Fabian26 Messages postés 28 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 18 juin 2008
9 juin 2008 à 16:45
Ca ne marche pas, il n'indique aucune erreur mais rien ne s'affiche dans mon tableau.



Est ce qu'il est possible de mettre plusieurs boucle For les unes dans
les autres? Afin de poiuvoir transformer les millisecondes en secondes?



Exemple:



For i = 1 To 100


        Cells(i, 2).Value = val


        For i = 1 To 60


        Sleep 1000


        Next i


Next i

Fab's
0
Fabian26 Messages postés 28 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 18 juin 2008
9 juin 2008 à 17:05
Ou autre chose toujours avec une boucle comme ceci par exemple:


    For i = 1 To 5

        Cells(i, 2).Value = val

        Do While t0 > 0

        Sleep 1000

        compteur = t0 - 1

        Loop

    Next i


C'est possible???

Fab's
0
Fabian26 Messages postés 28 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 18 juin 2008
9 juin 2008 à 17:24
Ca fonctionne.


Un grand Merci pour ces explications

Fab's
0
Rejoignez-nous