nom de fichier dans cellute protégée

nom de fichier dans cellute protégée - VB/VBA/VBS - Programmation

Marsh Posté le 10-11-2005 à 11:46:58    

Bonjour,
Pour assurer une certaine traçabilité sur mon fichier j'aimerai que le nom du fichier s'affiche dans une cellule et que cette cellule soit verrouillée (un peu comme ce qu'il est possible de faire dans l'en tête).
Après, dans les cellules suivantes, j'aimerai afficher les dates de création et de dernière modification de ce fichier, mais là c'est une autre histoire...

Reply

Marsh Posté le 10-11-2005 à 11:46:58   

Reply

Marsh Posté le 10-11-2005 à 21:19:21    

Salut,
Voilà ce que j' ai fais :  
 
Private Sub Workbook_open() 'A l' ouverture du fichier(ThisWorkbook)
Range("A1" ) = ActiveWorkbook.Name    'Cellule A1 est égale au nom du fichier actif
Range("B1" ) = Date          'Celule B1 est égale à la date du jour
ActiveCell.Select            'Pour reséléctionner la feuille (Inutile dans le cas présent...)
End Sub
 
Ensuite :  
 
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)   'Lors de la séléction du cellule (ThisWorkbook)
If ActiveCell = Range("A1" ) Then   'Si la cellule à le même contenu que la cellule A1 (Nom du classeur), Alors, elle descend de 1 case
SendKeys "{Enter}", True
Activecell.Select   'Si tu ne veux pas qu' en séléctionnant la feuille, il soit possible d' en annuler le contenu... Et donc de A1
End If
End Sub
 
Et Puis :  
 
J' ai trouvé ça dans un magazine :  
 
Date de création : DateCreated
Dernière modification : DateLastModified
Dernier accès : DateAccessed
Type du fichier : Type
 
C' est ce que tu voulais ?
 
 
 
 

Reply

Marsh Posté le 11-11-2005 à 15:10:33    

theboot28 a écrit :

Bonjour,
Pour assurer une certaine traçabilité sur mon fichier j'aimerai que le nom du fichier s'affiche dans une cellule et que cette cellule soit verrouillée (un peu comme ce qu'il est possible de faire dans l'en tête).
Après, dans les cellules suivantes, j'aimerai afficher les dates de création et de dernière modification de ce fichier, mais là c'est une autre histoire...


 
voici:
 

Code :
  1. Private Sub Workbook_Open()
  2. ThisWorkbook.Unprotect
  3. Range("A1" ).Value = ThisWorkbook.Name
  4. Range("A2" ).Value = ThisWorkbook.BuiltinDocumentProperties("Creation Date" ).Value
  5. Range("A3" ).Value = ThisWorkbook.BuiltinDocumentProperties("Last Save Time" ).Value
  6. Range("A1:A3" ).Locked = True
  7. ThisWorkbook.Protect
  8. End Sub


---------------
Ce qui est affirmé sans preuve peut être nié sans preuve.
Reply

Marsh Posté le 12-11-2005 à 20:29:53    

Salut,  
 
Je sais que c' est pas on sujet, cependant, je me permet de poser ces questions :  
 
Je crois que la formule à proprier c' est  :  
 
7. Protect (Workbook)
 
(Enfin, par ce que chez moi, ça marche pas.)
 
Et n' y aurait il pas une erreur à Range("A1:A3" ).Locked = True ?
 
( Par ce que ça aussi, chez moi, ça marche pas.)
 
Merci

Reply

Marsh Posté le 13-11-2005 à 14:23:25    

PGreg a écrit :

Salut,  
 
Je sais que c' est pas on sujet, cependant, je me permet de poser ces questions :  
 
Je crois que la formule à proprier c' est  :  
 
7. Protect (Workbook)
 
(Enfin, par ce que chez moi, ça marche pas.)
 
Et n' y aurait il pas une erreur à Range("A1:A3" ).Locked = True ?
 
