Désactiver imprime écran

aredo

XLDnaute Occasionnel
Bonjour,

J'ai un projet de gestion de stock en vba excel 2000, qui fonctionne très bien depuis plusieurs années. Le programme a été réalisé dans ce forum.
J'aurai voulu que les intervenants ne puissent accéder à la copie d'écran, pour éviter les dérives dans les stocks.
J'ai trouvé sur le net un bout de code, comment l'intégrer? qu'en pensez-vous?
Ou alors existe-t' il une méthode plus simple pour contourner une copie d'écran?

Merci au fofo
fred
 
Dernière édition:

aredo

XLDnaute Occasionnel
Re : Désactiver imprime écran

Re,

Franchement, je ne trouve pas les variables en conflit. Il existe certainement un outil pour gérer les conflits! J'essaie de trouver.


Merci encore pour votre implication.
 
Dernière édition:

aredo

XLDnaute Occasionnel
Re : Désactiver imprime écran

bonjour à tous, job,

Désolé, mais je ne trouve pas l'erreur. Je suis débutant, et bien limité dans la réflexion en vba. J'aimerai bien qu'un pro corrige l'erreur décrite plus haut.
C'est un projet de gestion de stock vivant en réseau dans une entreprise, entièrement crée ici, dont l'aboutissement est très proche. Merci à job pour son suivi.
@+
Je joins le fichier: Nom et mots de passe = aredo
Cijoint.fr - Service gratuit de dépôt de fichiers
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Désactiver imprime écran

Bonsoir aredo,

Désolé, mais je ne trouve pas l'erreur. Je suis débutant, et bien limité dans la réflexion en vba (...).

Eh bien dites donc aredo, même débutant, vous avez écrit successivement ces 2 lignes :

Public t As Date
Public t, NewTimer


Et je vous avais dit que chaque variable ne devait être déclarée qu'une fois...

Alors virez Public t As Date.

Et j'espère que vous avez bien viré aussi le Global NewTimer qu'il y avait...

Nota : quand on ne précise pas le type, les variables sont déclarées implicitement As Variant.

Ici on pourrait aussi écrire :

Public t As Date, NewTimer As Date

A+
 
Dernière édition:

aredo

XLDnaute Occasionnel
Re : Désactiver imprime écran

bonjour, job,

Autant pour moi, avec les différentes manipulations de variables, j'ai oublié de contrôler le fichier joint. Après correction, voici l'erreur d'exécution qui apparaît:


bonne journée
 

job75

XLDnaute Barbatruc
Re : Désactiver imprime écran

Bonjour aredo,

Il me semble que vous pouviez trouver tout seul, on a déjà vu ça...

Code:
Private Sub Workbook_Deactivate()
Me.Worksheets(1).[IV1].Copy 'vide le presse-papier
Application.CutCopyMode = False
On Error Resume Next
Application.OnTime t, "ControleImage", , False
End Sub

A+
 

job75

XLDnaute Barbatruc
Re : Désactiver imprime écran

Bonjour aredo,

Finalement cela fonctionne correctement avec cette macro :

Code:
Public Sub CloseSurTimer() 'revue par JOB75
On Error Resume Next
Application.OnTime t, "ControleImage", Schedule:=False
ThisWorkbook.Close Not WbkRO
End Sub
Le fichier sur cijoint.fr :



Nota 1 : j'avoue ne pas comprendre pourquoi il faut l'instruction Application.OnTime etc à cet endroit puisque l'instruction Close déclenche la macro BeforeClose (où elle se trouve aussi).

Nota 2 : vous définissiez en 2 endroits NewTimer par :

NewTimer = Time() + TimeValue("00:10:00")

j'ai corrigé par :

NewTimer = Now + TimeValue("00:10:00")

Ce n'est pas tout à fait anodin.

A+
 

aredo

XLDnaute Occasionnel
Re : Désactiver imprime écran

bonjour job,

C'est bon, super! Pour les doublons et autres imperfections dans le code: il faut signaler que ce sont des bouts de code à chaque fois plus ou moins intégrés selon les compétences de chacun. Encore un petit point qui me gêne:
J'aurai voulu pouvoir fermer complètement le programme excel lorsque cette fonction timer se déclenche. Car juste l'application se ferme. Le fichier se trouve sur un portail excel (en réseau) où beaucoup d'intervenants saisissent et modifient...et l'on ne peut modifier s'il est ouvert sur plusieurs postes.
Fermer excel et non l'appli. Connaissez-vous les termes à changer ou à intégrer?
Merci encore pour votre approche du vba ainsi que vos compétences très appréciables pour des néophites tel que moi.
bonne journée
 

job75

XLDnaute Barbatruc
Re : Désactiver imprime écran

Bonjour aredo,

J'aurai voulu pouvoir fermer complètement le programme excel lorsque cette fonction timer se déclenche.

1) si c'est uniquement dans ce cas-là :

- déclarer en haut d'un Module => Public flag As Boolean

- modifier cette macro ainsi :

Code:
Public Sub CloseSurTimer() 'revue par JOB75
flag = True
On Error Resume Next
Application.OnTime t, "ControleImage", Schedule:=False
ThisWorkbook.Close Not WbkRO
End Sub
- à la fin de la macro Workbook_BeforeClose :

Code:
If flag Then
  Application.DisplayAlerts = False 'si d'autres fichiers sont ouverts
  Application.Quit
End If

2) si l'on veut quitter systématiquement Excel quand le fichier est fermé, écrire simplement à la fin de la macro Workbook_BeforeClose :

Code:
Application.DisplayAlerts = False 'si d'autres fichiers sont ouverts
Application.Quit
Dans les 2 cas les autres fichiers ouverts seront fermés et leurs modifications seront perdues...

A+
 

job75

XLDnaute Barbatruc
Re : Désactiver imprime écran

Re,

En fait j'ai compliqué les choses inutilement dans mon post précédent.

Dans tous les cas de figure, écrire à la fin de Workbook_BeforeClose :

If Workbooks.Count = 1 Then Application.Quit

Pas besoin d'autre chose.

A+
 

aredo

XLDnaute Occasionnel
Re : Désactiver imprime écran

Re,

Parfait, çà fonctionne. Par contre, un état n'est pas conforme: Il y a une macro 'protège-déprotège' qui sert à l'administrateur lors de modifs éventuelles dans les feuilles. Lors d'une fermeture du fichier par l'intervenant, même si le fichier est déprotégé, il se reprotège automatiquement en fermant. Ce qu'il ne fait pas lors du déclenchement par la fonction Timer. Ce qui est gênant, car chacun peut modifier les cellules, et falsifier le document. Voyez-vous le changement à effectuer?
merci encore pour votre implication.
bonne journée
 

Statistiques des forums

Discussions
312 836
Messages
2 092 650
Membres
105 478
dernier inscrit
tim51