Vérrouillage des cellules remplies à l'enregistrement

Garion

XLDnaute Nouveau
Bonjour à tous qui liront ce message.

Je m'xplique ma situation je suis en formation en apprentissage dans une entreprise. On ma demandé de sécurisé les document sensible se trouvant sur le réseau par un mot de passe et aussi de ne pas pouvoir les modifier malencontresement.

En cherchant sur internet et sur ce merveilleux forum je n'est pas réussi à trouver une solution a mon problême.

Comme vous pouvez le lire dans le titre je souhaiterai pouvoir vérouiller les cellules automatiquement et donc les informations dès lors qu'une personne enregistre le document. Cela permet alors à la personne de valider les informations remplies. La modifications du document ne pourrai être fait que lorsque le document n'est plus vérouillé (dévérouillage par mot de passe : procédure classique dans excel).

Je ne sais pas si cette application peut être réalisé à l'aide d'une macro dans excel. J'espère que vous pourrez m'aider.

Sincérement un grand merci d'avance pour toute aide.

Garion.
 

chris

XLDnaute Barbatruc
Re : Vérrouillage des cellules remplies à l'enregistrement

Bonjour

Si tu as Excel 2002 ou + :
ajoute à la suite de la ligne
ActiveSheet.Protect Password:=""

les options
AllowFormattingCells:=True, AllowInsertingRows:=True

sans oublier la virgule après le mot de passe
 

Temjeh

XLDnaute Accro
Supporter XLD
Re : Vérrouillage des cellules remplies à l'enregistrement

Rebonjour voici le code a modifié

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

For Each c In Sheets("Feuil1").Range("A1:A100")
    If c <> "" Then
       ActiveSheet.Unprotect Password:=""
       c.Locked = True

ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
        False, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
        AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _
        :=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, _
        AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True, _
        AllowUsingPivotTables:=True
    ActiveSheet.EnableSelection = xlNoRestrictions
    End If
Next c

End Sub
A+

Temjeh
 

Pièces jointes

  • Classeur1.xls
    26.5 KB · Affichages: 111
  • Classeur1.xls
    26.5 KB · Affichages: 113
  • Classeur1.xls
    26.5 KB · Affichages: 129
Dernière édition:

Garion

XLDnaute Nouveau
Re : Vérrouillage des cellules remplies à l'enregistrement

Merci encore à toi Temjeh, c'est exatement cela. Et surtout merci de ta présence : 00h39 bien que tu soit à Monréal. Je pense que cette fois le sujet est réglé. Merci à tous. Bonne journée. Salutation Garion
 

Garion

XLDnaute Nouveau
Re : Vérrouillage des cellules remplies à l'enregistrement

Me revoila, après test de cette macro sur un de mes documents.

Tout d'abord Jemteh, j'ai rajouté dans ton code la ligne qui permet de mettre un mot de passe pour le dévérouillage :
ActiveSheet.Protect Password:="bastien"

Cependant quand j'ai tester sur un de mes documents, quand je souhaite enregistrer mon documents il y a une erreur excel. Elle est la suivante :

Erreur d'éxécution ' ': Impossible de définir la propiété Locked de la classe Range.

Je ne sais pas d'ou viens l'erreur ou de quoi sa en découle. Avez vous une réponse pour cette erreur.

A noter que j'ai dans ma version protégé la macro et que j'ai aussi mis le fichier en lecture seule avec mot de passe pour avoir les droit en écriture. Mon documents incorporé comporte 9 colonnes et 144 lignes : peut être trop d'information ?

merci encore d'avance pour votre aide.

Garion

PS: je met le fichier avec la petite correction apporté.
 

Pièces jointes

  • Classeur1(1).xls
    26 KB · Affichages: 69
  • Classeur1(1).xls
    26 KB · Affichages: 84
  • Classeur1(1).xls
    26 KB · Affichages: 87

Temjeh

XLDnaute Accro
Supporter XLD
Re : Vérrouillage des cellules remplies à l'enregistrement

Rebonjour

Je ne comprend pas trop car chez-moi ca fonctionne impect

Ptêtre il faut écrire différemment cette ligne selon ta version
Moi j'ai excel 2003
Aussi ptêtre l'histoire du lectur seule avec password
Non pas de prob même pour toutes les cells de la feuil!
Désolé

Temjeh
 
Dernière édition:

