OVH Cloud OVH Cloud

Activation des Macros obligatoire il me faut du VBA

6 réponses
Avatar
Thierry 46
Bonsoir,

J'ai un fichier sur le réseau (en partagé) et je souhaiterai que
l'utilisateur "active les macros". Il y aura entre autre un tracage (il
y a une fausse manip: un bug surement, mais peut-être un acte de
malveillance) qui fait qu'il y a plantage ou alors des données
sensibles modifiées. Je compte mettre en place un log mais si les
macros ne sont pas activées ça ne change rien.

Pour me mettre sur la piste quelqu'un a-t'il fait cela ? je pense
démarrer sur une feuille "bidon" si les macros ne sont pas actives,
sinon avec l'activation je mettrai le bon contexte: comment ? je n'y ai
pas encore trop réfléchi.

bon week end

--
thmc46(nospam)@wanadoo.fr

6 réponses

Avatar
lSteph
Bonsoir,

Si tu mets un classeur en mode "partagé" tu n'as plus accès au macros.

Cdlt.

lSteph

Bonsoir,

J'ai un fichier sur le réseau (en partagé) et je souhaiterai que
l'utilisateur "active les macros". Il y aura entre autre un tracage (il y a
une fausse manip: un bug surement, mais peut-être un acte de malveillance)
qui fait qu'il y a plantage ou alors des données sensibles modifiées. Je
compte mettre en place un log mais si les macros ne sont pas activées ça ne
change rien.

Pour me mettre sur la piste quelqu'un a-t'il fait cela ? je pense démarrer
sur une feuille "bidon" si les macros ne sont pas actives, sinon avec
l'activation je mettrai le bon contexte: comment ? je n'y ai pas encore trop
réfléchi.

bon week end


--
- -

