Protection Macro et Protection cellule de feuille

Bonjour,

Je sollicite de l'aide auprès des connaisseurs s'il vous plait.

La protection de mes macros dans les propriétés empêche l'accès aux codes mais les boutons crées dans mes feuilles de calcules pour faire appel aux macros restent modifiables et lorsque je protège ma feuille pour éviter la modification de ces boutons macros sur ma feuille ou une modification quelconque (texte ou titre) ou simplement les cellules de ma feuille, plus rien ne fonctionne c'est un vrai casse tête.

Problème 1: Lorsque je protège ma feuille "ORODIS ENG LTD" je ne parviens pas a renseigner mes cases lorsque j'active le "Panel".

Le fctionnement est simple

1 panel

2 remplissage des cases

3 Save entry + choix date

4 la ligne se déplace vers le bas et je peux remplir la prochaine ligne.

Problème 2 : A l'ouverture du fichier et après avoir utilisé la touche "delete error "dans "panel", un problème avec le calendrier survient. Le calendrier s'ouvre deux fois. La première fois je le ferme et la seconde fois je rentre la date souhaitée. Sinon la première date sélectionnée se met dans une case aléatoire. Après cela, tout fonctionne correctement.

Je ne suis pas une bete en VBA, débutant depuis quelques jours, merci de simplifier les équations pour ma compréhension SVP.

Bonjour,

Pour protéger seulement cette feuille et permettre aux macros de s'exécuter mettre cette macro dans le module "ThisWorkbook" :

Private Sub Workbook_Open()
   Worksheets("ORODIS ENG LTD").Protect "galopin", , , , , True
End Sub

...en remplaçant "galopin" par ton mot de passe.

La macro prend effet dès son exécution ou dès l'ouverture du classeur et jusqu'à la fermeture.

Important : Le code doit être particulièrement "léché" car en cas d'erreur cette instruction est volatile et les macros ne peuvent plus s'exécuter, il faut donc relancer le classeur en cas de plantage....

A+

Bonjour,

Merci de ta reactive.

Jai teste La protection fonctionne, mais une fois celle ci activee, les macros ne fonctionnent plus, Cest a dire que lorsque Je clic sur "panel " Je ne parviens pas a remplir mon tableau de bord et la touche "memo" ne fonctionne pas.

Lorsque je desactive la protection, les macros fonctionnent mais un clic droite sur mes 3 touches permet de les modifier et je voudrai eviter cela.

Merci.

Bonsoir Starr (et Galopin),

Cela ne fonctionne pas, parce que Galopin, dans sa précipitation à secourir les Excelliens en détresse, et dans un élan de générosité, ta offert 5 virgules au prix de 4...

Voici le bon code :

Private Sub Workbook_Open()
   Worksheets(1).Protect "galopin", , , , True
End Sub

Que tu peux aussi écrire de cette façon :

Private Sub Workbook_Open()
   Worksheets(1).Protect Password:="galopin", UserInterfaceOnly:=True
End Sub

Ca fonctionne a merveille. Merci bcp.

Il reste le probleme deux maintenant.

Merci.

Le problème deux, c'est le clic droit sur un bouton qui affiche le menu contextuel qui permet d'accéder au propriété de ce bouton ? Je ne comprend pas trop... La seule solution est de protéger la feuille !

Non Cest deja regle avec le code q tu m as Donne. Le probleme n°2 Cest autre chose :

Problème 2 : A l'ouverture du fichier, le premier remplissage du tableau de bord via "panel " et après avoir utilisé la touche "delete error "dans "panel", un problème avec le calendrier survient. Le calendrier s'ouvre deux fois. La première fois je le ferme et la seconde fois je rentre la date souhaitée. Sinon la première date sélectionnée se met dans une case aléatoire. Après cela, tout fonctionne correctement.

Benead a écrit :

Cela ne fonctionne pas, parce que Galopin, dans sa précipitation...

Bonjour Benead,

Ce n'est pas de la précipitation : C'est tout simplement que dans cette forme, mon Excel (2010) requiert cette syntaxe...

Bonjour Starr,

