Bonjour à tous ,
Je cherche un code qui me permettra de lancer une macro que si la valeur précédente est différente de la valeur actuelle.
L'événement Worksheet.change permet d'activer la macro une fois que l'une des cellules est activées c-à-d même si la valeur est restée la même (C'est pas ce que je veux).
Il y a un autre évènement qui permet d'activer la macro si la valeur à changer: c'est l'évènement Worksheet.Calculate . On utilise une macro intermédiaire qui est activée par cet évènement lorsque la feuille est recalculée.
Private Sub Worksheet_Calculate()
ReihenfarbeSiValeurDifferente
End Sub
On ajoute également un code dans ThisWorkbook qui permet de stocker la valeur précédente à l'ouverture de la feuille
Private Sub Workbook_Open()
Feuil1.ValPrecReihenfarbe = Feuil1.Range("I6")
End Sub
Dans la macro intermédiaire on mais une condition qui permet de dire si la valeur précédente est égale à la valeur actuelle de la cellule alors on arrête la macro intermédiaire et si c'est pas le cas, on va a la Macro qu'on veut exécuter
Private Sub ReihenfarbeSiValeurDifferente()
If VarType(Range("I6")) = VarType(ValPrecReihenfarbe) Then _
If ValPrecReihenfarbe = Range("I6") Then Exit Sub
ValPrecReihenfarbe = Range("I6")
Axes
End Sub
Axes est le nom de la macro que je veux activer si l'une des valeurs de la plage I6:I56 change.
MON PROBLEME: j'arrive à faire cela qu'en considérant une cellule et non ma Plage. Vous avez remarqué que j'ai mis I6 à chaque fois. Ainsi la macro Axes est lancée que si la valeur de la cellule I6 change, si I10 change par exemple, il ne se passe rien. Mais j'aimerais le faire pour toute la plage facilement. J'ai essayé de mettre I6:I56 comme il suffirait de le mettre avec l'événement Worksheet.change mais ça ne marche pas bien évidemment.
Comment dois-procéder dans ce cas? Même une autre manière de faire m'irait.
d'avance pour vos réponses
cordialement