Verrouillage/déverrouillage après une macro

bonjour,

j'utilise la macro ci-dessous pour pour exécuter un filtre de colonne. Je voudrais qu'a la suite de cette macro l'onglet se verrouille si le filtre à été lancé alors que l'onglet était verrouillé et inversement qu'il se déverrouille si le filtre à été lancé alors que l'onglet était déverrouille.

d'avance merci.

Private Sub CheckBox1_Click()

If CheckBox1.Value = True Then

For x = 2 To 70

If Cells(7, x) = EECL Then

Columns(x).EntireColumn.Hidden = True

End If

Next x

End If

If CheckBox1.Value = False Then

For x = 2 To 70

Columns(x).EntireColumn.Hidden = False

Next x

End If

End Sub

bonsoir

a tester :

Private Sub CheckBox1_Click()
ActiveSheet.Unprotect

If CheckBox1.Value = True Then

For x = 2 To 70
If Cells(7, x) = EECL Then
Columns(x).EntireColumn.Hidden = True

End If

Next x
ActiveSheet.Protect
End If

If CheckBox1.Value = False Then

For x = 2 To 70

Columns(x).EntireColumn.Hidden = False

Next x

End If

End Sub

fred

Bonjour et merci pour votre réponse,

ce n'est pas exactement ce qu'il me fallait:

Le problème est que si je fait un filtre avec la feuille non verrouillée, elle se retrouve verrouillée et je ne peut plus la modifier. je suis alors obligé de défaire le filtre pour avoir la feuille déverrouillée.

A l'inverse si la feuille est verrouillée et que je fait le filtre, la feuille se retrouve déverrouillée et là n'importe qui peu la modifier.

Donc effectivement vous avez trouvé la solution pour revenir a l'état initiale après activation et désactivation du filtre mais il faudrait supprimer le changement d'état intermédiaire.

slts.

correction:

partant de la feuille déverrouillée, c'est bien ce qui se passe.

En revanche partant de la feuille verrouillée, je filtre te la feuille reste verrouillée, je défais le filtre et la feuille se retrouve déverrouillée

bonjour

on va essaye de synthétisé pour être sur du résultat attendu :

depart :

feuille NON vérouillée => execution de la macro => a la fin la feuille est vérouillée

ou

feuille vérouillée => execution de la macro => à la fin la feuille est NON vérouillée

est-ce bien ceci ???

fred

non désolé:

"feuille NONvérouillée => execution de la macro => a la fin la feuille est vérouillée

feuille NON vérouillée => execution de la macro => à la fin la feuille est NON vérouillée"

et dans "executer la macro" je dirais "activation puis désactivation du filtre".

re

sans fichier a tester difficile de comprendre :

mais voici donc une proposition

Public Function Protection(wks As Worksheet) As Boolean
Protection = wks.ProtectContents
End Function
Private Sub CheckBox1_Click()
Dim test As Boolean

test = Protection(ActiveSheet)
ActiveSheet.Unprotect

If CheckBox1.Value = True Then
    For x = 2 To 70
        If Cells(7, x) = EECL Then Columns(x).EntireColumn.Hidden = True
    Next x
End If

If CheckBox1.Value = False Then
    For x = 2 To 70
        Columns(x).EntireColumn.Hidden = False
    Next x
End If

If test = True Then ActiveSheet.Protect
End Sub

une remarque cependant tu n'as pas l'air de faire tes déclarations de variables... il faudrait corriger cela..

fred

Bonjour et merci pour votre aide.

En faisant un copier coller du code, voici le message d'erreur qui apparaît lorsque je clic sur "enregistrer".

"erreur de compilation

le membre existe déjà dans un module objet dont le présent module est activé"

slts.

quelqu'un aurait une réponse?

bonjour

actuellement en déplacement je n'ais pas d'ordinateur avec excel dessus pour voir ce qui cloche

c'est le problème quand on ne fournit pas de fichier test, on ne peut pas garantir le bon fonctionnement d'une macro.

j'aurais de nouveau un pc avec excel la semaine prochaine

Fred

ok pas de problème

bonsoir

il me faudrait un fichier test pour voir d'ou vient le problème

fred

Bonjour,

voici un fichier pour test.

merci pour votre aide.

cordialement.

bonsoir

donc voici une proposition refaire de A à Z.... et qui a priori correspond point par point au fichier original mais avec la gestion de la feuille verrouillée ou pas au moment de l'application des filtres.

avec des déclarations plus propres, .......

j'ai apporté aussi une modification car dans la version originale si on appliquait deux filtres en même temps et que l'on désactivait un des deux filtres toutes les colonnes s'affichait sans tenir compte du filtre encore actif....

dans la version proposée lorsque que l'on désactive le deuxième filtre, le premier est toujours d'actualité...

fred

Bonjour MONSIEUR Fred.

Vraiment, un grand merci pour votre aide.

Je ne manquerai pas de promouvoir votre site.

Bonne continuation.

Au plaisir de vous relire.

Bonjour

Si la solution convient

merci de clôturer le sujet en le mettant résolu en cliquant sur le petit V en vert

Fred

Bonjour,

je reviens vers vous car les filtres ne fonctionnent plus en mode verrouillé

je ne sais pas ce qu'il s'est passé.

cordialement.

bonsoir

et pour cause il y a un mot de passe sur le devrouillage

alors que la macro déverrouillait sans mot de passe d'ou la plantage ....

pour que cela fonctionne il faut que le mot de passe soit inscrit en dure dans la macro.... et donc modifier encore une fois le code....

mais je précise tout de suite... casser un mot de passe de verrouillage Excel prend 10s a une personne expérimentée...

Fred

OK mais si ça a marché. pourquoi ça ne marche plus?

pour modifier le code, le mot de passe est "system17"

oui cela a marcher car il n'y avait pas de mot de passe simplement verrouillé quand tu mets en plus un MDP il faut que la macro connaisse ce MDP pour pouvoir deverouillé sinon pas possible

ci joint le code modifié...

j'ai mis le meme MDP sur le VBA project

car sinon tout le monde peut consulter le code et avoir le MDP

Fred

Rechercher des sujets similaires à "verrouillage deverrouillage macro"