N'ayant pas 2007, je n'ai pas non plus le control Calendar je ne peux donc pas tester cette construction. Voir avec Benead.

A+

Bonjour,

Merci Galopin.

Benead, je reste l ecoute.

Merci.

Bonjour,

Galopin, je me doute bien que ce n'est pas réellement de la précipitation, quoique, à la vue de ton nombre de messages, je suppose, que le soir en arrivant chez toi, tu vas direct à l'ordi lire tes mails et répondre aux posts d'Excel Pratique.

Par contre, tu me surprends en disant qu'avec Excel 2010, VBE te met 5 virgules. J'essayerai ce soir car j'ai aussi 2010 FR sur mon ordi perso, et je suis persuadé qu'il n'y en a que 4. La réponse que j'ai faite hier a été validée avec la version d'Excel 2013.

Tiens-nous au courant.

Starr, la prochaine fois, essaie d'être encore plus précis dans tes explications, car tu as deux calendriers : Userform2 et Userform3, déjà un seul suffit, même si tu l'affiches sur les deux feuilles ; donc du as deux calendriers que tu affiches de 3 façons différentes : j'ai eu du mal à m'y retrouver.

J'ai quand même réussi à reproduire le problème :

Quand l'UF1 est affiché et qu'on clique sur le bouton Delete error, la cellule active devient obligatoirement A3, car on sélectionne la plage "A3:L3" :

Private Sub CommandButton2_Click()
   Range("A3:L3").Select
   Selection.ClearContents
End Sub

Puis quand on clique sur le bouton "save entry", l'événement du bouton est déclanché et ce code est exécuté :

Private Sub CommandButton1_Click()
   ' Chargement en mémoire du formulaire UF2 grâce à l'événement UserForm_Initialize(), mais Load n'affiche pas le formulaire
1  Load UserForm2
   ' Initialisation du formulaire s'il n'a pas été chargé préalablement (Load) et affichage
2  UserForm2.Show
   ' Activation de seconde ligne de la feuille
3  Rows("2:2").Select
         ' IMPORTANT : La feuille contient l'événement Worksheet_SelectionChange
         ' qui affiche le formulaire si la cellule A2 est sélectionnée

   ' Insertion d'une nouvelle ligne (la ligne 2 descend en ligne 3)
4  Selection.Insert Shift:=x1Down, copyorigin:=x1FormatFromLeftOrAbove
   ' Déchargement de l'UF1 de la mémoire
5  Unload UserForm1
   ' Chargement en mémoire du formulaire UF1 grâce à l'événement UserForm_Initialize(), mais Load n'affiche pas le formulaire
6  Load UserForm1
   ' Initialisation du formulaire UF1 s'il n'a pas été chargé préalablement (Load) et affichage
7  UserForm1.Show
End Sub

Ligne 1 et 6 : Load n'a pas d'intérêt dans notre cas, UserForm2.Show se charge de faire le Load s'il n'est pas en mémoire.

Ligne 2 : Le calendrier s'affiche pour la première fois... Le code s'arrête jusque ce qu'on choisisse une date ou que l'on clique sur la croix. Si on choisi une date, elle se mets en A3.

Ligne 3 : on sélectionne la ligne 2 de la feuille active : l'événement Worksheet_SelectionChange affiche une seconde fois le calendrier :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   If Not Application.Intersect(Target, Range("A2")) Is Nothing Then
      UserForm2.Show
   End If
End Sub

Si on choisi une date, elle se met en A2.

Ligne 4 : Déchargement de l'Userfom1... ce formulaire est le formulaire actif, le formulaire dans lequel ce code s'exécute, c'est comme si on coupait la branche d'un arbre sur laquelle on était assis !

Lignes 5 : aucune utilité (est implicitement fait par la ligne 6).

Pour corrigé le problème, voici ma proposition :

1 - Ajout de l'évémement UserForm_Initialize() :

Private Sub UserForm_Initialize()
  Application.EnableEvents = False ' Désactivation des événements
   Rows(2).Select ' Sélection de la ligne 2
   Application.EnableEvents = True  ' Réactivation des événements
End Sub

2 - Modification de l'événement du bouton delete error

