begin process at 2012 02 12 10:54:53
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Trucs & Astuces

 > COMPTE À REBOUR LE PLUS SIMPLIFIER POSSIBLE

COMPTE À REBOUR LE PLUS SIMPLIFIER POSSIBLE


 Information sur la source

Note :
5,17 / 10 - par 6 personnes
5,17 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Trucs & Astuces Niveau :Débutant Date de création :31/05/2005 Vu :5 956

Auteur : till2

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (27)
Ajouter un commentaire et/ou une note


 Description

je suis trés peu expérimenté et j'ai passé 3 heures a chercher un compte a rebour sur le site et en effet j'en est trouvés, cependant je ne comprenais pas tout dans les programmes proposés , j'ai donc essayé de faire le miens et je voudrais entendre vos critiques car il me parait un peu trop simple pour concurencer les autres mais bon, apparament il fonctionne très bien ! (compte a rebour de 10 a 0 )

Source

  • Private Sub Commande4_Click()
  • a = 10
  • Texte13.Value = a
  • For i = 0 To 10
  • DoEvents
  • timer1 = timer + 1
  • Do While timer1 > timer
  • Texte13.Value = a
  • Loop
  • a = a - 1
  • Next
  • End Sub
Private Sub Commande4_Click()

a = 10
Texte13.Value = a
For i = 0 To 10

DoEvents


timer1 = timer + 1

Do While timer1 > timer

Texte13.Value = a

 
Loop

a = a - 1

Next




End Sub



 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) EXPORTER LES IMAGES DE WORD ET D' EXCEL par Le Pivert
Source avec Zip Source avec une capture JEUX DE VERITÉ ET DE FIDELITÉ par billatosco
Source avec Zip IMAGELOARDER par vkitumaini
Source avec Zip Source avec une capture Source .NET (Dotnet) CREER UN CALENDRIER DE POCHE par Le Pivert
Source avec Zip RECHERCHE D'UN ENREGISTREMENT DANS UNE DATATABLE ET POSITION... par erdna

Commentaires et avis

Commentaire de Ben2998 le 31/05/2005 00:33:20

Je sais pas pour toi mais je trouves qu'un simple Timer pourrais faire l'affaire:

Timer1:
Enabled=False
Interval=1000

Code:
'---------------------
Option Explicit
Dim a As Integer
Private Sub Command1_Click()
Timer1.Enabled = True
a = 10
End Sub
'------------------------------
Private Sub Timer1_Timer()
a = a - 1
Label1.Caption = a
If a = 0 Then
    MsgBox "Timer écoulé"
    Timer1.Enabled = False
End If
End Sub
'-----------------------------

Je sais pas pour toi mais moi j'aimes cette manière. Si la tienne t'aides et que tu la préfère tant mieux mais moi je suis paresseux... :P:P:P ;)

Commentaire de ScSami le 31/05/2005 02:59:23

Ben a raison... De plus, ton code n'est pas très correcte :

Private Sub Commande4_Click()

'Déclare les variables locales
Dim varNombreDeSecondes As Integer  'Secondes du compte à rebours
Dim varTempsDeDepart As Long        'Temps de départ
Dim varTempsDarrivee As Long        'Temps d'arrivée

'Initialise la valeur des variables
varNombreDeSecondes = 10  '10 secondes pour le compte à rebours
varTempsDeDepart = Timer  'Timer => Temps actuel en secondes
varTempsDarrivee = varTempsDeDepart + varNombreDeSecondes

'Affiche le résultat pour la 1ère fois
' TempsFinal - Temps Actuel = secondes restantes!
Texte13.Value = varTempsDarrivee - Timer

'Fait Tant que (TempsActuel < varTempsDarrivee)
Do While Timer < varTempsDarrivee
  Texte13.Value = varTempsDarrivee - Timer
  DoEvents  'Permet à Windows de faire autre
            'chose durant un cours instant
Loop  'Retourne à "Do" [Recommance la boucle]
'On ressort donc de la boucle si le temps actuel
' est égale ou supérieur aux temps de fin
' précédemment calculé!

'Affiche le résultat pour la dernière fois
Texte13.Value = varTempsDarrivee - Timer

End Sub


Si t'as d'autres questions, on est à ta disposition!

Bon début, persévère :-)

Enjoy

Commentaire de till2 le 31/05/2005 10:10:37

Ba tout dabor merci pour vos propositions.
Le probleme c'est que je n'arive pas a comprendre ce qu'est un label ( j'arrive pas a le déclarer et je ne sais meme pas a quoi ca sert et idem pour "l'interval" je n'ai jamais réussi a me servir d'interval pour compter en seconde. donc quand je tape ca : Label1.Caption ca me met une erreur.Et derniere petite question ...mon compte a rebour fonctionne mais comme mon interval est de 1 (timer1 = timer + 1 ) mon compte a rebour devré allé très vite alor ke au contraire ce dernier est presque en seconde...

