XL 2013 Protection code VBA a plusieurs utilisateurs

looky62

XLDnaute Occasionnel
Bonjour à tous;

Sous VBA, j'aimerais que mes utilisateurs puissent modifier le chemin d un fichier où il se trouve par exemple sous leur PC afin de faire tourner la Macro mais sans pouvoir modifier le reste au risque de faire une bétise!

Workbooks.Open Filename:= _
"C:\Users\XXXXX\Downloads\Export.csv" (XXXXX sont leur identifiant)

Peut on mettre une protection sur certains modules VBA et d'autres NON? Par exemple peut on protéger un module et d'autres non!
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Looky,
Non, la protection est pour le VBA entier, non pour un module.
Ensuite, laissez un utilisateur "bidouiller" un module VBA, ce n'est peut être pas futé, ... sauf si vous avez du temps pour ceux qui appelleront au secours.
Pourquoi ne pas mettre ce chemin dans une cellule ? Le VBA n'aura qu'à ensuite le récupérer.
D'autant que si il n'y a juste leur identifiant "XXXXX" à modifier, demandez à l'utilisateur de ne rentrer que cette partie, le VBA reconstituera le chemin complet, par ex :
Code:
Workbooks.Open Filename:= "C:\Users\" & [A1] & ""\Downloads\Export.csv"
( si l'identifient est en A1.)
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Une autre idée, est qu'à l'ouverture du fichier un Workbook_Open demande à l'utilisateur de rentrer son identifiant via une inputbox. Et il mémorise cette valeur dans une variable public pour que les autres modules puissent l'utiliser. Voir PJ.
 

Pièces jointes

  • Looky.xlsm
    14.6 KB · Affichages: 9

looky62

XLDnaute Occasionnel
Une autre idée, est qu'à l'ouverture du fichier un Workbook_Open demande à l'utilisateur de rentrer son identifiant via une inputbox. Et il mémorise cette valeur dans une variable public pour que les autres modules puissent l'utiliser. Voir PJ.
Ah super l idée, je ne pensais à ça , top! Et si je veux proteger le VBA pr que personne ne le voit et ni touche comme on fait, dsl , je programme un peu, mais je suis encore novice sur certaines fonctionnalités
 

looky62

XLDnaute Occasionnel
Une autre idée, est qu'à l'ouverture du fichier un Workbook_Open demande à l'utilisateur de rentrer son identifiant via une inputbox. Et il mémorise cette valeur dans une variable public pour que les autres modules puissent l'utiliser. Voir PJ.
Et comment je puisse récupérer son identifiant ds mon vba ensuite: exemple ici, lorsqu'il l a rentrée à l ouverture du fichier


Macro1 Macro
' habilit interlocuteur
'
Workbooks.Open Filename:= _
"C:\Users\XXXXX\Downloads\MAJ EPI\Export.csv"
ActiveWindow.SmallScroll Down:=-18
ActiveWindow.LargeScroll ToRight:=-1
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Ayez la curiosité d'éplucher ma PJ du post #3 !
Il vous faut trois choses :
1- Dans un module standard vous déclarez une variable public qui sera visible par tous les autres modules:
VB:
Public Identifiant
2- Dans Thisworkbook vous mettez la macro qui s'activera à l'ouverture du fichier :
Code:
Private Sub Workbook_Open()
     Identifiant = InputBox("Veuillez entrer votre identifiant : ")
End Sub
3- Dans vos macro vous utilisez la variable Identifiant :
Code:
Sub Test()
    MsgBox "Le chemin à utiliser est : " & Chr(10) & "C:\Users\" & Identifiant & "\Downloads\Export.csv"
End Sub
 

looky62

XLDnaute Occasionnel
Alors j'ai bien correctement rentré par contre qd je lance ma commande av ma variable ça bug**

Public NNI
Sub Macro1()
'
' Macro1 Macro
' habilit interlocuteur
'

Workbooks.Open Filename:= _
"C:\Users\NNI\Downloads\MAJ EPI\Export.csv"

En essayant avec "" ou && ça bloque !!
 

Discussions similaires

Réponses
1
Affichages
379

Statistiques des forums

Discussions
312 219
Messages
2 086 372
Membres
103 198
dernier inscrit
CACCIATORE