Garion

XLDnaute Nouveau
Re : Vérrouillage des cellules remplies à l'enregistrement

je viens de m'apercevoir que ce que j'avais fais n'est pas bon : sa marche pas.

En faite le problême est la non prise en compte du mot de passe que je met dans la macro lorsque je veut faire une modification. J'ôte la protection et il n'est pas demandé le mot de passe.

De plus, lorsque je copie le texte des documents auquel je veux mettre la macro (Ctrl v dans le document contenant la macro) quand j'enregistre il m'apparait l'erreur que j'ai mis plus haut.

Si tu n'a pas comprit dit moi les point que tu n'a pas comprit.

Merci de ton aide et du temps passer à m'aider.

Garion.

PS: j'ai bien office 2003
 
Dernière édition:

Garion

XLDnaute Nouveau
Re : Vérrouillage des cellules remplies à l'enregistrement

Info sipplémentaire : j'ai remarqué que pour que le mot de passe me soit demandé quand je veut mofifier les données que j'ai déjà rempli, il faut que j'ai préalablement mis un mot de passe en passant par outils/protection/protéger la feuille/... alors que tu avait pas encore incorporer la modification pour intergrer les insertion et autres, le mot de passe directement inscrit dans la macro entre guillemet était directement pris pour enlever la protection. Il n'y avait pas besoin de remettre à chaque fois manuellement un mot de passe lorsque une modification en enlevant la protection (de manière manuel) est faite.
 

Garion

XLDnaute Nouveau
Re : Vérrouillage des cellules remplies à l'enregistrement

J'ai comprit comment régler le problême du mot de passe. Voilà la macro corrigé (correction en gras et souligné) :

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

For Each c In Sheets("Feuil1").Range("A1:J1000")
If c <> "" Then
ActiveSheet.Unprotect Password:=""
c.Locked = True
ActiveSheet.Protect Password:="", DrawingObjects:=False, Contents:=True, Scenarios:= _
False, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _
:=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, _
AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True, _
AllowUsingPivotTables:=True
ActiveSheet.EnableSelection = xlNoRestrictions
End If
Next c

End Sub

Après le problême de l'erreur, c'est peut-être un refus du copier coller du texte. J'en sais trop rien.

Garion
 

Garion

XLDnaute Nouveau
Re : Vérrouillage des cellules remplies à l'enregistrement

Bonjour

J'ai trouvé ce qui fait que la macro de soit pas accepté. C'est le fait de vouloir remplir du texte dans une cellule fusionné. Je sais pas comment régler ce problême.

Merci d'avance à tous ceux qui m'apporteront leur lumière.

Garion
 
Dernière édition:

Garion

XLDnaute Nouveau
Re : Vérrouillage des cellules remplies à l'enregistrement

Je suis touours bloqué et j'ai chercher sur d'autre sujet et apparamment c'est bien la fusion qui fait tout buguer. Je ne sais pas comment faire pour régler ce problême : peut-être nommé la cellule fusionné pour qu'elle soit pris en compte dans la macro thisworkbook. Mais bon je viens de débuté dans le vba et je ne maitrise pas trop cette progammation.

Merci de votre aide

Garion.
 

Garion

XLDnaute Nouveau
Re : Vérrouillage des cellules remplies à l'enregistrement

Bonjour,

L'erreur vient bien de la presence de cellules fusionnees.

Voici un exemple de code qui de fonctionne

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

ActiveSheet.Unprotect Password:=""
For Each c In Sheets("Feuil1").Range("A1:J1000")
If c <> "" Then
If c.MergeCells Then
c.MergeArea.Locked = True
Else
c.Locked = True
End If
End If
Next
ActiveSheet.Protect Password:="", DrawingObjects:=False, Contents:=True, Scenarios:= _
False, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _
:=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, _
AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True, _
AllowUsingPivotTables:=True
ActiveSheet.EnableSelection = xlNoRestrictions
End Sub

Sinon est-ce que vous savais si dans la partie de la macro ou ont autorise les modifications des cellules vérrouillé, si c'est possible de rajouter la possibilité de fusionner les cellules avec celles d'à coter si elle(s) est ou sont vide.

Merci encore pour votre aide.

Garion
 

Discussions similaires

Statistiques des forums

Discussions
312 505
Messages
2 089 103
Membres
104 032
dernier inscrit
akram.job