Commentaire de Ben2998 le 31/05/2005 14:27:39

Pour le label, c'est une étiquette de texte, dans les nouveau Visual Basic .net, la fonction .caption est remplacé par .text

Pour l'interval, c'est comme un métronome, à chaque x temps il agit, l'intervale sert à définir ce temps. dans un interval, la variable est en miliseconde alors si tu veux faire une seconde il faut l'ajuster à 1000...

J'espère t'avoir aidé ;)

Ben2998

Commentaire de till2 le 31/05/2005 16:18:11

franchement merci beaucoup ! j'aurais continuer a chercher ces objets pendant des semaines si je n'avais pas eu cette précision. Mon application est sur vba dans access donc voila.je me pose donc la question suivante : est ce que je peux me servir des applications que vous m'avez proposées ou faut t il tout mofifier pour que ca marche sous vba. Mais bon, ca fonctionne avec mon code, mais j'ai comme l'impression d'avoir fait du bricolage !  

Commentaire de ScSami le 01/06/2005 00:49:01

Alors déjà, mon code est un peu moins du "bricolage" que le tien!!! Alors, utilise-le!

Ma solution, oui, tu peux l'utiliser sans autre dans VBA, celle de Ben, non(et oui à la fois)... En effet, celle de Ben utilise un "Controle" "Timer" (attension à ne pas confondre avec l'instruction Timer que j'utilise!!!). Or, le VBA n'a pas, par défaut, ce controle. Mais les controles, tu peux en ajouter sur ton ordinateur... Le controle ActiveX Timer est livré avec ceux par défaut du Visual BASIC (version complète)... Donc, si tu as déjà un programme VB installé sur ta machine, y'a des chances que tu ais ce controle (qui sont sous la forme de fichier d'extension .OXC). Mais si tu veux utiliser ton code VBA sur d'autres machines que la tienne (portabilité), il faudra aussi livrer le .OCX du Timer (même si, quelque part, vu que tu n'as pas acheté le VB, tu n'en as pas le droit... ;-).

Alors, en effet, un des nombreux avantages du Controle Timer face à l'instruction Timer, c'est que le controle, lui, fonctionne en millisecondes alors que Timer fonctionne en secondes. D'où l'explication que "Timer = Timer + 1" donne bien 1 seconde!!! Donc, tout fonctionne parfaitement, rassure-toi ;-)

En ce qui concerne Label, ben c'est aussi un control qu'il faut placer sur ta feuille... Ensuite, si c'est le premier, ce sera Label1.text... Mais tu peux renommer les controles comme tu veux en affichant la fenêtre des propriétés (c.f. clique droit ou menus...).

En espèrant également t'avoir apporté de nouvelles lumières...

Enjoy

Commentaire de till2 le 01/06/2005 00:59:12

Ba c'est parfait...Merci beaucoup.Je vais travailler tout ça.

Commentaire de yoman64 le 01/06/2005 06:20:07

Encore plus simple et plus propre:

Dim Stoptime As Long
Dim Startime As Long
Dim Compte As Integer

Compte = 10 ' Indiqué la duré du timer
Startime = Timer
Stoptime = Startime + Compte


While Stoptime > Timer
    'afficher ou le compte est rendu
    Texte13.Text = Format(Compte - (Timer - Startime), "00")
    DoEvents
Wend

Voila


@++
Que la prog soit avec vous ;-)

Commentaire de yoman64 le 01/06/2005 06:25:15

Oups désolé c'est presque la meme chose que ScSami  lol , j'avais juste pas remarquer que son code est simple a cause qu'il y a trop de commentaire :-P , Bah dans mon code , avec format , l'affichage est plus propre :-)

Commentaire de ScSami le 01/06/2005 14:19:52

Grrr... Que veux-tu Man, on s'refait pas!!! J'aime tartiner à outrance... j'y peux rien... c'est un peu comme Sega... c'est plus fort que moi!!! Pi franchement, avec mon avatar, tout le monde sait bien que je suis un peu schizo ;-)

Non mais clair que ton code est plus propre... mais j'essayais juste de reprendre (avec bcp de difficultés je dois bien avouer!!! la fatigue?) celui de Till...

Enjoy...
et que le punk soit aussi avec vous ;-)

Commentaire de didyman le 01/06/2005 15:36:30

salut... ya juste un truc que je comprend pas bien (et qu'il mon pas appris a l'école!!! :P)

DoEvents  'Permet à Windows de faire autre
            'chose durant un cours instant

pourquoi faut t'il laisser windows faire ses truc pendant un instant?  sa ne ralenti pas notre éxécution si on fait sa?

