Detecter changement contenu cellule - VB/VBA/VBS - Programmation
Marsh Posté le 18-05-2009 à 15:35:37
ReplyMarsh Posté le 18-05-2009 à 21:23:50
Paul Hood a écrit : procédure à suivre .... |
Sauf que la macro s'executant dans le classeur des macros comp, la fonction Worksheet_Change ne fonctionne plus.
Puisqu'il faut que je lui dise d'aller voir dans telle feuille de tel classeur, mais comment ?
Marsh Posté le 19-05-2009 à 11:41:22
ReplyMarsh Posté le 19-05-2009 à 12:16:35
Ca va pas t'aider pour ton problème, mais pour tes futurs développements :
l0r3n1 a écrit : |
Ce n'est qu'un début d'optimisation du code mais c'est quand même plus propre. Essaie d'éviter au maximum le recours aux "goto" et aux "exit sub", surtout quand tu as facilement moyen de faire autrement, ton code n'en sera que plus lisible.
C'est un conseil de vieux con , mais c'est néanmoins ce que n'importe quel bon développeur te dira
Marsh Posté le 19-05-2009 à 20:02:49
Paul Hood a écrit : Tu veux lui dire comment ? par saisie ou en automatique ? |
En automatique, puisque son fonctionnement doit être transparent pour l'utilisateur.
Marsh Posté le 17-05-2009 à 21:41:06
Bonjour,
Je souhaiterai detecter que le contenu d'une cellule à changé sous excel, pour cela, j'utilise ceci :
Private Sub Worksheet_Change(ByVal Target As Range)
col = Target.Column: lig = Target.Row
If col > 7 And col < 23 And lig > 6 And lig < 23 Then GoTo CelOk
If col > 7 And col < 23 And lig > 33 And lig < 50 Then GoTo CelOk
Exit Sub
CelOk:
If Cells(lig, col).Value = "" Or Cells(lig, col).Value = "/ /" Then Exit Sub
nom = Cells(lig, col).Value
a = 0
Do
a = a + 1:
Loop While LCase(Sheets("Liste" ).Cells(a, 3)) <> LCase(Cells(lig, col).Value) And a <> 500
If a = 500 Then Exit Sub
Cells(lig, col) = Sheets("Liste" ).Cells(a, 3)
Cells(lig, col - 5) = Sheets("Liste" ).Cells(a, 2)
Cells(lig, col + 16) = Sheets("Liste" ).Cells(a, 4)
End Sub
Detection d'une plage de cellule précise, et vérification de la cellule par rapport à une liste d'entrée, afin de completer en auto la cellule gauche et droite de celle à controler.
Mon soucis est que cette macro figure directement dans le classeur excel, et je souhaiterai la ranger dans le classeur de macro complémentaire.
Comment faire, merci.