Question macro et feuille en mode protégé - nouvelle questio

Bonjour,

je suis sous office 2010.

J'ai créé un tableau (formulaire) avec plusieurs sortes de colonnes dont une avec le code postal canadien (ex : G6X 2B8). On m'a aidé ici à créer une macro pour s'assurer que les lettres soient au bon endroit, en majuscules et également les chiffres car notre code postal est toujours : une lettre, un chiffre, une lettre, espace, un chiffre, une lettre et un chiffre.

Maintenant, lorsque je met mon chiffrier en mode protégé et que j'enregistre en ma feuille en mode non macro, la cellule ne fonctionne plus (mais avant de protégé, ça fonctionnait) et si j'enregistre le fichier en excel qui prend en charge macro et que j'active la protection des cellules, il me dit qu'il y a un bug dans ma macro et avant la protection, je n'avais pas ce problème.

Pouvez-vous m'aider ?

Merci

Trinitybarb

Bonjour Trinitybarb,

Sans fichier ou exemple, c'est difficile de répondre mais si c'est ce que je pense, il te faut "déprotéger ta feuille" pour y insérer des données.

Par exemple, si tu insères tes données grâce à l'évènement CommandButton1_Click(), tu peux essayer la chose suivante :

Private Sub CommandButton1_Click()

Sheets("NomDeTaFeuille").Unprotect 'Avec NomDeTaFeuille le nom de la feuille à déprotéger

'ICI ton code

Sheets("NomDeTaFeuille").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True' Protection classique de la feuille (tu peux t'aider de l'enregitreur de macros si tu souhaites autoriser aux utilisateurs d'autres modifications)

Unload Me' Ferme le formulaire

End Sub

Ainsi, La macro déprotège la feuille pour insérer les données et la reprotège une fois les données insérées.

En espérant que c'est ce que tu cherchais ! A te lire,

JS

Le formulaire que j'ai créé est protégé mais il y a des champs qui sont libre à être complété par les personnes à qui je vais les envoyer. Donc toutes les parties qu'ils doivent compléter n'est pas protégé mais le reste oui pour qu'il ne touche pas aux entêtes, etc...

La colonne qui a la macro n'est pas protégé car ils doivent la compléter, voici la macro en question :

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Rg As Range
Set Rg = Intersect(Target, Columns(16))
Application.EnableEvents = False
If Not Rg Is Nothing Then
    For Each c In Rg
        c.Value = UCase(Application.Trim(c))
        If c.Value Like "[A-Z][0-9][A-Z] [0-9][A-Z][0-9]" Or _
            c.Value Like "[A-Z][0-9][A-Z][0-9][A-Z][0-9­]" Then
            c.Value = Left(c, 3) & " " & Right(c, 3)
            c.Interior.ColorIndex = xlNone
            c.Font.ColorIndex = xlAutomatic
        ElseIf c.Value <> "" Then
            MsgBox "la saisie du code postal est inexacte"
            c.Interior.ColorIndex = 3
            c.Font.ColorIndex = 2
        Else
            c.Interior.ColorIndex = xlNone
            c.Font.ColorIndex = xlAutomatic
        End If
    Next
End If
Application.EnableEvents = True
End Sub

Je ne peux laisser ma feuille non protéger. J'imagine qu'il n'y a rien à faire ....

Merci encore pour votre aide.

Trinitybarb,

Je pense qu'il y a un moyen très simple de résoudre ton problème.

Si j'ai bien compris, pour la colonne "16" de ton fichier, tu as pris soin de faire Format de cellule --> Onglet Protection --> Décocher Vérouillée.

Donc maintenant, lorsque tu protèges ta feuille, il te suffit de cocher "Format de cellule" dans la liste des autorisations, ainsi ta macro ne doit pas te retourner d'erreurs.

Par contre je viens de relire ton premier message :

Trinitybarb a écrit :

lorsque je met mon chiffrier en mode protégé et que j'enregistre en ma feuille en mode non macro, la cellule ne fonctionne plus

Ca par contre c'est normal, si tu enregistres un fichier dans un format qui n'accepte pas les macros. AUCUNE macro ne fonctionnera !

J'espère que tu as pu solutionner ton problème !

JS

Ah ok super !!! Je vais faire des tests

Merci pour votre aide qui est très appréciée !

Avec plaisir !

Tiens nous au courant !

Si je veux protéger ma 16e colonne mais de la ligne 1 à 12 et que je veux que ma macro agisse seulement sur les lignes 13 jusqu'à environ la ligne 500, comment dois-je modifier ma macro ??

Merci pour votre aide. Je ne suis pas encore experte en programmation VBA mais je m'y mets

Trinitybarb,

En ce qui concerne la protection des cellules dans ton cas, tu n'as pas besoin de modifier ta macro :

Tu sélectionnes les cellules 1 à 12 de ta 16e colonne, Puis Format de cellule --> Onglet Protection --> Cocher Vérouillée.

Ensuite tu sélectionnes tes celulles à partir de la ligne 13 à "ou tu veux" (tu peux faire Ctrl+Maj + flèche du bas pour sélectionner jusqu'à la fin de la colonne), Puis Format de cellule --> Onglet Protection --> Décocher Vérouillée.

Et n'oublies pas de cocher "Format de cellule" dans la liste des autorisations lorsque tu protèges ta feuille !

ok parfait. Je pensais que je ne pouvais pas du tout vérrouiller des cellules dans la colonne 16.

Tout fonctionne parfaitement.

un gros gros merci

Rechercher des sujets similaires à "question macro feuille mode protege nouvelle questio"