Commentaire de sosodef88 le 01/06/2005 15:56:07

vaut mieux utiliser un thread qu'un timer sinon pour des durées comme une heure il y a un décalage de quelques seconde ...

Commentaire de ScSami le 01/06/2005 16:29:52

En VB6, y'a pas de "thread" si je ne m'abuse...

DoEvent permet de redonner la main à Windows pour qu'il fasse un tour de piste de ses applis (multi-tâches oblige!).

Ceci évite de figer ton prog et le système si tu es dans une boucle de longue durée... Et donc, ça permet également à l'utilisateur de pouvoir les annuler (en lui permettant donc de gérer les événements)...

Mais c'est sur que lorsque Windows est entrain de faire autre chose, ben il bosse pas sur ton prog... Donc, oui, quelque part, ça ralenti ton prog. A n'utiliser donc que pour des opérations longues!

Ai-je été clair ??? :-)
Au faut-il un exemple concret (en VB6) ?

Commentaire de sosodef88 le 01/06/2005 16:50:35

Declare Function CreateThread Lib "kernel32" Alias "CreateThread" (lpThreadAttributes As SECURITY_ATTRIBUTES, ByVal dwStackSize As Long, lpStartAddress As Long, lpParameter As Any, ByVal dwCreationFlags As Long, lpThreadId As Long) As Long

==> sert a créé des thread.... ai je été clair ? :)

Commentaire de yoman64 le 01/06/2005 17:16:37

Lol oui mais il me semble que vb a de la dificulté a gerer les thread , il devient vite instable ... Peut-etre que je me trompe ... a vous de me le dire :)

Commentaire de BruNews le 01/06/2005 17:17:11 administrateur CS

On ne crée pas de thread en VB, c'est plantage à tout coup.

Commentaire de Alain Proviste le 01/06/2005 18:29:02 administrateur CS

brunews tu ne crois pas aux miracles ?

Commentaire de sosodef88 le 01/06/2005 18:30:16

ha bon ? je ne sais pas j'ai pas tester mais il me semble qu'on peut créé des thread meme en vb

Commentaire de yoman64 le 01/06/2005 18:40:33

Si BruNews le dis , sa doit etre vrai :)

Commentaire de BruNews le 01/06/2005 18:45:48 administrateur CS

La seule incertitude est sur le moment du plantage, peut varier entre 2 tests du même prog, dépendra seulement du fait que VB ira écrire sur la pile du thread (et donc corruption) car n'a aucune info sur le thread créé.

Commentaire de Alain Proviste le 01/06/2005 22:27:17 administrateur CS

(et donc il faut croire au miracle : que vb aille ecrire ailleurs - les chances de ne pas planter diminuent avec le temps)

Commentaire de Ben2998 le 02/06/2005 02:42:39

Alors, j'ai fait mon travail et félécitation à vous autres ;). L'art d'enseigner sans être irrespectueux. :D Je laisse ce message aller et bravo encore!

Commentaire de joebarteamv le 03/06/2005 02:34:37

Bonjour a tous, ton code ou vos codes que ce soit de la maniere de faire,ne marche pas dans l'ensemble! et oui et pk? car vous ne gerez pas le cas ou le systeme passe à minuit! car ta réference a timer ne marche plus si l'on fait partir ton decompte à 23h50et 55secondes car timer va repasser à une valeur de 0 alors qu'elle ect chargée au debut a 86395 secondes!!! pour ce la moi j'utilise cette methode
La ce un exemple d'attendre 10secondes:
static Bfirst as boolean
dim t as long
static TopTempoDebut as long

If Not Bfirst Then
    Bfirst = True
    TopTempoDebut = Timer
End If
While t < 10 '10secondes ce sont ecoulés a la sortie
    t = Timer - TopTempoDebut + 0.01
    If t < 0 Then
        t = t + 86400
        TopTempoDebut = TopTempoDebut - 86400
    End If
    DoEvents
Wend

Commentaire de didyman le 03/06/2005 02:54:57

cest vrai... personne n'y avais penser a minuit!!!

Bravo joebarteamv

Commentaire de till2 le 03/06/2005 10:36:12

bien vu joebarteamv ! Avec l'erreur que tu a découvert je suis passé de 9/10 à 6/10...(aucune importance biensur ! ) Mais je suis content de voir qu'un code aussi simple peut s'améliorer a l'infini...

Commentaire de nico1610 le 09/06/2005 15:58:55

un problémé avec tous ca : quand le prgm bouffe trops de GHz le timer ralentis !!

Commentaire de thibboss le 07/08/2005 15:26:07

Pas mal ! Moi je dis que la note ne veut rien dire ! Puisque tu est un débutant , c'est normal que t'est 6 ! Enfin !

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,917 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales