bonjour à tous,
j'ai besoin d'aide sur un pb de gestion d'une de mes macros. Je m'explique...j'ai dans des cellules (ex1618)renseigné manuellement,une série de trois relevés de mesures.Dans une autre cellule (ex19) je viens faire la moyenne de ces trois mesures.les relevés suivants ce font en (F16:F18) la moyenne ce fait en (F19) et ainsi de suite. lorsque j'ai une série de 7 moyennes consécutives, j'applique une formule pour surveiller où ce trouve chacune de ces moyennes par rapport à une cible.Si ces 7 valeur ce trouve en dessous de la cible, j’exécute une macro (X)tout ceci fonctionne mais...Comme ces valeurs sont figées,les macros utilisé tourne en rond....
dans la pratique ça donne ça:
formule (BA27) pour ctrl de la série:
=SI(ET(D19<>"";D19<0,15;F19<>"";F19<0,15;H19<>"";H19<0,15;J19<>"";J19<0,15;L19<>"";L19<0,15;N19<>"";N19<0,15;P19<>"";P19<0,15);"sept points consécutifs en dessous de la cible")
je passe par une autre cellule (BA26) pour vérifier l'état:
=SI(BA27="sept points consécutifs en dessous de la cible";1)
et je fais de même pour le ctrl de toute la série en me décalant d'une colonne à chaque fois.
il me reste plus qu'a contrôler l'état de mes cellules (BA26;BB26;BC26;etc...) via un code directement sur la feuille qui exécute ma "macro1" en cas ou l'une d'entre elle passe à 1.
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
If Range("BA26") = 1 Then
Call Macro1
End If
If Range("BB26") = 1 Then
Call Macro1
End If
If Range("BC26") = 1 Then
Call Macro1
End If
If Range("BD26") = 1 Then
Call Macro1
End If
Application.EnableEvents = True
End Sub
le PB c’est que mes cellules BA26;BB26 etc restant en l'état, cela crée une boucle sans fin
j'ai donc tenté de rompre cette boucle de la manière suivante:
à la suite de mon code "feuille"
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("BA26")) Is Nothing Then
Target.Value = "0"
End If
If Not Intersect(Target, Range("BB26")) Is Nothing Then
Target.Value = "0"
End If
If Not Intersect(Target, Range("BC26")) Is Nothing Then
Target.Value = "0"
End If
If Not Intersect(Target, Range("BD26")) Is Nothing Then
Target.Value = "0"
End If
End Sub
cela fonctionne quand mes case BA26;BB26 etc sont forcées à 1 manuellement,mais ne fonctionne pas en auto lorsque c'est la formule (ex:=SI(BA27="sept points consécutifs en dessous de la cible";1) qui gère l'état de ces memes cellules.
les lignes --> Application.EnableEvents = False
et --> Application.EnableEvents = True
ont juste résolue le pb lors du calcul auto mais n’empêche pas la relance de la macro apres chaque enregistrement.
mon objectif final est de lancer automatiquement ma "macro1" après chaque détection de série mauvaise mais q'une seul fois (même si le liens entre ces éléments est rompue).
je retourne donc vers vous et votre savoir pour m'aider.
merci par avance
j'ai besoin d'aide sur un pb de gestion d'une de mes macros. Je m'explique...j'ai dans des cellules (ex1618)renseigné manuellement,une série de trois relevés de mesures.Dans une autre cellule (ex19) je viens faire la moyenne de ces trois mesures.les relevés suivants ce font en (F16:F18) la moyenne ce fait en (F19) et ainsi de suite. lorsque j'ai une série de 7 moyennes consécutives, j'applique une formule pour surveiller où ce trouve chacune de ces moyennes par rapport à une cible.Si ces 7 valeur ce trouve en dessous de la cible, j’exécute une macro (X)tout ceci fonctionne mais...Comme ces valeurs sont figées,les macros utilisé tourne en rond....
dans la pratique ça donne ça:
formule (BA27) pour ctrl de la série:
=SI(ET(D19<>"";D19<0,15;F19<>"";F19<0,15;H19<>"";H19<0,15;J19<>"";J19<0,15;L19<>"";L19<0,15;N19<>"";N19<0,15;P19<>"";P19<0,15);"sept points consécutifs en dessous de la cible")
je passe par une autre cellule (BA26) pour vérifier l'état:
=SI(BA27="sept points consécutifs en dessous de la cible";1)
et je fais de même pour le ctrl de toute la série en me décalant d'une colonne à chaque fois.
il me reste plus qu'a contrôler l'état de mes cellules (BA26;BB26;BC26;etc...) via un code directement sur la feuille qui exécute ma "macro1" en cas ou l'une d'entre elle passe à 1.
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
If Range("BA26") = 1 Then
Call Macro1
End If
If Range("BB26") = 1 Then
Call Macro1
End If
If Range("BC26") = 1 Then
Call Macro1
End If
If Range("BD26") = 1 Then
Call Macro1
End If
Application.EnableEvents = True
End Sub
le PB c’est que mes cellules BA26;BB26 etc restant en l'état, cela crée une boucle sans fin
j'ai donc tenté de rompre cette boucle de la manière suivante:
à la suite de mon code "feuille"
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("BA26")) Is Nothing Then
Target.Value = "0"
End If
If Not Intersect(Target, Range("BB26")) Is Nothing Then
Target.Value = "0"
End If
If Not Intersect(Target, Range("BC26")) Is Nothing Then
Target.Value = "0"
End If
If Not Intersect(Target, Range("BD26")) Is Nothing Then
Target.Value = "0"
End If
End Sub
cela fonctionne quand mes case BA26;BB26 etc sont forcées à 1 manuellement,mais ne fonctionne pas en auto lorsque c'est la formule (ex:=SI(BA27="sept points consécutifs en dessous de la cible";1) qui gère l'état de ces memes cellules.
les lignes --> Application.EnableEvents = False
et --> Application.EnableEvents = True
ont juste résolue le pb lors du calcul auto mais n’empêche pas la relance de la macro apres chaque enregistrement.
mon objectif final est de lancer automatiquement ma "macro1" après chaque détection de série mauvaise mais q'une seul fois (même si le liens entre ces éléments est rompue).
je retourne donc vers vous et votre savoir pour m'aider.
merci par avance