Private Sub CommandButton2_Click()
   Range("A3:l3").ClearContents
End Sub

3 - Modification de l'événement du bouton Save entry :

Private Sub CommandButton1_Click()
0  Dim Ctrl As Control
   ' Initialisation du formulaire s'il n'a pas été chargé préalablement (Load) et affichage
1  UserForm2.Show
   ' Insertion d'une nouvelle ligne (la ligne 2 descend en ligne 3)
2  Rows("2:2").Insert Shift:=x1Down, copyorigin:=x1FormatFromLeftOrAbove
   ' Effacement du contenu des TextBox
3  For Each Ctrl In Me.Controls
4     If TypeName(Ctrl) = "TextBox" Then Ctrl.Value = Empty
5  Next Ctrl
End Sub

Les lignes 3, 4 et 5 bouclent sur les tous les TextBox pour les vider, cette opération était faite, auparavant, par le déchargement de l'UF.

Bonjour,

Franchement merci pour tt ce travail et du temps consacre.

On ne peut pas etre aussi precis. Fort de mes Quelq jours d apprentissage, jai bien compris tes commentaires mais pour ce qui est des codes et leur insertions dans le vba jai encore surtout du travail sur la planche. De ce fait jai bcp d'erreurs de compilation que Je ne parviens pas a corriger. Je ne sais pas non plus si jai insere les codes aux bons endroits.

I need helllllp.

Thanks.

Bonjour Starr,

Je t'avais dit exactement ce qu'il fallait faire, je préfère cette méthode plutôt que de le faire, mais visiblement tu as quelques difficultés pour mettre en place mes conseils. Tu touveras donc le fichier en pièce jointe.

Bonjour,

Franchement jai rien a dire le fichier est impeccable et fonctione Tres bien.

Merci pour tout, de votre dispo a tous les deux et surtout du temps que vous m'avez consacres .

Je voudrai vous exposer le dernier point a corriger:

Apres avoir utilisee la touche "delete error " Les donnees de la ligne 3 de 'A a L' sont bien supprimees.

Mais lorsq Je rentre une nouvelle donnee, elle ne se met pas dans la ligne supprimee precedement mais dans une ligne differente et fait basculer vers le bas la ligne dont les donnees ont ete supprimee. Ce qui cree un espace vide a chaque utilisation de "delete error "

Merci bcp.

Bonjour Starr,

En fait au lieu d'effacer le contenu il faut supprimer la ligne :

Private Sub CommandButton2_Click()
'   Range("A3:l3").ClearContents
   Rows(3).Delete
End Sub

Il faut juste que tu remplace la ligne ClearContents par la ligne en surbrillance

Bonjour,

Merci bcp. Je vais tester ce soir....

Bonjour,

Je m'excuse pour ma longue absence sans nouvelle (déménagement).

je viens de testé le fichier et c'est impec. ca fonctionne très bien.

franchement merci pour votre aide à (galopin01 et à Benead).

Je souhaiterai apprendre et faire des programmes comme vous le faites j'en suis vraiment intéressé, avez vous des recommandations de bouquin ou de site ? en plus de celui-ci ?

Merci par avance

Re-Bonjour,

j'ai encore un petit souci avec une macro c'est " Memo"

Dans la page " ORODIS ENG LTD" cette macro " Memo" ne fonctionne pas lorsque la feuille est protégée.

Dans la page "Tomono" j'ai du activé "modifier les objets" tout en bas dans l'option "protéger la feuille" dans Excel.

Comment pourrai ton remédier a cela.

Bonjour Benead,

Par manque d internet, je ne parviens plus a me connecter (demenagement / amenagement ). Jai encore besoin de toi des que tu as un moment de libre s'il te plait.

j'ai encore un petit souci avec une macro c'est " Memo"Dans la page " ORODIS ENG LTD" cette macro " Memo" ne fonctionne pas lorsque la feuille est protégée.Dans la page "Tomono" j'ai du activé "modifier les objets" tout en bas dans l'option "protéger la feuille" dans Excel.Comment peut on corriger le probleme.

Merci par avance.

Rechercher des sujets similaires à "protection macro feuille"