Protection de feuille pose probleme au code VBA

bonsoir,

dans un bout de code (dans worksheet_activate) que j'ai fait ces quelques ligne génèrent un bug comme quoi la feuille est protégé et ne peut être modifier; pourtant je précise bien que j’enlève la protection avant d'agir :

Private Sub Worksheet_Activate()

Set sh1 = Sheets("Feuil")

sh1.Unprotect "MDP"

For i = 2 To 500

If sh1.Range("C" & i).Value <= 0 Or sh1.Range("C" & i).Value = "" Then

sh1.Range("K" & i).ClearContents........................................le debogeur signale l'erreur ici ???

End If

Next

sh1.protect "MDP"

end sub

vous en pensez quoi SVP ?

'

Bonjour

Une chose qui cloche c'est le titre du sujet !!

Merci de l'éditer et de mettre un sujet qui correspond à votre demande

Lire ces quelque lignes qui vous aideront aussi sur ce forum --> https://forum.excel-pratique.com/annonces/explications-et-regles-a-respecter-t13.html

Cordialement

milles excuses , voila c'est fait

et merci d'y avoir prêter attention

Bonjour addou

Un essai à tester...

Private Sub Worksheet_Activate()

    Set sh1 = Sheets("Feuil1")  ' Nom de la feuille à préciser en fonction du classeur !!!

    With sh1
        .Unprotect "MDP"
        For i = 2 To 500
            If .Range("C" & i).Value <= 0 Or .Range("C" & i).Value = "" Then
                .Range("K" & i) = "" 'le debogeur signale l'erreur ici ???
            End If
        Next
        .Protect "MDP"
    End With

End Sub

Bonjour

Merci d'avoir édité votre message

Il faudrait voir le fichier pour comprendre pourquoi vous avez ce bug. La colonne K comporte des données ou des formules ?

Sinon essayez le code proposé par NCC1701 ou mettez un CLEAR à la place de CLEARCONTENTS dans votre code.

Cordialement

Bonsoir a tous,

voila le fichier en question tel que Dan me l'a demandé

j'ai enlevé le mdp de la feuille une et celui du classeur pour confirmer que tout s’exécute normalement si le mdp n'y est pas et c'est le cas

le mdp de la feuil2 au besoin est TXT

j'ai remplis le fichier avec quelques données afin de facilité le teste si vous deviez voir d’abord ce que ça donne ; veuillez enregistrer deux fois le fichier

dans l'un d'eux empêchez l’exécution du code (classeur A)

dans le deuxieme (classeur B) et après inspection du code exécutez ce dernier ( worksheet) relatif a la feuil1 (change et activate) afin de voir le resultat

mettez un mdp a la feuil1 du classeur dont les macro ont été désactivées (classeur A) puis ré-activez les pour voir apparaitre les dit bug

merci, je reste dans l'attente

bonsoir bonsoir;

j'ai fait quelques modifications a mon fichier et le résultat est concluant sauf que parfois Excel plante !!!

pourriez vous me conseillé une solution ou une autre manière de procéder ???

Re

En fait j'arrive pas trop à voir ce que vous voulez faire et j'ai pas trop envie de chercher .. .

Si excel plante, donnez un exemple que je reproduise ce qui se passe

Pourquoi avoir un fichier classeur A et un fichier classeur B

Crdlt

Bonjour,

si tu travailles sur plusieurs classeurs il faut préciser le classeur utilisé (Set sh1 = workbooks("xxx").Sheets("Feuil1") ), sinon tu t'adresses à l'actif qui n'est peut-être pas le bon.

eric

PS : et je vois que tu es sur 2016. Depuis 2013 et la gestion SDI des fenêtres, excel à des soucis pour pour activer complètement une feuille si tu fais des .visible=x, d'autant plus si c'est avec un userform ouvert.

merci pour vos réponses ; je travaille un peu tout cela pour rendre plus efficace et je re vers vous afin de mieux vos exposer mon hic , en tout cas j'essayerais de le faire le plus clairement possible

en ce qui concerne les deux classeurs c'est juste une erreur d'explication de ma part je ne travail qu'avec un seul fichier

merci beaucoup, je vous tiens au courant de la suite

voila;

comme convenu j'ai préparé tout mes scénarios, mis toutes mes mise en forme conditionnelles

précisé toutes les cellules a verrouiller grâce au format de cellule

j'ai enregistré le fichier a la feuille 2 et désactivé l'événement workbook_open , pour qu'a l'ouverture ce dernier présente les données des scénarios en feuil2 avec résultat attendu

problématique

1. lorsque j'active la feuil1 (ce qui déclenche l'événement worksheet_activate) cela fait planté Excel

2. j'aimerai mettre une protection des feuilles et du classeur sans que cela ne fasse planté le code VBA des dites feuilles

Heuuu, c'est quoi le rapport avec ta question sur la protection des feuilles ?

Il n'y a aucun Protect dans ton code (?!?)

Par ailleurs quand je vois une boucle sur 500 lignes (sans se limiter au nécessaire), lisant et écrivant une à une les cellules dans un Change et un Selection_Change ça m'inquiète.

Tout ça en collant de bout de code piochés à droite et à gauche...

Tu m'étonnes qu'il faille attendre 10s pour une activation de feuille et 3s pour une simple sélection de cellule.

Désolé mais ton fichier ne m'inspire pas du tout.

Là il faut que tu repenses le fonctionnement de ton fichier, et que tu acquiers un peu plus de bases sur la programmation sur vba.

A commencer par l'utilisation des variables tableaux. Google est plein de tutos.

Une bonne nouvelle pour finir : ça n'a pas planté chez moi.

eric

Rechercher des sujets similaires à "protection feuille pose probleme code vba"