Macro qui ne s'arrête pas de tourner

sdf34

XLDnaute Nouveau
Bonjour le Forum,

Je suis nouveau sur ce site et je salue tous les intervenants qui nous aident à résoudre nos petits et gros bobos à la têtes.

Et là, justement, j'ai un bobo à la tête avec un code pour faire clignoter des cellules.

Tout marche à la perfection, seulement la macro continue de tourner, même si la condition pour arrêter le clignotement est là, même si je ferme le classeur et que je le ré-ouvre.

Je vous joint mon classeur.

Merci de nos prochaines réponses
 

Pièces jointes

  • Calcul auto heures travaillées exemple.xlsm
    48.5 KB · Affichages: 74
  • Calcul auto heures travaillées exemple.xlsm
    48.5 KB · Affichages: 79
  • Calcul auto heures travaillées exemple.xlsm
    48.5 KB · Affichages: 83
Dernière édition:

MichD

XLDnaute Impliqué
Re : Macro qui ne s'arrête pas de tourner

Bonjour,

Dans la procédure "Eclairage", tu dois appeler la procédure "arrêtEclairage"

sauf que dans ton code, je ne comprends pas pourquoi tu utilises la commande
Application.OnTime.

Qu'est-ce que cette dernière est censée effectuer comme travail?
Quel est le critère que tu veux utiliser pour arrêter la procédure lorsqu'elle tourne?

'------------------------------------------
Public Sub Eclairage()
vNow = Now + TimeValue("00:00:01")
Application.OnTime vNow, "Eclairage"
ActiveWorkbook.Names.Add Name:="VarEclairage", RefersToR1C1:=1 - [VarEclairage]
ArrêtEclairage
End Sub

'------------------------------------------
Public Sub ArrêtEclairage()
Application.OnTime EarliestTime:=vNow, _
Procedure:="Eclairage", Schedule:=False
End Sub
'------------------------------------------

MichD
-------------------------------------------------------
 

sdf34

XLDnaute Nouveau
Re : Macro qui ne s'arrête pas de tourner

Bonsoir MichD,

Merci de ta réponse;

Pour le code tu m'en demandes trop, j'ai trouvé ce code sur internet et je suis totalement incapable de te dire pourquoi il a été employé la commande Application.OnTime.

Ce code fonctionne mais ne veut plus s'arrêter.
Le clignotement des cellules s'arrête mais le code continu à tourner.

Dans mon fichier remplace la couleur de N6 (par exemple) par une autre couleur ou même, pas de couleur, clique sur le bouton RECALCULER (le calcul auto ne fonctionne pas . . . . . sauf quand la procédure tourne ? ? ?) et tu verras les cellules BV3 (plus remplacement du mot OK par ERREUR) et la cellule BU6 qui vont clignoter en rouge ce qui signalera à la secrétaire qu'il y a une erreur sur cette ligne dans une ou plusieurs cellules de B6 à BK6.
Tu remet la bonne couleur et le clignotement s'arrête et OK revient, sauf que la procédure continu de tourner.
 
Dernière édition:

MichD

XLDnaute Impliqué
Re : Macro qui ne s'arrête pas de tourner

Dans le ThisWorkbook du projetVBA du classeur, il y a ces 2 procédures.
Dès que le fichier s'ouvre, il lance la procédure événementielle "Workbook_Activate"
qui elle enclenche la procédure éclairage. La macro "Eclairage" s'arrête lorsque tu
actives un autre classeur que celui où les macros sont écrites en activant la procédure
événementielle : Workbook_Deactivate


La grande question, que veux-tu accomplir? Quel est le résultat recherché?

-----------------------
Private Sub Workbook_Deactivate()
ArrêtEclairage
End Sub
-----------------------


'-----------------------
Private Sub Workbook_Activate()
Eclairage
End Sub
-----------------------


MichD
---------------------------------------------------
 

sdf34

XLDnaute Nouveau
Re : Macro qui ne s'arrête pas de tourner

Bonjour MichD,

Alors voilà ce qui serait bien, voir même très bien.

