Temporiser un code VBA

rocket4 Messages postés 47 Date d'inscription lundi 18 décembre 2000 Statut Membre Dernière intervention 31 janvier 2012 - 29 sept. 2011 à 19:53
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 30 sept. 2011 à 08:13
Bonsoir

le code suivant s'execute via un double click , est il possible d'automatiser l'execution de dernier toutes les 25 secondes en integrant une tempo ?

le code est le suivant :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Range("B21:C100").Select
Selection.Sort Key1:=Range("B21:C100"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("B21:C100").Select
end sub


Merci pour vos avis sur la question

22 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 230
29 sept. 2011 à 20:08
Bonsoir,

Oui, bien sûr !
En utilisant Applicationj.Ontime


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
rocket4 Messages postés 47 Date d'inscription lundi 18 décembre 2000 Statut Membre Dernière intervention 31 janvier 2012
29 sept. 2011 à 20:22
Merci pour cette réponse , mais comment faire ?
a++
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 230
29 sept. 2011 à 20:27
Comment faire ?
1) tu te retrousses un peu les manches
2) tu ouvres ton aide VBA (sur application.Ontime) et lis, ainsi que l'exemple assortissant les explications.
3) tu tentes (au moins) et
4) tu reviens ici avec ce que tu as tenté, s'il te plait !


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 230
29 sept. 2011 à 20:44
Un indice, quand même :
Soit toto la procédure appelée par Application.Ontime à une heure déterminée.

Dans les instructions de toto elle-même, on peut demander que toto soit exécutée à nouveau à telle autre moment, distant du premier de la duére que l'on choisit (don en utilisant également Application.Ontime dans la procédure toto, déjà appelée par Application.Ontime.
Dur ?
et ainsi ... ce sera à l'infini, puisque chaque fois, toto appellera toto au bout d'un certain temps

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0

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

Posez votre question
rocket4 Messages postés 47 Date d'inscription lundi 18 décembre 2000 Statut Membre Dernière intervention 31 janvier 2012
29 sept. 2011 à 21:01
voialce que j'ai fait :

