VB_PtitCat
Messages postés197Date d'inscriptionmercredi 30 mai 2007StatutMembreDernière intervention13 mai 2009
-
5 juin 2007 à 10:34
VB_PtitCat
Messages postés197Date d'inscriptionmercredi 30 mai 2007StatutMembreDernière intervention13 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.
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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?
VB_PtitCat
Messages postés197Date d'inscriptionmercredi 30 mai 2007StatutMembreDernière intervention13 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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.
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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
VB_PtitCat
Messages postés197Date d'inscriptionmercredi 30 mai 2007StatutMembreDernière intervention13 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