Comment placer un timer dans une macors EXCEL

Résolu
VB_PtitCat Messages postés 197 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 13 mai 2009 - 5 juin 2007 à 10:34
VB_PtitCat Messages postés 197 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 13 mai 2009 - 5 juin 2007 à 12:03
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

drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
5 juin 2007 à 10:37
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>
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
5 juin 2007 à 10:47
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
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
5 juin 2007 à 11:12
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
3
VB_PtitCat Messages postés 197 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 13 mai 2009
5 juin 2007 à 11:30
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
3

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

Posez votre question
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
5 juin 2007 à 11:34
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
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
5 juin 2007 à 11:50
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
3
VB_PtitCat Messages postés 197 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 13 mai 2009
5 juin 2007 à 10:40
MRC

PtitCat
0
VB_PtitCat Messages postés 197 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 13 mai 2009
5 juin 2007 à 10:52
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
0
VB_PtitCat Messages postés 197 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 13 mai 2009
5 juin 2007 à 11:36
Oki Oki
je vais essayé, mrc

PtitCat
0
VB_PtitCat Messages postés 197 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 13 mai 2009
5 juin 2007 à 11:47
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
0
VB_PtitCat Messages postés 197 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 13 mai 2009
5 juin 2007 à 12:03
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
0
Rejoignez-nous