Application.OnTime Now + TimeValue("00:00:25")
Range("B21:C100").Select
Selection.Sort Key1:=Range("B21:C100"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("B21:C100").Select
end sub


est ce correct ?
a++
0
rocket4 Messages postés 47 Date d'inscription lundi 18 décembre 2000 Statut Membre Dernière intervention 31 janvier 2012
29 sept. 2011 à 21:02
le souci est que je ne vois pas comment integrer une durée periodique d'execution de 25 seconde
a++
0
rocket4 Messages postés 47 Date d'inscription lundi 18 décembre 2000 Statut Membre Dernière intervention 31 janvier 2012
29 sept. 2011 à 21:05
bon merci quand meme , mes excuses pour vous avoir solicité

a++
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 230
29 sept. 2011 à 21:06
Tu n'as manifestement pas lu ton aide VBA, comme je te le demandais, puisque l'on ne voit pas dans ton code quelle procédure est appelée au bout de 25 secondes !
Veux-tu bien s'il te plait commencer par la lire, cette aide VBA ?


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
rocket4 Messages postés 47 Date d'inscription lundi 18 décembre 2000 Statut Membre Dernière intervention 31 janvier 2012
29 sept. 2011 à 21:15
voici :
Application.OnTime Now + TimeValue("00:00:15"), "TEMPO"
Range("B21:C100").Select
Selection.Sort Key1:=Range("B21:C100"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("B21:C100").Select
end sub


a++
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 230
29 sept. 2011 à 21:16
Allons !

Regarde ce que ferais ceci :
Ouvre un nouveau classeur
mets ceci en code sur Feuil1
Private Sub Worksheet_Activate()
  Application.OnTime Now + TimeValue("00:00:10"), "toto"
End Sub

Ajoute un module et mets-y ceci :
Public Sub toto()
  MsgBox "coucou"
  Application.OnTime Now + TimeValue("00:00:10"), "toto"
End Sub

retourne sur Feuil1 ===>> va sur Feuil2 ===>> reviens sur Feuil1 et regarde ce qui va se passer toutes les 10 secondes. Ne fais rien d'autre que de cliquer ok sur chacun des messages reçus.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
rocket4 Messages postés 47 Date d'inscription lundi 18 décembre 2000 Statut Membre Dernière intervention 31 janvier 2012
29 sept. 2011 à 21:17
ce que je ne sais pas faire s'est réintroduire cette ligne de tempo dans la procedure TEMPO
à noter que je ne suis pas du tout au point en VBA j'ai bien l'aide mais elle serait nettement insuffisante pour effectuer les manip que tu m'a recommandé

a++
0
rocket4 Messages postés 47 Date d'inscription lundi 18 décembre 2000 Statut Membre Dernière intervention 31 janvier 2012
29 sept. 2011 à 21:18
merci pour ton exemple je vais mediter dessus !

a++
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 230
29 sept. 2011 à 21:20
j'ai bien l'aide mais elle serait nettement insuffisante pour effectuer les manip que tu m'a recommandé

Ce n'est pas l'aide, qui est insuffisante. Ce serait plutôt là autre chose
Tu as en tout état de cause un exemple fort clair dans mon message précédent.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
rocket4 Messages postés 47 Date d'inscription lundi 18 décembre 2000 Statut Membre Dernière intervention 31 janvier 2012
29 sept. 2011 à 21:25
oui merci je vais essayer de l'adapter à mon code , j'ai compris le fonctionnement à présent

merci encor

a++
0
rocket4 Messages postés 47 Date d'inscription lundi 18 décembre 2000 Statut Membre Dernière intervention 31 janvier 2012
29 sept. 2011 à 21:33
voila ce que j'ai fait avec tes explications :

sur la partie feuille j'ai placé le code suivant :

Private Sub Worksheet_Activate()
  Application.OnTime Now + TimeValue("00:00:10"), "TEMPO"
End Sub


ensuite j'ai ajouté un module dans lequel j'y ai placé les ligne suivantes

Public Sub TEMPO()
 Range("C6:D17").Select 'plage par exemple où sont tes noms et adresses
Selection.Sort Key1:=Range("C6:D17"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom 'B5 est la cellule où il y a le premier nom
Range("C6:D17").Select
  Application.OnTime Now + TimeValue("00:00:10"), "TEMPO"
End Sub


ca n'a pas l'air de tourner
a++
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 230
29 sept. 2011 à 21:38
Ah oui ?
Je veux bien que tu ne saches pas trop lire l'aide VBA.
Mais tu ne sais pas non plus me lire ?
Pour rappel :
retourne sur Feuil1 ===>> va sur Feuil2 === >> reviens sur Feuil1

Dans l'exemple (ce n'était qu'un exemple) que je t'ai donné, on commence à déclencher en activant Feuil1 (et pour activer, il faut en sortir et y revenir).
Toi, tu déclenches où et comme tu veux, en fonction de tes voeux et de TA stratégie.
Je ne vais quand-même pas TOUT te faire !


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
rocket4 Messages postés 47 Date d'inscription lundi 18 décembre 2000 Statut Membre Dernière intervention 31 janvier 2012
29 sept. 2011 à 21:41
ca marche presque au final !!!! c'est rejouissant , seulement j'ai un effet tempo sur toutes les autres feuilles du classeur , si je souhaite l'excution de ce code uniquement sur ma feuille appelée " alpha" est ce que je peux placer active sheets("alpha") devant range("c6:c17") ?


a++
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 230
29 sept. 2011 à 22:54
est ce que je peux placer active sheets("alpha") devant range("c6:c17") ?

Non, mais sheets("alpha") oui. +++>> sheets("alpha").range("c6:c17")
Il est incroyable que tu en sois encore là !

PS (et pendant que l'on y est) : il est également incroyable que tu en sois encore à fonctionner à coups de select, puis de travail sur la sélection !




____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
rocket4 Messages postés 47 Date d'inscription lundi 18 décembre 2000 Statut Membre Dernière intervention 31 janvier 2012
29 sept. 2011 à 23:01
En tout cas merci j'y suis parvenu !!!!
0
rocket4 Messages postés 47 Date d'inscription lundi 18 décembre 2000 Statut Membre Dernière intervention 31 janvier 2012
29 sept. 2011 à 23:09
tu dis qu'il est incroyable que j'en sois encor là !!!! je n'ai pas tes performances en VB
tu m'accuserai presque de rien y connaitre .... !!!! j'ai vraiment l'impression qu'il faut arriver en connaissant tout ... le vb je l'ai decouvert il y a moins de 20 jours , je n'y passe pas mes journées , j'essaie de l'apprendre , certes je trebuche en avancant !!! te remerciant tout de meme de ta patience , n'a tu point l'impression que tu oublie qu'il existe des gens qui n'y connaissent rien dans ce domaine et qui doivent realiser un projet avec malgré tout ?

à mediter

a++
0