En testant notre fichier de travail, je viens de m'apercevoir d'une chose importante !
Généralement, on ne sélectionne q'une 1 seule cellule à la fois.
Pourtant, pris dans nos actions pour lesquelles nous avons besoin de rapidité pour être performants, il peut nous arriver par erreur de sélectionner plusieurs cellules, en même temps, vers la gauche, la droite ou vers le bas.
Le message d'erreur suivant s'affiche :
Nous cliquons alors sur "Fin" pour en sortir mais les macros se trouvent désactivées.
J'ai prévu ce cas avec un bouton qui réactive les macros :
VB:
Sub activeMacros()
Application.EnableEvents = True
Application.Calculation = xlAutomatic
End Sub
Mais souvent mes collègues oublient de cliquer sur le bouton est travaillent macros désactivées jusqu'à cliquer sur un autre bouton dont elles ont besoin.
Dans ce cas, certaines saisies ne sont pas enregistrées et cela pose problème.
J'ai cherché des solutions mais je n'en ai pas trouvé et je me tourne vers vous pour savoir s'il y aurait une possibilité de code qui ferait en sorte que si sélection de plusieurs cellules vers la droite (même vers la gauche) ou vers le bas, rien ne se passe ?
Et affiche un msg du genre 'vous avez cliqué sur plusieurs cellules !
Ce serait super car je cherche depuis longtemps ce qui pouvait provoquer la désactivation des macros et je pense que cela vient de ça.
Avec mes remerciements,
je vous souhaite une belle fin de journée
lionel,
L'idéal, serait que le code de Gérard ne s'exécute que "If Application.EnableEvents = False Then"
Mais je ne réussi pas à le faire fonctionner avec la condition
Parce que tu as mal placé cette condition, il faut bien sûr que le processus continue donc utilise :
VB:
Sub ReactiveMacros()
On Error Resume Next
Application.OnTime t, "ReactiveMacros", , False
t = Now + 1 / 86400 'délai de 1 seconde
Application.OnTime t, "ReactiveMacros"
If Application.EnableEvents Then Exit Sub
ActiveSheet.Protect Password:="", UserInterfaceOnly:=True
[g13] = "Macros Réactivées"
[g14] = "code Gérard"
ActiveSheet.EnableSelection = xlNoRestrictions
[a2].Select
protege
Application.EnableEvents = True 'réactive les évènements
End...
Bjr eriiiic
ça fonctionne chez moi
Prends le fichier joint et désactive les macros ... tu verras, ça ne clignote plus mais ça réactive les macros dans la seconde :
OUI, Gérard, je comprends mais mes collègues travaillent plus vite que leur ombre. J'ai mis 1sec.5.
ça semble bon.
Toutefois, il me semble que quand on clique sur une action (un bouton) si le code "réactiver les macros" s'exécute en même temps, ça bloque et le code se désactive ... je continue mes tests
lionel,
Je reste persuadé que l'utilisation d'une variable pour sortir tout de suite et ne plus utiliser EnableEvents = False reste plus simple et plus fiable ;-)
Ca ne coûte qu'une seule ligne de test en plus au début des macros concernées, et 0 effet collatéral assuré.
Re @ eriiiic
Merci pour ton message
Je ne suis pas un ténor en vba ... et de loin et je ne spik pas l'anglisse (tu l'a compris lol )
Mon "usine à gaz" est bourrée de codes qui doivent être désactivés quand d'autres s'exécutent.
ça craint "grave" ... mais dès que j'aurai un moment, j'essaierai de tester sur un fichier
lionel,