Dans ce tableau les heures sont calculées suivant des couleurs que la secrétaire met dans les cellules correspondantes et si elle se trompe de couleur ou si elle omet de mettre une couleur cela à une influence sur le nombre d'heures de semaine ou de dimanche/J.Fériés et donc au moment de la paye, une différence de salaire en plus ou en moins (souvent en moins d'ailleurs). La colonne contrôle calcule le nombre d'heure total sans tenir compte des heures de semaine ou de dimanche/J.fériés, sans intervention de la secrétaire, nombre de nuit x Nbre d'heures par nuit + 15 nuits maxi (ou moins)x 35 mn soit 0.59 décimalisé. C'est ce total qui sert de contrôle.
Si la secrétaire se trompe dans les couleurs ou en omet, le programme lui signale et lui indique dans quelle ligne par un clignotement en rouge de la cellule TOTAL HEURES et le OK se transforme en ERREUR et sa cellule clignote en rouge. Quand la secrétaire rectifie l'erreur et donc que la cellule TOTAL HEURES est égale à la cellule CONTROLE, les clignotements s'arrêtent, le OK revient et la macro se met en stand by en attendant une nouvelle erreur.
Pour le moment tout fonctionne très bien, juste la macro, qui fait clignoter, qui continue de tourner dans le vide, le curseur de la souris passe, de la flèche au rond qui tourne, sans arrêt, la barre des fonctions affiche alternativement des fonctions différentes, la barre du nom des cellules affiche alternativement des noms de cellules différentes.

Enfin voilà, ce qui serait bien, c'est que cette macro arrête de tourner quand pour une ligne donnée (à mon avis il y aura qu'une ligne à la fois qui comportera une erreur car comme la secrétaire en sera informée elle rectifiera de suite), les cellules TOTAL HEURES et CONTROLE redeviennent égales suite à une erreur.

Merci de ta patience et de ton aide

Cordialement
 
Dernière édition:

MichD

XLDnaute Impliqué
Re : Macro qui ne s'arrête pas de tourner

A ) Sauf erreur de ma part, tu n'as aucun code dans le classeur que
tu as publié susceptible de faire "flasher" une ou des cellules.

B ) Ton application est basée sur des formats (couleur de fond) de cellules.
L'ensemble des formules de la feuille est constamment mise à jour
ce qui alourdit l'application.

C ) Je ne peux pas créer une fonction personnalisée qui modifie la couleur
d'une cellule particulière, car une fonction retourne DU DATA et elle ne peut
pas intervenir dans l'interface de calcul pour modifier un format de cellule.

J'ai joint un petit fichier exemple illustrant une manière de procéder pour
faire clignoter une cellule.
N. B. Attention, il y a un petit API dans le module standard essentiel au
bon fonctionnement de la procédure dans le module de la feuil1

J'espère que cela pourra t'aider!

MichD
--------------------------------------------------
 

Pièces jointes

  • Exemple cellule clignotante.xlsm
    18.2 KB · Affichages: 74

sdf34

XLDnaute Nouveau
Re : Macro qui ne s'arrête pas de tourner

Merci de ta réponse, malheureusement cette procédure ne peut pas me servir.

Effectivement le déclenchement du clignotement d'une cellule renseignées de la colonne BU est qu'elle ne soit pas égale à la cellule adjacente de la colonne BV. Si elle est égale rien ne se passe, si elle ne l'est pas, elle clignote jusqu'à ce qu'elle soit égale

Les couleur des cellules ne servent uniquement qu'à calculer le nbre d'heures de semaine et le nbre d'heure de dimanche/J.fériés. Les couleurs n'interviennent pas dans le déclenchement du clignotement. Par contre si il a été oublié une couleur ou si elle n'est pas la bonne dans les colonnes B6 à BK6, le total dans la cellule en colonne BU ne sera pas le même que sa voisine en colonne BV se qui déclenchera le clignotement.

Je cherche juste à faire clignoter en rouge avec texte en jaune une cellule renseignée de la colonne BU si elle n'est pas égale à la cellule de la colonne BV et que ce clignotement s'arrête dès qu'elle est égale.

C'est ce qui se passe sur mon fichier que j'ai joint, mais le problème c'est que quand le clignotement s'arrête, il y a quelque chose qui continu de tourner. On le voit au curseur de la souris qui passe, de la flèche au rond qui tourne, sans arrêt, de la barre des fonctions qui affiche alternativement des fonctions différentes, de la barre du nom des cellules qui affiche alternativement des noms de cellules différentes.
Mon problème il est juste là.

