Comment placer un timer dans une macors EXCEL

Résolu
Signaler
Messages postés
197
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
13 mai 2009
-
Messages postés
197
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
13 mai 2009
-
Bonjour, voilà je dois placer un timer dans un module.
En fait je ne suis même pas sur que c'est d'un timer dont j'ai besoin.


Je dois créer un « timer » qui lance une macros des qu’il y a la case d’un colonne précise qui passe de «» a « 1 » ou de « 0 » a « 1 ».


Si cela n’est pas réalisable, il suffirait que j’en mette un qui ce lance toutes les minute a peu près.


Voilà mrc d’avance de votre aide…




PtitCat

11 réponses

Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
11
Salut alors pour un timer en VBA ceci: http://www.vbfrance.com/recherche.aspx?r=vba+timer&tr=source&dotnet=2

Sinon regerde du côté de l'évènement change() de la feuille.

 Drikce 06 (Nouveau !!! Forum Exclusivement Office Et VBA By Mortalino)

Si la réponse vous convient: Réponse acceptée < body>
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,

Regarde ceci (qui ne passe pas par un Timer)

'Ceci est une variable Public d'un Module a ajouter
'elle represente la memorisation de la cellule
Public M_Valeur As String

Private Sub Workbook_Open()
   'Ceci est executer à l'ouverture du classeur
   'et est a placer dans le code de ThisWorkBook
   'nous allons "espionner" A1 de la feuille Feuil1
   M_Valeur = Worksheets("Feuil1").Range("A1").Value
End Sub<hr />

'Cet événement survient à chaque modification dans la feuille
'et est placer dans la feuille a espionner
'dans l'exemple Feuil1
Private Sub Worksheet_Change(ByVal Target As Range)
   'on verifie que la modification a bien eu lieu
   'sur la celulle souhaitée
   If Replace(Target.Address, "$", vbNullString) = "A1" Then
       'on regarde alors l'ancienne valeur       If (M_Valeur vbNullString And Target.Value "1") Or _       (M_Valeur "0" And Target.Value "1") Then
           'Call TaMacro
           MsgBox ("Appeler macro")
       End If
       'on mémorise la valeur
       M_Valeur = Target.Value
   End If

End Sub<hr />

, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Tu veux dire qu' a chaque modification, tu doit regarder les valeur de toute la colonne???

LEs 65536 valeur????
La macro que je te propose est automatique déjà. Mais que sur une cellule.
Il te suffit de la modifier pour espionner toute la colonne
Est ce réellement les 65536 cellules ou pas?

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
197
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
13 mai 2009

Non non juste 32 ligne lol
je pense faire ça :

Dans ThisWorkBook

Private Sub Workbook_Open()
   Dim M_Valeur As String
   Dim i As Integer
   For i = 2 to 33
   M_Valeur = Worksheets( "Feuil1" ).Range("B"&i).Value
End Sub<hr />
Dans mon module 1 :
'Cet événement survient à chaque modification dans la feuille et est placer dans la feuille à espionner
Private Sub Worksheet_Change(ByVal Target As Range)
   'on verifie que la modification a bien eu lieu sur la celulle souhaitée
   If Replace(Target.Address, "$", vbNullString) = "B"&i Then
       'on regarde alors l'ancienne valeur       If (M_Valeur vbNullString And Target.Value "1" ) Or (M_Valeur = "0" And Target.Value = "1" ) Then
       Call Macros2           
       End If
       'on mémorise la valeur
       M_Valeur = Target.Value
   End If
End Sub

qu'en pense tu ??
PtitCat
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Faux,
Il faut passer par un tableau de M_Valeur.
M_Valeur(1 To 32) As String

Ensuite ATTENTION Si tu déclare M_Valeur à l'intérieur de WorkBook_Open, cette varaible NE SERA PAS accessible depuis Worksheet_Change. Et d'ailleurs ele sera détruite à la sortie de WorkBook_Open. C'est pour cette raison que je passais par une variable Public dans un module.

Ensuite si tu mets Worksheet_Change. Dans un module cela n'a aucun intérêt, relis bien ou je le mettais ce n'était pas du tout la.

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut
Essaie ceci.

Moi je vais regarder pour faire autrement

'Ceci est une variable Public d'un Module a ajouter
'elle represente la memorisation de la cellule
Public M_Valeur(1 To 32) As String

Private Sub Workbook_Open()
   'Ceci est executer à l'ouverture du classeur
   'et est a placer dans le code de ThisWorkBook
   'nous allons "espionner" A1 de la feuille Feuil1
Dim i As Integer
   For i = 1 To 32
       M_Valeur(i) = Worksheets("Feuil1").Range("B" & CStr(i + 1)).Value
   Next
End Sub<hr />

'Cet événement survient à chaque modification dans la feuille
'et est placer dans la feuille a espionner
'dans l'exemple Feuil1
Private Sub Worksheet_Change(ByVal Target As Range)
   'on verifie que la modification a bien eu lieu
   'sur la plage souhaitée (B2:B33)   'Column 2 B
   If (Target.Column = 2) And (Target.Row > 1) And (Target.Row < 34) Then
       'on regarde alors l'ancienne valeur       If (M_Valeur(Target.Row - 1) vbNullString And Target.Value "1") Or _       (M_Valeur(Target.Row - 1) "0" And Target.Value "1") Then
          'Call TaMacro
          MsgBox ("Appeler macro B" & (Target.Row) & " modifié")
       End If
       'on mémorise la valeur
       M_Valeur(Target.Row - 1) = Target.Value
  End If

End Sub<hr />

, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
197
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
13 mai 2009

MRC

PtitCat
Messages postés
197
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
13 mai 2009

En fait ce sont les cellules de toutes la colonne que je doit espionner, de plus ma macros DOIT ce lancer automatiquement si il y a changement d'au moin une valeur de la colonne

PtitCat
Messages postés
197
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
13 mai 2009

Oki Oki
je vais essayé, mrc

PtitCat
Messages postés
197
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
13 mai 2009

Il n'aime pas les "= " :If (M_Valeur vbNullString And Target.Value "1" ) Or (M_Valeur = "0" And Target.Value = "1")  

Y dit :
"Erreur de compilation:
Incompatibilité de type"

PtitCat
Messages postés
197
Date d'inscription
mercredi 30 mai 2007
Statut
Membre
Dernière intervention
13 mai 2009

GG !!
Ca ma l'air d'être beau tous ça !!
J'te remercie mille fois d'avoir perdu autant de temps pour m'aider
Bizz

PtitCat