Verrouiller cellule à la sauvegarde

Ardberg Messages postés 7 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 3 juin 2009 - 17 avril 2008 à 17:44
Ardberg Messages postés 7 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 3 juin 2009 - 21 avril 2008 à 11:30
Bonjour,

J'ai besoin de votre aide pour protéger un fichier excel que l'on me demande de faire au boulot. J'ai auparavant fait des recherches et j'ai réussi à trouver une commande me permettant de verrouiller, dans une feuille excel, les cellules après saisie. Mais après reflexion il serait plus judicieux de le faire à la sauvegarde du fichier. Comment faire pour, lors de la sauvegarde du fichier, verrouiller toutes les cellules non vides d'une feuille?

Merci d'avance

8 réponses

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 13
17 avril 2008 à 18:34
Salut,

utilise WorkSheets("feuil1").Protect dans l'evenement Workbook_BeforeSave de ThisWorkBook.
0
Ardberg Messages postés 7 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 3 juin 2009
17 avril 2008 à 20:06
Merci pour ta, très rapide, réponse. Je précise un peu mon problème (je suis un vrai novice)

Voilà le code que j'ai :

Sub Workbook_Beforesave()


    Worksheets("feuil1").Unprotect ("cs")
    'cellules non vides'.Locked = True
    Worksheets("feuil1").Protect ("cs3")
    End If
   
End Sub


J'espère qu'il  n'est pas trop faux par rapport à mon problème. 

Je veux savoir comment exprimer que seules les cellules vides de la feuille doivent être verrouiller.
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 13
17 avril 2008 à 20:55
...

TOUTE LES CELLULES VIDES !!! ouaaahhouuuuu !!!

bon imagine que meme si tu utilises 5000 cellules et c'est deja pas mal, le reste cela represente 60535 x 256 cellules.

il vaudrait mieux te limiter a une zone car ce type de manipe grossi grandement la taille du fichier pour rien.
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 13
17 avril 2008 à 21:50
...

un peu fatiguer moi .

En fait toute les cellules sont protégées par defaut quand tu protege la feuille donc la question ne ce pose pas.
il faut donc reflechir au probleme autrement. En fait ce qu'il faut faire c'est deverouillé toute les cellules non vide.

Mais faire une recherche sur toutes les cellules pour verifié si elle sont vide c'est pas tres rapide comme methode.
Cela revient quand meme a ce que je t'es dit dans ma reponse precedente (meme si j'ai dit une con...rie), il faut
que tu definisses la plage dans la quelle on vas faire cette verif.

A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ardberg Messages postés 7 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 3 juin 2009
18 avril 2008 à 08:33
Ok je commence a y voir un peu plus clair. En fait il faut que je scrute mon tableau en utilisant une boucle qui s'incrémente à chaque tour et se déplace d'une case. J'ai de récentes notions en Pascal sur Delphi mais VB reste encore flou pour moi. Que dois-je mettre dans les parenthèses après la section WorkBook_BeforeSave()? Comment je déclare que les adresses de mes cellules correspondent à des variables que je vais incrémenter?
0
Ardberg Messages postés 7 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 3 juin 2009
18 avril 2008 à 08:45
J'ai tenter ca mais ca ne marche pas!!

Sub Workbook_beforesave()

For Each Cells In Range("Suivi!A4:J1000")

If Cells.Text <> 0 Then
ActiveSheet.Unprotect ("cs")
Cells.Locked = True
ActiveSheet.Protect ("cs")
End If

Exit For

End Sub
0
Ardberg Messages postés 7 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 3 juin 2009
18 avril 2008 à 12:00
Voici le code qui fonctionne pour verrouiller les cellules après la saisie,
si quelqu'un qui maitrise bien la chose pourrait me dire les modifications a apporter pour agir sur les cellules non vides avant l'enregistrement...

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Text <> 0 Then
ActiveSheet.Unprotect ("cs")
Target.Locked = True
ActiveSheet.Protect ("cs")
End If
End Sub
0
Ardberg Messages postés 7 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 3 juin 2009
21 avril 2008 à 11:30
Pour faire remonter mon post.

Cherche expert VB excel pour répondre à mon problème
0