Avatar
lSteph
re,
S'il est juste sur un réseau commun et non en mode partagé.
Voici un exemple qui permet d'afficher le contenu du classeur
uniquement si les macros sont activées et prévoit un réaffichage après
réenregistrement
(dans l'immédiat , le projet n'est pas verrouillé.

http://cjoint.com/?mxto0su1aO

le code est le suivant:
'''''*****dans thisworkbook
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim sh As Worksheet
Sheets("avertissement").Visible = xlSheetVisible
For Each sh In ThisWorkbook.Sheets
If sh.Name <> "avertissement" Then
sh.Visible = xlSheetVeryHidden
End If
Next
End Sub

Private Sub Workbook_Open()
Dim sh As Worksheet

For Each sh In ThisWorkbook.Sheets
sh.Visible = xlSheetVisible
Next
Sheets("avertissement").Visible = xlVeryHidden

End Sub
'''***dans le code feuille avertissement****
Private Sub CommandButton1_Click()
For Each sh In ThisWorkbook.Sheets
sh.Visible = xlSheetVisible
Next
Sheets("avertissement").Visible = xlVeryHidden

End Sub
'''''******************

'Cdlt.

'LSteph



Thierry 46 a pensé très fort :
Bonsoir,

J'ai un fichier sur le réseau (en partagé) et je souhaiterai que
l'utilisateur "active les macros". Il y aura entre autre un tracage (il y a
une fausse manip: un bug surement, mais peut-être un acte de malveillance)
qui fait qu'il y a plantage ou alors des données sensibles modifiées. Je
compte mettre en place un log mais si les macros ne sont pas activées ça ne
change rien.

Pour me mettre sur la piste quelqu'un a-t'il fait cela ? je pense démarrer
sur une feuille "bidon" si les macros ne sont pas actives, sinon avec
l'activation je mettrai le bon contexte: comment ? je n'y ai pas encore trop
réfléchi.

bon week end


--
- -

Avatar
JB
Bonsoir,

http://cjoint.com/?mxtDYDLgWf

-La page de travail n'est afichée que si VBA est actif
-Les heures de connexion sont stockées dans un onglet Espion

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
For s = 2 To Sheets.Count ' on masque les feuilles
Sheets(s).Visible = xlVeryHidden
Next s
Sheets("espion").[A65000].End(xlUp).Offset(1, 0) = NomUser
Sheets("espion").[A65000].End(xlUp).Offset(0, 1) = HeureConnexion
Sheets("espion").[A65000].End(xlUp).Offset(0, 2) = Now
End Sub

Private Sub Workbook_Open()
NomUser = Environ("username")
Sheets("PageTravail").Visible = True
HeureConnexion = Now
End Sub

Dans un module:

Public HeureConnexion
Public NomUser

Cordialement JB



Bonsoir,

J'ai un fichier sur le réseau (en partagé) et je souhaiterai que
l'utilisateur "active les macros". Il y aura entre autre un tracage (il
y a une fausse manip: un bug surement, mais peut-être un acte de
malveillance) qui fait qu'il y a plantage ou alors des données
sensibles modifiées. Je compte mettre en place un log mais si les
macros ne sont pas activées ça ne change rien.

Pour me mettre sur la piste quelqu'un a-t'il fait cela ? je pense
démarrer sur une feuille "bidon" si les macros ne sont pas actives,
sinon avec l'activation je mettrai le bon contexte: comment ? je n'y ai
pas encore trop réfléchi.

bon week end

--
thmc46(nospam)@wanadoo.fr


Avatar
Thierry 46
Re bonsoir,

j'ai 2 grands qui me répondent: super et merci

En effet je suis sur Réseau commun (déjà pas de partagé à cause de
version Excel). Et c'est facheux par la suite de ne pas pouvoir
partager avec du VBA !

Je voulais écrire un log dans un fichier, c'est mieux dans 1 feuille
cachée. Et environ() bien sûr que ça existe, et j'étais parti sur du
GetUserName de la lib "advapi32.dll" ...
Je tracais à l'ouverture dans Workbook_open() et à la fermeture
before_close

je n'avais pas décrit complètement le problème: il y a des liaisons
avec d'autres fichiers.
2 questions:
- 1) si la personne plante volontairement excel ou n'enregistre pas je
n'ai pas de trace dans la feuille "espion" mais des dégats peut-être
sur les autres fichiers. Soit j'écrit dans un fichier avec write# ou
alors il faudrait forcer l'enregistrement mais n'est-ce pas plus long.

- 2) au démarrage le système demande si l'on active les liaisons... je
crains que cette question mette la puce à l'oreille de la personne
malveillante. Dans la plupart des cas les utilisateurs répondent "non"
et n'enregistrent pas( c'est un peu long )car les données sont souvent
actualisées. Donc au départ ne faudrait-il pas dévalider les liaisons
si la personne n'active pas les macros ? et comment ? Quel sera l'ordre
des demandes par excel ? les liaisons ? les macros ? Et dans le log il
serait probablement intéressant de voir qui demande l'activation des
liaisons !
En fait il me faudrait voir le log (à l'ouverture, et la fermeture), et
maîtriser les liaisons.

Déjà merci à Isteph et JB pour les 2 solutions qui fonctionnent et très
didactiques.
Un jour serais-je comme vous en VBA excel ??? il me faudra faire une
collection pour ma formation sur ce forum des JB, Isteph et d'autres
spécialistes.

cdt
JB a exprimé avec précision :
Bonsoir,

http://cjoint.com/?mxtDYDLgWf

-La page de travail n'est afichée que si VBA est actif
-Les heures de connexion sont stockées dans un onglet Espion

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
For s = 2 To Sheets.Count ' on masque les feuilles
Sheets(s).Visible = xlVeryHidden
Next s
Sheets("espion").[A65000].End(xlUp).Offset(1, 0) = NomUser
Sheets("espion").[A65000].End(xlUp).Offset(0, 1) = HeureConnexion
Sheets("espion").[A65000].End(xlUp).Offset(0, 2) = Now
End Sub

Private Sub Workbook_Open()
NomUser = Environ("username")
Sheets("PageTravail").Visible = True
HeureConnexion = Now
End Sub

Dans un module:

Public HeureConnexion
Public NomUser

Cordialement JB



Bonsoir,

J'ai un fichier sur le réseau (en partagé) et je souhaiterai que
l'utilisateur "active les macros". Il y aura entre autre un tracage (il
y a une fausse manip: un bug surement, mais peut-être un acte de
malveillance) qui fait qu'il y a plantage ou alors des données
sensibles modifiées. Je compte mettre en place un log mais si les
macros ne sont pas activées ça ne change rien.

Pour me mettre sur la piste quelqu'un a-t'il fait cela ? je pense
démarrer sur une feuille "bidon" si les macros ne sont pas actives,
sinon avec l'activation je mettrai le bon contexte: comment ? je n'y ai
pas encore trop réfléchi.

bon week end

--
thmc46(nospam)@wanadoo.fr



--
thmc46(nospam)@wanadoo.fr


Avatar
Patrick BASTARD
Bonjour, *lSteph*


Si tu mets un classeur en mode "partagé" tu n'as plus accès au macros.



Si, si, mais avec quelques restrictions.

--
Bien amicordialement,
P. Bastard

Avant d'imprimer ce mail, ayez une pensée pour les arbres.

Avatar
lSteph
Bonjour,
pour la récupération du username il serait amha préférable de passer
par les API car bien souvent dans une configuration réseau les
utilisateurs créés sur le serveur sont indépendants de ce qui peut être
défini dans l'écran de l'application excel et que ramène
application.username , tandis que le username utilisé lors du login du
poste au démarrage de windows est celui que te ramène getusername.
Tu peux aussi vérifier ComputerName

Declare Function GetComputerName Lib "kernel32" Alias
"GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Pour plus ici:
http://www.allapi.net/agnet/apiguide.shtml


Cdlt.

lSteph

Thierry 46 avait annoncé :
Re bonsoir,

j'ai 2 grands qui me répondent: super et merci

En effet je suis sur Réseau commun (déjà pas de partagé à cause de version
Excel). Et c'est facheux par la suite de ne pas pouvoir partager avec du VBA
!

Je voulais écrire un log dans un fichier, c'est mieux dans 1 feuille cachée.
Et environ() bien sûr que ça existe, et j'étais parti sur du GetUserName de
la lib "advapi32.dll" ...
Je tracais à l'ouverture dans Workbook_open() et à la fermeture before_close

je n'avais pas décrit complètement le problème: il y a des liaisons avec
d'autres fichiers.
2 questions:
- 1) si la personne plante volontairement excel ou n'enregistre pas je n'ai
pas de trace dans la feuille "espion" mais des dégats peut-être sur les
autres fichiers. Soit j'écrit dans un fichier avec write# ou alors il
faudrait forcer l'enregistrement mais n'est-ce pas plus long.

- 2) au démarrage le système demande si l'on active les liaisons... je crains
que cette question mette la puce à l'oreille de la personne malveillante.
Dans la plupart des cas les utilisateurs répondent "non" et n'enregistrent
pas( c'est un peu long )car les données sont souvent actualisées. Donc au
départ ne faudrait-il pas dévalider les liaisons si la personne n'active pas
les macros ? et comment ? Quel sera l'ordre des demandes par excel ? les
liaisons ? les macros ? Et dans le log il serait probablement intéressant de
voir qui demande l'activation des liaisons !
En fait il me faudrait voir le log (à l'ouverture, et la fermeture), et
maîtriser les liaisons.

Déjà merci à Isteph et JB pour les 2 solutions qui fonctionnent et très
didactiques.
Un jour serais-je comme vous en VBA excel ??? il me faudra faire une
collection pour ma formation sur ce forum des JB, Isteph et d'autres
spécialistes.

cdt
JB a exprimé avec précision :
Bonsoir,

http://cjoint.com/?mxtDYDLgWf

-La page de travail n'est afichée que si VBA est actif
-Les heures de connexion sont stockées dans un onglet Espion

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
For s = 2 To Sheets.Count ' on masque les feuilles
Sheets(s).Visible = xlVeryHidden
Next s
Sheets("espion").[A65000].End(xlUp).Offset(1, 0) = NomUser
Sheets("espion").[A65000].End(xlUp).Offset(0, 1) = HeureConnexion
Sheets("espion").[A65000].End(xlUp).Offset(0, 2) = Now
End Sub

Private Sub Workbook_Open()
NomUser = Environ("username")
Sheets("PageTravail").Visible = True
HeureConnexion = Now
End Sub

Dans un module:

Public HeureConnexion
Public NomUser

Cordialement JB



Bonsoir,

J'ai un fichier sur le réseau (en partagé) et je souhaiterai que
l'utilisateur "active les macros". Il y aura entre autre un tracage (il
y a une fausse manip: un bug surement, mais peut-être un acte de
malveillance) qui fait qu'il y a plantage ou alors des données
sensibles modifiées. Je compte mettre en place un log mais si les
macros ne sont pas activées ça ne change rien.

Pour me mettre sur la piste quelqu'un a-t'il fait cela ? je pense
démarrer sur une feuille "bidon" si les macros ne sont pas actives,
sinon avec l'activation je mettrai le bon contexte: comment ? je n'y ai
pas encore trop réfléchi.

bon week end

-- thmc46(nospam)@wanadoo.fr




--
- -