Vérouiller les modification de données dans mes feuilles Excel

Vérouiller les modification de données dans mes feuilles Excel - VB/VBA/VBS - Programmation

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?
 

Reply

Marsh Posté le 11-12-2009 à 15:54:50   

Reply

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 :
  1. Private Sub Workbook_Open()
  2. Application.EnableCancelKey = xlDisabled        'En 1° ligne, pour éviter que le code ne s'affiche en cas d'interruption de la macro ou si on appuie sur                                 '     'Escape!
  3. Dim MotDePasse As String
  4.     ThisWorkbook.Sheets("Feuil1" ).Activate                    'la Feuil1 est la feuille d'accueil, par exemple
  5. 1     MotDePasse = InputBox("Veuillez entrez votre Mot de Passe.   " & Chr(10) & Chr(10) & "Il vous reste " & 4 - COMPTE & " essais.", _
  6.                     "Mot de Passe exigé", 111)
  7.       If Not MotDePasse = "AA" Then        'tu changeras ces MotDePasse  après avoir inscrit les nouveaux ds tes tablettes!
  8.     COMPTE = COMPTE + 1
  9. If COMPTE >= 4 Then GoTo 2     après 4 essais, la macro va au 2 et ferme le classeur
  10. GoTo 1                      'avant 4 essais, la macro  recommence en 1
  11. Else
  12.           ThisWorkbook.Sheets("Feuil3" ).Activate  'par exple
  13. End If
  14. ''''''''''''''''''''''''''''''''''''''''''''
  15. Exit Sub          'Fin de la macro si mot de passe correct, sinon fermeture du classeur sans enregistrement ni alertes:
  16. 2  Application.DisplayAlerts = False
  17.   ActiveWorkbook.Close
  18. End Sub


 
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 :
  1. Private Sub Workbook_sheetactivate(ByVal sh As Object)  'à chaque changement de feuille
  2.   Application.EnableCancelKey = xlDisabled     
  3. Dim MotDePasse As String
  4. If sh.Name = "Feuil2" Then
  5. Application.EnableEvents = False     'évite que la macro recommence au début à chaque cht de page
  6.     ThisWorkbook.Sheets("Feuil1" ).Activate  'on va en Feuil1 en attendant l'accès à Feuil2
  7. MotDePasse = InputBox("Par précaution, l'accès à la feuille ""Feuil2"" est réservé. " & Chr(10) & Chr(10) & "Entrez votre Mot de Passe.", _
  8.                     "Mot de Passe exigé" )
  9.     If Not MotDePasse = "AA" Then
  10.     MsgBox "Le Mot de Passe saisi est incorrect."
  11.     Else: ThisWorkbook.Sheets("Feuil2" ).Activate
  12.     End If
  13. End If
  14.    
  15. Application.EnableEvents = True
  16. End Sub


 
A suivre


---------------
Olympus OM-D  EM-5 + 14-42
Reply

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...

Reply

Marsh Posté le 12-12-2009 à 11:39:53    

tchauoui a écrit :


 
Comment puis vérouiller l'acces à mes macros également
 


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+

Reply

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.

Reply

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.

Reply

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

Reply

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
 
 
 
 


---------------
Olympus OM-D  EM-5 + 14-42
Reply

Marsh Posté le 13-12-2009 à 22:22:54    

ce post faisait suite à ton précédent message.

Reply

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 :
  1. sub rien()
  2. Application.EnableEvents = True
  3. End Sub


A+


---------------
Olympus OM-D  EM-5 + 14-42
Reply

Marsh Posté le 13-12-2009 à 22:31:26   

Reply

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.

Reply

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é. "
 

Reply

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

Reply

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 :
  1. Sub acces_restreint()
  2. Private Sub Workbook_sheetactivate(ByVal sh As Object)


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...    :sleep:  


---------------
Olympus OM-D  EM-5 + 14-42
Reply

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.
 
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


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 :
  1. If Not MotDePasse = "123" Then
  2.                         'ou mieux:
  3. If MotDePasse  <> "123" Then
  4. et non pas: If Not MotDePasse = "AA" Then


Ensuite:

Citation :

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


 
Bien sûr, tout est à l'envers!
 
écris ceci:
 

Code :
  1. If COMPTE >= 4 Then
  2.    GoTo 2
  3.      Else 
  4. GoTo 1
  5. ThisWorkbook.Sheets("Mapping" ).Activate
  6. End If


A+
 


---------------
Olympus OM-D  EM-5 + 14-42
Reply

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 :
  1. If COMPTE >= 4 Then
  2.    GoTo 2
  3.      Else
  4. ThisWorkbook.Sheets("Mapping" ).Activate
  5. GoTo 1
  6. End If


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!
 


---------------
Olympus OM-D  EM-5 + 14-42
Reply

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

Reply

Marsh Posté le 14-12-2009 à 07:55:37    

Euh, Bonjour?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed