Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/10/2011, 15h34   #1
Invité de passage
 
Inscription : septembre 2011
Messages : 5
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 5
Points : 0
Points : 0
Par défaut Temporisation d'un code

bonjour

comment faire en sorte pour que la tempo suivante soit activée lorsque je viens sur ma feuille nommée "RESEAU" et qu'elle soit desactivée lorsque je quitte cette feuille ? car à chaque fois que je quitte et me rend sur ma feuille plusieurs instances de temporisation se mettent en route


Code :
1
2
3
4
5
Public Sub TEMPO1()
    Sheets("RESEAU").Range("B21:C100").Sort Key1:=Sheets("RESEAU").Range("B21:C100"), Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    Application.OnTime Now + TimeValue("00:00:20"), "TEMPO1"
End Sub
Merci
cetialpha10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/10/2011, 16h29   #2
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,
Je ne comprends pas bien ce que tu veux faire... Dans un module standard, mets :

Code :
1
2
3
4
5
Public Temps As Date
Public Sub TEMPO1()
    Temps = Now + TimeValue("00:00:20")
    Application.OnTime Now + TimeValue("00:00:20"), "TEMPO1"
End Sub
Dans le module de la feuille, mets :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Worksheet_Activate()
    Sheets("RESEAU").Range("B21:C100").Sort Key1:=Sheets("RESEAU").Range("B21:C100"), Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    Temps = Now + TimeValue("00:00:20")
    Application.OnTime Temps, "TEMPO1"
End Sub
 
Private Sub Worksheet_Deactivate()
    Temps = Now + TimeValue("00:00:20")
    On Error Resume Next
    Application.OnTime Temps, "TEMPO1", , False
    On Error GoTo 0
End Sub
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/10/2011, 17h45   #3
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
Bonsoir,

A vérifier mais sauf erreur il faut utiliser la même heure pour arrêter une macro que celle utilisé lors du lancement ...

et donc modifier le code à daniel ..

en supprimant la ligne 9 Temps = Now + TimeValue("00:00:20") du desactivate.
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/10/2011, 17h47   #4
Invité de passage
 
Inscription : septembre 2011
Messages : 5
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 5
Points : 0
Points : 0
Merci pour cette réponse qui me convient bien , toutefois comment puis je retirer de ce code l'instruction de tri qui s'opère sur les colonnes ?

Merci
cetialpha10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/10/2011, 17h49   #5
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
Citation:
Envoyé par cetialpha10 Voir le message
Merci pour cette réponse qui me convient bien , toutefois comment puis je retirer de ce code l'instruction de tri qui s'opère sur les colonnes ?

Merci
c'est à dire ? tu ne veux plus que ce tri soit exécuté toutes les 20 secondes ?
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/10/2011, 18h29   #6
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
@ bbil :

Tu as parfaitement raison et modifier la ligne 4 de TEMP01 :

Code :
Application.OnTime Temps, "TEMPO1"
au lieu de

Code :
Application.OnTime Now + TimeValue("00:00:20"), "TEMPO1"
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/10/2011, 19h04   #7
Invité de passage
 
Inscription : septembre 2011
Messages : 5
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 5
Points : 0
Points : 0
en fait je remplit la colonne de ma feuille RESEAU par selection de cellule constituant ma base de données à partir d'une feuille2 j'ai le code qui le fait tres bien , ensuite sur ma feuille RESEAU si manuellement je decide d'effacer le contenu d'une ou plusieurs cellules , alors la plage de cellules se trouvant sous la ou les cellules liberées doivent remonter et puis lorsque je continue de completer ma colonne de ma feuille reseau la derniere cellule selectionnée devra toujours etre la dernière de la liste , ce code remonte bien les plages de cellules lorsqu'une cellule est liberée , mais parfois procede à un arrangement par ordre alphabetique de la colonne ce que je ne souhaite pas
cetialpha10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/10/2011, 19h57   #8
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
A quoi sert la temporisation ?
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/10/2011, 20h04   #9
Invité de passage
 
Inscription : septembre 2011
Messages : 5
Détails du profil
Informations forums :
Inscription : septembre 2011
Messages : 5
Points : 0
Points : 0
la temporisation ordonne l'execution du code à un delai fixé ( ici toutes les 20s)

il est possible que je me trompe et qu'il y a plus simple
cetialpha10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/10/2011, 20h16   #10
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Sinon, la macro suivante, à mettre dans le module de la feuille RESEAU ne se déclenche qu'en cas d'effacement de cellule :

Code :
1
2
3
4
5
6
7
8
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column > 2 Then Exit Sub
    If Application.CountA(Target) = 0 Then
        Application.EnableEvents = False
        Range([B21], Cells(Rows.Count, 3).End(xlUp)).Sort Range("B21"), Order1:=xlAscending, Header:=xlGuess
        Application.EnableEvents = True
    End If
End Sub
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h51.


 
 
 
 
Partenaires

Hébergement Web