Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Bonjour Forum
Je cherche une astuce de telle manière que mon fichier Excel ne peut pas être déplacé d’un PC a l'autre.
Exemple
Dans mon code je précise le chemin répertoire de mon fichier ( ex. C:\FGP 2014) si un utilisateur veut copier ou déplacer le fichier un message Msgbox lui informe qui ne peut pas faire cette opération ou il n’est pas autorisé
a+
Re
mais je suis le propriétaire du fichier ( admin), donc l'utilisateur n'est pas sensé savoir le chemin , moi autant que admin je vais créer pour chaque utilisateur ce chemein dans leur PC
a+
1) Sur ton ordi entre dans le ThisWorkbook du fichier que tu veux installer chez les utilisateurs :
Code:
Private Sub Workbook_Open()
On Error Resume Next
If Environ("ComputerName") = [ordi] And Me.Path = [chemin] _
And Right(Me.Name, 5) = ".xlsm" Then Exit Sub
Application.DisplayAlerts = False
Me.ChangeFileAccess xlReadOnly
Kill Me.FullName
If Workbooks.Count = 1 Then Application.Quit Else Me.Close
End Sub
Sub CréerNoms()
Me.Names.Add "ordi", Environ("ComputerName"), Visible:=False
Me.Names.Add "chemin", Me.Path, Visible:=False
End Sub
Sub SupprimerNoms()
On Error Resume Next
Me.Names("ordi").Delete
Me.Names("chemin").Delete
End Sub
2) Pour tester, lance la macro CréerNoms.
Une fois les noms créés tu verras que tu ne peux plus utiliser le fichier dans un autre répertoire.
3) Lance donc la macro SupprimerNoms.
4) Maintenant installe le fichier chez un utilisateur dans le répertoire que tu veux et ouvre-le.
5) Lance la macro CréerNoms.
6) Supprime les macros CréerNoms et SupprimerNoms.
7) Protège le VBA avec ton mot de passe, enregistre et ferme le fichier.
Edit : si le fichier est en lecture seule il ne sera pas supprimé, seulement fermé.
1) Sur ton ordi entre dans le ThisWorkbook du fichier que tu veux installer chez les utilisateurs :
Code:
Private Sub Workbook_Open()
On Error Resume Next
If Environ("ComputerName") = [ordi] And Me.Path = [chemin] _
And Right(Me.Name, 5) = ".xlsm" Then Exit Sub
Application.DisplayAlerts = False
Me.ChangeFileAccess xlReadOnly
Kill Me.FullName
If Workbooks.Count = 1 Then Application.Quit Else Me.Close
End Sub
Sub CréerNoms()
Me.Names.Add "ordi", Environ("ComputerName"), Visible:=False
Me.Names.Add "chemin", Me.Path, Visible:=False
End Sub
Sub SupprimerNoms()
On Error Resume Next
Me.Names("ordi").Delete
Me.Names("chemin").Delete
End Sub
2) Pour tester, lance la macro CréerNoms.
Une fois les noms créés tu verras que tu ne peux plus utiliser le fichier dans un autre répertoire.
3) Lance donc la macro SupprimerNoms.
4) Maintenant installe le fichier chez un utilisateur dans le répertoire que tu veux et ouvre-le.
5) Lance la macro CréerNoms.
6) Supprime les macros CréerNoms et SupprimerNoms.
7) Protège le VBA avec ton mot de passe, enregistre et ferme le fichier.
Edit : si le fichier est en lecture seule il ne sera pas supprimé, seulement fermé.
Bonjour FORUM ,job
2. j'ai pas bien saisié " ...Une fois les noms créés ...." de quel noms tu parles ??
3. "Lance donc la macro SupprimerNoms" pourquoi le lancemenr de cette Macro ?
5&6. je souhaite ces deux macro doient etre lancé automatiquement une fois que je lui donne( utilisateur) le fichier
GRAZIE et B.W
Bonjour job
MERCI POUR CES DETAILS, je vous ai compris , mais je souhaite de transmettre ce fichier par messagerie a mes collaborateurs , ppour cette raisain j'ai souhaiter faire les deux tache 5 et 6 automatiquement a l'ouverture du fichier chez l'utilisateur
1) Dans le ThisWorkbook de ton fichier mets ces 3 macros (j'ai modifié la 1ère) :
Code:
Private Sub Workbook_Open()
If IsError([ordi]) Then CréerNoms
If Environ("ComputerName") = [ordi] And Me.Path = [chemin] _
And Right(Me.Name, 5) = ".xlsm" Then Exit Sub
Application.DisplayAlerts = False
On Error Resume Next
Me.ChangeFileAccess xlReadOnly
Kill Me.FullName
If Workbooks.Count = 1 Then Application.Quit Else Me.Close
End Sub
Private Sub CréerNoms()
Me.Names.Add "ordi", Environ("ComputerName"), Visible:=False
Me.Names.Add "chemin", Me.Path, Visible:=False
End Sub
Private Sub SupprimerNoms()
On Error Resume Next
Me.Names("ordi").Delete
Me.Names("chemin").Delete
End Sub
2) Dans VBA exécute la macro SupprimerNoms (au cas où les 2 noms existeraient).
3) Protège par mot de passe le projet VBA, enregistre et ferme le fichier, tu peux ensuite l'envoyer.
Avec Private aucune macro n'apparaît dans la liste des macros.
Mais tant qu'il n'a pas ouvert le fichier, l'utilisateur pourra le copier et l'installer sur n'importe quel ordinateur.
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD