VBA Empêcher mise en veille

Cousinhub

XLDnaute Barbatruc
Inactif
Bonsoir,

Sur mon lieu de travail (si, si, j'en ai un....), nous travaillons dans un WorkGroup.....

Ainsi, toute connexion est sujette à un mot de passe réseau, et toute modification sur le comportement du PC est commune à tous les abonnés...

J'ai un programme, sous excel, (étonnant, non?), qui fait dérouler trois feuilles, toutes les 20 secondes.... (feuilles exportées au format .html)

Cependant, comme il n'y a aucune action de l'opérateur, et que la mise en veille du PC se fait au bout d'une minute, il faudrait que toutes les minutes moins 1 seconde, quelqu'un bouge la souris, afin d'éviter la mise en veille du PC...

Connaitriez-vous une astuce pour faire bouger la souris à l'insu du plein gré de l'utilisateur (nan, je sais, c'est impossible), mais néanmoins, empêcher la mise en veille du PC?

Amicalement

Bonne soirée
 

BERRACHED said

XLDnaute Accro
Re : VBA Empêcher mise en veille

Salut,bhbh,Staple1600

voir ce code je ne sais pas s'il fait votre affaire :

Code:
Sub Désactive()
Dim Ret As Long
Dim Activer As Boolean

'Désactive le screenSaver
Ret = SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, False, Null, SPIF_SENDWININICHANGE Or SPIF_UPDATEINIFILE)
If Ret = 1 Then
MsgBox "Le screenserver est désactivé", vbInformation + vbOKOnly, "Info ScreenSaver"
End If
End Sub
Cordialement
 

Cousinhub

XLDnaute Barbatruc
Inactif
Re : VBA Empêcher mise en veille

Re-,

Merci, Saïd

comme dit précédemment, je ne pourrai tester que lundi.....

Et comme je risque d'être absent jusqu'à vendredi, il est fort probable que je ne réponde que vendredi, voire samedi

En avance, et nonobstant le résultat, merci beaucoup...

Bonne soirée
 

Staple1600

XLDnaute Barbatruc
Re : VBA Empêcher mise en veille

Re

Said

Il faut pas déclarer l'api avant ?


J'ai tester un code similaire sous Excel 2000 (cela ne fonctionne pas)

Ce code ne fonctionne pas sur mon poste
Code:
'Author: Waty Thierry
'Origin:  [B]Lien supprimé[/B]
'Purpose: Activate/Deactivate the Screen Saver
'Version: VB4+
Option Explicit
Private Const SPI_SETSCREENSAVEACTIVE = 17
Private Const SPIF_UPDATEINIFILE = &H1
Private Const SPIF_SENDWININICHANGE = &H2

Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByVal lpvParam As Any, ByVal fuWinIni As Long) As Long

Public Function ToggleScreenSaverActive(Active As Boolean) As Boolean
'To Activate Screen Saver, set active to true
'to deactivate, set active to false
Dim lActiveFlag As Long
Dim retval As Long
lActiveFlag = IIf(Active, 1, 0)
retval = SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, lActiveFlag, 0, 0)
ToggleScreenSaverActive = retval > 0
End Function

Private Sub UserForm_Initialize()
ToggleScreenSaverActive False
End Sub

Private Sub UserForm_Terminate()
ToggleScreenSaverActive True
End Sub
 

Cousinhub

XLDnaute Barbatruc
Inactif
Re : VBA Empêcher mise en veille

Re-,

Pour peaufiner ma demande... (et sans avoir tester vos solutions, mais que j'ai notées)

Sur le réseau, par défaut, et par sécurité, tous les PC du WorkGroup sont configurés pour entrer en veille après un laps de temps d'inactivité......

Et pour l'utiliser, un mdp est nécessaire

Ceci fait partie de la stratégie de sécurité, qu'on ne peut modifier pour ce seul PC, sans changer la stratégie de tout le groupe.....

Aussi, seule une activité "physique" peut empêcher une mise en veille.....

Et comme une macro, avec OnTime, ne suffit pas.....

Juste, pour précisions.....

Thanks
 

Cousinhub

XLDnaute Barbatruc
Inactif
Re : VBA Empêcher mise en veille

Re-,

Merci, JM

Testé toutes les SendKeys déjà

Ce soir, il m'est venu une idée

Peut-être qu'en écrivant dans la cellule "IV1", par exemple, puis en l'effaçant, toutes les 59 secondes.......

Je teste Lundi (avec réponse possible pas avant vendredi)

Thanks
 

BERRACHED said

XLDnaute Accro
Re : VBA Empêcher mise en veille

Ré,

en attendant le teste un sendkey je pense associe une macr ontime du genre

Code:
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 59
waitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait waitTime
Ici le sendkey

Sinon j'ai cette adaptation a multiple fonction elle active et désactive que tu peux la corriger éventuellement ça n'a pas marcher chez moi mais a titre d'inspiration sait-on jamais.

Cordialement
 

Pièces jointes

  • Ecran_Veille.zip
    17.4 KB · Affichages: 216

Statistiques des forums

Discussions
314 653
Messages
2 111 586
Membres
111 208
dernier inscrit
estalavista