Vérouiller les modification de données dans mes feuilles Excel - VB/VBA/VBS - Programmation
Marsh Posté le 12-12-2009 à 10:40:06
Bonjour,
Voici une macro simple mais efficace dans un premier temps,
sinon, tu as aussi des macros sur ce sujet dans un autre post: "Mot de passe feuille excel" qq lignes + bas
Code :
|
Et cette macro qui donne accès à la feuille 1, mais pas à la feuille2 sans mot de passe (AA aussi, tt cela à changer selon tes souhaits).
Code :
|
A suivre
Marsh Posté le 12-12-2009 à 10:46:57
Ces macros sont à mettre dans la feuille "ThisWorkbook".
Je te conseille d'enregistrer une copie de ton classeur nommée ZZZessais.xls, le temps de bien mettre ces macros de restrictions en place , car si tu verrouilles le bon par malheur, tu n'y auras plus accès...
Marsh Posté le 12-12-2009 à 11:39:53
tchauoui a écrit : |
Bonjour,
Pour verrouiller les macros :
Dans le menu VBA Outils / Propriétés de VBA Project + Onglet Protection...
Nota : Cette protection ne protège que contre la maladresse ou la bêtise... Il n'existe aucune protection contre les c... mal intentionnés !
A+
Marsh Posté le 13-12-2009 à 21:09:46
Ok merci pour vos réponses bien utiles.
Je teste et je vous tiens au courant.
Marsh Posté le 13-12-2009 à 21:26:09
Bonjour,
Pour verrouiller les macros :
Dans le menu VBA Outils / Propriétés de VBA Project + Onglet Protection...
Je suis sous Vista et sous Excel 2007 et je ne trouve pasla fonction pour cacher ou vérouiller l'acces aux Macros.
J'ai fais Afficher/Macros/Affichage des macros et je n'ai rien qui me permette des les cacher ou de bloquer leur modifications.
Marsh Posté le 13-12-2009 à 22:03:21
Je suis coincé et je ne sais pas pourquoi.
Voic mon code, mon premier onglet s'appelle "Extraction" mon deuxième s'appelle "Mapping". Mon mot de de passe est 123.
Sub acces_restreint()
Private Sub Workbook_sheetactivate(ByVal sh As Object)
Application.EnableCancelKey = xlDisabled
Dim MotDePasse As String
If sh.Name = "Mapping" Then
Application.EnableEvents = False
ThisWorkbook.Sheets("Extraction" ).Activate
MotDePasse = InputBox("Par précaution, l'accès à la feuille ""Feuil2"" est réservé. " & Chr(10) & Chr(10) & "Entrez votre Mot de Passe.", _
"Mot de Passe exigé" )
If Not MotDePasse = "AA" Then
MsgBox "Le Mot de Passe saisi est incorrect."
Else: ThisWorkbook.Sheets("Mapping" ).Activate
End If
End If
Application.EnableEvents = True
End Sub
End Sub
Marsh Posté le 13-12-2009 à 22:21:23
Bonsoir
Essaie peut-être ça:
Dans le Visual Basic Editor (le précieux bréviaire où on enregistre nos petites prières) (Alt+F11), clic DROIT sur le nom du projet à protéger, puis clic sur propriétés de VBA projo(----, onglet Protection, coche "Verrouiller le projet pour l'affichage", enregistre le mot de passe (qui apparaît en étoiles) que tu auras soigneusement choisi, appris, et SURTOUT NOTE-LE AVANT dans un endroit accessible de façon claire pour toi, mais cachée pour les autres. Attention, après ça, impossible (sauf aux pirates) d'ouvrir les macros du fichier sans le code. (Ca marche pour XL 2002 SOUS XP)
Tiens-nous au courant.
Bye
Marsh Posté le 13-12-2009 à 22:31:26
tchauoui a écrit : Je suis coincé et je ne sais pas pourquoi. |
Tu es coincé où et comment? Dès le début, en cours de route?
Essaie de faire une macro :
Code :
|
A+
Marsh Posté le 13-12-2009 à 23:24:00
Ok pour protéger mes macros, ça fonctionne.
Il mes reste mon soucis de pourvoir autoriser la copie des données de ma feuille A dans ma feuille B.
Ma feuille B doit être protégée à la saisie.
Laoo j'i vu ton code mais je ne parvien pas à le faire marcher
Je coince des le début du début.
Marsh Posté le 13-12-2009 à 23:32:18
Des que je verouille ma feuille n°2, il m'empêche de copier mes données de ma feuille 1 vers ma feuille 2.
Et j'ai du coup l emême problème pour mes autres feuilles.
Je ne comprens pas cette partie de ton code :
MotDePasse = InputBox("Par précaution, l'accès à la feuille ""Feuil2"" est réservé. " & Chr(10) & Chr(10) & "Entrez votre Mot de Passe.", _
"Mot de Passe exigé" )
If Not MotDePasse = "AA" Then
MsgBox "Le Mot de Passe saisi est incorrect."
Textuellement que dois-je enlever?
Est-ce cette partie ci?
Par précaution, l'accès à la feuille ""Feuil2"" est réservé. "
Marsh Posté le 13-12-2009 à 23:42:47
Mon code est le suivant et le bloque à GO TO 1 Else.
Sub Restriction_Accès()
Private Sub Workbook_Open()
Application.EnableCancelKey = xlDisabled
Dim MotDePasse As String
ThisWorkbook.Sheets("Extraction" ).Activate
MotDePasse = InputBox("Veuillez entrez votre Mot de Passe. " & Chr(10) & Chr(10) & "Il vous reste " & 4 - COMPTE & " essais.", _
"Mot de Passe exigé", 123)
If Not MotDePasse = "AA" Then
COMPTE = COMPTE + 1
If COMPTE >= 4 Then GoTo 2 GoTo 1 Else
ThisWorkbook.Sheets("Mapping" ).Activate
End If
''''''''''''''''''''''''''''''''''''''''''''
Exit Sub '
Application.DisplayAlerts = False
ActiveWorkbook.Close
Marsh Posté le 14-12-2009 à 00:07:41
Le libellé de l'InputBox n'a pas d'importance, seul ce que tu rentres dedans compte et doit être conforme à MotDePasse, ici AA.
essaie de changer:
If Not MotDePasse = "AA" Then
par
If MotDePasse <> "AA" Then
sait-on jamais?
D'autre part, je ne comprends pas pourquoi tu mets une macro autour de la private:
Code :
|
Est-ce autorisé (et conseillé)?
Je ne me souviens plus bien de ton projet, il faut que je me replonge dedans pour voir si j'en sors qq chose de nouveau? et je ne suis pas expert ès-verrouillage... et peut-être pas ce soir, il est tard...
Marsh Posté le 14-12-2009 à 00:25:48
Encore une fois on s'est croisés!
tchauoui a écrit : Mon code est le suivant et le bloque à GO TO 1 Else. |
Il faut se mettre d'accord, si ton mot de passe est 123, tu ne dois pas l'inscrire dans ton message (sauf au début pour t'en souvenir, si tu veux)
et d'autre part tu dois écrire:
Code :
|
Ensuite:
Citation : COMPTE = COMPTE + 1 |
Bien sûr, tout est à l'envers!
écris ceci:
Code :
|
A+
Marsh Posté le 14-12-2009 à 00:57:17
j'écris par épisodes, mais parce que j'écris au fur et à mesure de ma réflexion, un peu lente, et surtout ralentie par ce viex PC qui n'avance pas. vivement le nouveau!
Bon, dis-moi, c'est bien gentil de mettre des GOTO et des numéros, mais il faudrait les inscrire dans ton texte, sinon XL va se fâcher tout rouge, te les réclamer et se mettre encore en grève!
et puis le GoTo 1 doit venir après l'autre action, bien sûr, sinon elle est shintée.
Code :
|
J'ai compris!! Tu veux afficher une feuille 1 ou 2 en utilisant GOTO !! Ô Misère! Non. GOTO est un mot clé qui renvoie à la balise indiquée que tu places dans le texte de la macro, pour aller plus haut ou plus bas, selon les circonstances. je t'enverrai demain un exemple. En attendant il faut organiser ça dans ta macro!
Marsh Posté le 14-12-2009 à 07:01:36
Pour confirmer ce qu'à dit galopin01, je viens de recevoir ça ce matin:
http://www.vbfrance.com/codes/OTER [...] 50949.aspx
Cordialement
Marsh Posté le 11-12-2009 à 15:54:50
Bonjour,
J'ai crée mes fichiers avec toutes mes macros.
Je souhaite vérouiller les modifications sur certaines cellules et sur le format également.
Comment puis vérouiller l'acces à mes macros également
Le fichier va être mis à disposition d'un équipe.
Comment puis-je faire?