( Par ce que ça aussi, chez moi, ça marche pas.)
 
Merci


 
Quelle version XL ?
Dans quel module places-tu le code ?


---------------
Ce qui est affirmé sans preuve peut être nié sans preuve.
Reply

Marsh Posté le 13-11-2005 à 18:05:16    

Bonjour,
 
Voilà, j' ai utilisé le code su la version 2003 d' excel (VBA6).
J' ai placé le code dans le ThisWorkbook puis dans une simple macro (Sub ess)
 
 

Reply

Marsh Posté le 13-11-2005 à 20:01:25    

PGreg a écrit :

Bonjour,
 
Voilà, j' ai utilisé le code su la version 2003 d' excel (VBA6).
J' ai placé le code dans le ThisWorkbook puis dans une simple macro (Sub ess)


 
J'utilise la version XL 2002 SP3 mais ça ne doit pas changer entre les deux versions !
 
la définition de "protect" en tant que méthode est:
expression.Protect(Password, Structure, Windows)
où "expression" est à remplacer avec l'objet que tu veux protégéer ... ici par "thisworkbook".
Tous les paramètres de "protect" sont facultatifs.
 
la définition de "locked" en tant que propriété est:
expression.Locked
c'est un type de donnée variant en lecture-écriture.
Voici l'exemple tiré du help de excel VB:
Worksheets("Sheet1" ).Range("A1:G37" ).Locked = False
 
Pour le code, il doit être dans "workbook_open" du module "thisworkbook" et être le seul workbook_open du module.
Les macros doivent être activées lors de l'ouverture du workbook.
 
Tu peux exécuter la fonction pas à pas pour cerner d'avantage l'erreur qui se produit pour toi et la poster ici.
 
@+ Vobiscum


---------------
Ce qui est affirmé sans preuve peut être nié sans preuve.
Reply

Marsh Posté le 14-11-2005 à 08:55:40    

merci vobiscum

Reply

Marsh Posté le 14-11-2005 à 09:07:40    

et merci Pgreg

Reply

Marsh Posté le 14-11-2005 à 09:16:10    

Le code marche à condition que la feuille ne soit pas préalablement protégée!
sinon ça plante! il y a 1 solution ?????
(ps j'ai excel 2003)

Reply

Marsh Posté le 14-11-2005 à 09:16:10   

Reply

Marsh Posté le 14-11-2005 à 09:31:39    

oui, tu rajoutes:
sheets("Feuil1" ).unprotect
au début après la déprotection du workbook et:
sheets("Feuil1" ).protect
à la fin du code avant la protection du workbook
évidement il faut remplacer Feuil1 par le nom de la feuille qui est protégée


---------------
Ce qui est affirmé sans preuve peut être nié sans preuve.
Reply

Marsh Posté le 14-11-2005 à 09:44:10    

Problème résolu avec :
ActiveSheet.Protect
 
merci encore à tous les 2 !

Reply

Marsh Posté le 14-11-2005 à 12:56:11    

oups! je viens de voir un bug:
si tu fais un "enregistrer sous" en changeant de nom de fichier, la date de création n'est pas mise à jour, elle reste sur le fichier initial alors que cette date est bien mise à jour dans les attributs du fichier dans l'explorateur!

Reply

Marsh Posté le 14-11-2005 à 18:24:00    

Salut,  
 
Effectivement, il ya un bug. Voilà ce que tu pourrait mettre avant de copier ton fochier :  
 
1 ThisWorkbook.BuiltinDocumentProperties("Creation Date" ).Value = ThisWorkbook.BuiltinDocumentProperties("Last Save Time" ).Value
 
2 Range("A2" ) = ThisWorkbook.BuiltinDocumentProperties("Creation Date" ).Value
 
J' éspere que ça va marcher pour toi.
(Attention! Annule La ligne1 après.)
 

Reply

Sujets relatifs:

Leave a Replay

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