Mais si tu vois une autre solution pour faire clignoter ces cellules dans les même conditions je suis preneur.

Merci à toi de ton aide

Cordialement
 

MichD

XLDnaute Impliqué
Re : Macro qui ne s'arrête pas de tourner

Voir ton fichier. Dès que tu cliques sur le bouton calculer, si une erreur
est décelée, la cellule affichant "Erreur" clignote pour un certain temps
et puis elle s'arrête toute seule . Tu peux modifier la durée du
clignotement dans la procédure "éclairage" du module1.

MichD
------------------------------------------------
 

Pièces jointes

  • Calcul auto heures travaillées exemple.xlsm
    49.5 KB · Affichages: 69
  • Calcul auto heures travaillées exemple.xlsm
    49.5 KB · Affichages: 66
  • Calcul auto heures travaillées exemple.xlsm
    49.5 KB · Affichages: 58
Dernière édition:

MichD

XLDnaute Impliqué
Re : Macro qui ne s'arrête pas de tourner

Voir à nouveau ton fichier, une autre façon de procéder!!!
 

Pièces jointes

  • Calcul auto heures travaillées exemple.xlsm
    53.3 KB · Affichages: 63
  • Calcul auto heures travaillées exemple.xlsm
    53.3 KB · Affichages: 67
  • Calcul auto heures travaillées exemple.xlsm
    53.3 KB · Affichages: 70

sdf34

XLDnaute Nouveau
Re : Macro qui ne s'arrête pas de tourner

Bonjour MichD,

Merci pour tout ceci, mais malheureusement cela ne convient pas, même en adaptant.
Le seul truc qu'il faudrait, c'est de trouver le moyen d'arrêter la macro dès que l'erreur est rectifié (voir mon dossier dans ma demande) si ce n'est pas possible, je vais tout simplement ne pas faire de clignotement et juste faire mettre en rouge les cellules OK et celles dans la colonne Total, ainsi que le nom en début de ligne. En espérant que cela sera suffisant pour attirer l'oeil de la secrétaire sur une erreur de couleur.
Un grand merci à toi pour ton travail, en tout cas je garde précieusement ce nouveau dossier que je pourrai peut-être un jour adapter à un dossier dont la configuration sera différente.
Par contre il me vient une idée, ton messageBox est tout à fait adapté pour une bonne alerte voyante, plus de clignotement mais serait-il possible que quand une des cellules de la colonne BU passe au rouge qu'un messageBox "ATTENTION ERREUR SUR LA LIGNE FRED (le nom qui est en colonne A de la ligne concernée)" apparaisse, l'utilisateur clique sur OK, rectifie, plus de rouge le messageBox ne revient pas, si au contraire, après avoir cliqué sur OK elle clique sur une autre ligne, le message revient.
Ca serait possible de faire ça ? Plus de problème de clignotement :)

Merci à toi pour tout et toutes mes excuse pour le temps que je te prends.

Bien cordialement
 
Dernière édition:

MichD

XLDnaute Impliqué
Re : Macro qui ne s'arrête pas de tourner

Dans mon exemple précédent, je ne vois pas pourquoi cela ne fonctionne pas.

Dès qu'une erreur est générée c'est-à-dire que BV33<>BU33 , un message
s'affiche et il pointe directement vers la cellule où le dernier changement a
pris place, d'où on peut déduire que l'erreur provient. Après le même message
est généré après toute nouvelle sélection jusqu'au moment où la secrétaire
corrigera la situation.


Il en est de même pour ma première suggestion. Dès que la secrétaire clique sur
le bouton calculer, si une erreur était générée, la cellule désignée clignote pendant
une durée X que tu peux déterminer.

Je n'ai pas regardé ton application à fond, mais ce que tu demandes semble difficilement
réalisable pour les raisons suivantes :

A )
La modification d'un format de cellule ne génère aucun événement (macro événementielle).

B )
La plage que tu veux surveiller le format contient seulement des formules.

C ) Si aucune macro événementielle n'est déclenchée, comment veux-tu faire pour déceler
immédiatement et automatiquement que le format de la cellule de la colonne BU sur la
même ligne vient de passer au rouge?


MichD
-------------------------------------------------------------------
 

Discussions similaires

Statistiques des forums

Discussions
312 492
Messages
2 088 914
Membres
103 983
dernier inscrit
AlbertCouillard