Plusieurs "Protections personnelles" dans une feuille ?
Re,
Fonctionne tout a fait normalement sur 2007.
Si tu veux tu peu le sauver en xlsm pour que ce ne soit plus en 'compatible" sinon ça change rien.
Concernant l'UF choix qui vient en premier, je l'ai eu une fois, après je l'ai tester en long et en large et pus moyen de reproduire cette erreur donc pas moyen de la détecter.
A+
Bonjour Banzaîe et Lermite, et autres visiteurs
Je lis que tu rencontres aussi ce problème (fenêtre de saisie du nom qui apparait au début alors qu'elle n'a pas été appelée !) avec Excel2003 !
Je pensais que c'était du au fait que je l'utilisais sur E2007 !
(J'ai essayé rapidement hier soir en rentrant du boulot sur Excel2003 et je n'ai pas eu ce défaut d'où j'en ai déduis erronément que ça allait bien sur 2003).
Il ne s'agit donc pas d'une adaptation à faire pour Excel 2007 !
Le problème est que ce défaut n'est en effet pas systématique !?
J'avais essayé de contourner ce problème en forçant le curseur à aller en A1, par exemple, dès l'ouverture du fichier pour éviter le 'scannage" de la zone de saisie qui provoque cette fenêtre du Nom.
Peut être essayer de dégager le pointeur vers A1 dès qu'une saisie de nom a été effectuée ??
Qu'en penses tu ?
Rien de plus rageant que des pannes "intermitantes" ! J'ai passé des heures hier soir à essayer de comprendre pourquoi... en vain, car la structure du programme et l'ordre des appels aux fenêtres de saisie semblent corrects !???
J'avais essayé en ne masquant pas les onglets et ça semblait fonctionner mais j'ai pas eu le temps d'aller plus loin.
Je continuerai lundi sur la bécane avec Excel 2007.
Espérons avoir un éclaircissement de l'Equipe de ce Forum d'ici là
Merci à Tous.
Z.
Bonjour
zorgloub a écrit :Peut être essayer de dégager le pointeur vers A1 dès qu'une saisie de nom a été effectuée ??
Dans le code de la macro ComboBox1_Change de l'userform Usf_Nom rajoutes la ligne en surlignée
Private Sub ComboBox1_Change()
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
ActiveCell = Me.ComboBox1
Range("A1").Select
Unload Me
End SubBonjour tous,
Ce que j'ai remarqué quand le phénomène c'est produit : J'ai fermé le classeur : message sauver oui/non -> oui.
C'est cette fois là que je l'ai constaté à la réouverture.
Peut être supprimer le Before_Save qui fait exactement la même chose que le Open, qui fait donc double emploi ? ou l'inverse ?
A+
Bonjour
J'ai essayé de faire du pas-à-pas
A l'ouverture lors de l'exécution de la macro "Protection",
En principe 2 cas
Si à la fermeture précédente la cellule qui était sélectionné est maintenant verrouillée , la cellule active se déplace et bien sur déclenche l'évènement "Worksheet_SelectionChange" de la page "Vacances"
Si à la fermeture précédente la cellule qui était sélectionné est toujours déverrouillée il n'y a pas ce déplacement et tout se passe bien
Pour s'en rendre compte
Dans la macro ComboBox1_Change de l'userform Usf_Nom rajoutes la ligne en surlignée
Private Sub ComboBox1_Change()
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
ActiveCell = Me.ComboBox1
Range("A1").Select
Unload Me
End SubEnsuite dans la macro Protection dans le module Module1, mets en remarque la ligne
EnCours = TrueEnsuite fais une réservation : tu dois voir la cellule A1 sélectionnée
Enregistres, fermes et ouvre le programme
Normalement tu vas avoir l'userform Usf_Nom
Cette version corrige en principe ce défaut (si je ne me suis pas planté)
Hello Banzaïe,
J'essaie la V.5 lundi matin mais ça sent la bonne voie
1) Qu'entends tu pas "Si à la fermeture précédente la cellule qui était sélectionné est maintenant verrouillée" ?
Bizarre quant même qu'à la fermeture du fichier, le fait que la dernière cellule sélectionnée, suivant qu'elle soit verrouillée ou non, chamboule l'appel aux fenêtres de saisie ! Non ?
(D'autant plus, que dès le début, le programme n'appelle jamais la saisie du Nom mais bien celle du Mot de Passe !)
2) Comment tu fais du "pas à pas". Pour ma part, je sème des MsgBox avec des balises informatives aux endroits stratégiques.
Parenthèse: Quand je programme des microcontrôleurs, certains programmes permettent de faire du véritable pas à pas. Est ce possible avec VBA Excel ?
Z.
Bonjour
Clic droit sur une cellule --> Format de cellule --> Onglet protection et las tu verras "verrouillée"
C'est cette propriété qui permet une fois la feuille protégée d'interdire/autoriser la modification de la cellule
zorgloub a écrit :Qu'entends tu pas "Si à la fermeture précédente la cellule qui était sélectionné est maintenant verrouillée" ?
compliqué à expliquer
Imagines qu'une fois un nom entrée dans une cellule, on déplace la cellule active sur A1 (qui est verrouillée)
On enregistre le classeur
On le ferme
Et on l'ouvre
Je crois (mais pas sur) qu'Excel (de lui même, parce qu'il en a envie, parce qu'il pleut/neige/soleil, parce qu' une option de protection lui dit etc..) lui demande de placer la sélection sur une cellule non verrouillée, et c'est ce changement de place qui appelle la macro "Worksheet_SelectionChange" qui appelle l'Usf_Nom
Pas d'explication plus convaincante
Si quelqu'un à une autre explication qu'il n'hésites pas à la partager
Testes le programme et vérifies que l'usf_Nom n'apparait plus
Coucou Banzaïe,
OK, j'avais pas capté mais je vois bien la notion de verrouillage que j'utilise d'ailleurs pour fermer les accès, aux utilisateurs, à des cellules comportant des formules après protection de la page !
Merci à toi.
---> Avec ton explication, on peut déduire qu'il est alors facile de "parquer" le pointeur sur une cellule qui ne serait pas verrouillée (A1, non verrouillée) avant de fermer le fichier.
A l'ouverture, le pointeur s'y retrouve sans passer "sur" le tableau de saisie.
Mais cela veut dire aussi que Excel va zieutter et bidouiller dans le fichier en premier lieu et donc avant la subroutine Private Sub Workbook_Open() qui se trouve à la racine "ThisWorkBook "du fichier !
Pour ma part, je pensais que cette procédure subroutine Private Sub Workbook_Open() s'effectuait en tout premier lieu, dès l'ouverture du fichier en avant toute opération quelconque par Excel
Z.
Bonjour à l'équipe.
La version 5 semble en effet bien stable. Merci
Une dernière question toutefois si c'est pas abuser
exemple: sélectionner les cases C15 à H15 et y placer toto en un seul coup (à condition bien sûr que personne d'autre que toto ne soit sur une de ces cases ).
Dans la version 1 il y avait dans la page des réservations une notion de sélection de plusieurs cases (mais le choix du menu ne s'appliquait toutefois que sur une seule de ces cases).
Merci.
Z.
Bonjour Banzaïe
Pfffffuittt ! Bluffed !
Plus rapide que son ombre !
Merci pour ta terrible efficacité !
Je pense qu'on a fait le tour complet là !
Encore quelques essais et je clôturerai le Post.
Mille mercisssss encore.
Z.
Bonjour Banzaïe, Bonjour à l'Equipe,
Super, le programme est stable !
Impeccable pour ce qui est de la saisie et la protection des réservations.
Pour être Parfait et « universel », je pensais qu’il serait intéressant d’ajouter à ce programme, un module de gestion du mot de passe.
En effet, actuellement, l’utilisateur doit fournir son mot de passe au Programmeur/Administrateur qui l’introduira lui-même dans l’onglet caché [Secret].
(Une telle routine plus avancée de gestion du mot de passe pourra d’ailleurs être utilisée dans d’autres programmes à accès contrôlé par Mot de Passe)
Je pensais à une routine de ce type ci :
A l’ouverture, l’utilisateur choisi normalement son nom dans le menu du usf_Mdp
Si Nom pas dans la liste : Msgbox (« Contactez l’administrateur pour introduction de votre nom »)
Si Nom est présent, le programme vérifie si un mot de passe a déjà été introduit.
Si non MsgBox (« Veuillez introduire votre mot de passe ») (A confirmer deux fois)
Si oui, Le Usf présente alors les options classiques Valider, Annuler mais aussi Changer Mot de Passe.
(Pour permettre, à son utilisateur, le changement de son mot de passe au fil du temps sans intervention de l'Administrateur)
Si introduction d’un nouveau mot de passe --> écriture « automatique » du nouveau mot de passe dans l’onglet [Secret] devant le nom de l’utilisateur (éventuellement après avoir vérifié que ce mot de passe n’est pas déjà utilisé par qlq’un d’autre).
L’Administrateur conserve tous les droits globaux.
Qu'en penses-tu ?
Merci.
Z.
Bonjour Banzaïe,
Je viens de tester mais le bouton « Changer le mot de Passe » ne déclenche aucun événement
En fait, deux cas pourront se présenter :
1) Tata n’a pas encore de mot de passe. (A noter que dans ce cas, il sait rentrer sans indiquer de mot de passe sauf si l’Administrateur a placé un mot inconnu de Tata. (Disons, par exemple, « NP » pour No Pass)
A l’ouverture, si le programme voit que le mot de passe de Toto est NP, il force la demande de nouveau mot de passe à Tata (sans lui demander un ancien qu’il n’a pas encore introduit).
2) Toto a déja un pass mais veut le changer après avoir bien sûr introduit son premier « ancien » Mot.
Si, dans la procédure Private Sub CommandButton1_Click() j’enlève la condition [If NomUser <> "" Then] on force l’ouverture de la usf_Changer le Pass mais le message d’erreur suivant apparait: ERREUR « 401 » Impossible d’afficher une feuille modale lorsqu’une feuille modale est affichée.
Si je fais un msgbox de debug au début de l'appel à la fenêtre de changement du PAss, je constate que, NomUser est vide malgré le fait que le nom a bien été saisi dans le menu de départ !
Cela est peut être du au fait qu’on a pas encore appuyé sur « Valider ».
Mais si on valide on rentre dans la grille et on n’a plus accès au changement de PAss…
Le message d'erreur me fait penser qu'il faudrait désactiver la première fenêtre de saisie lorsque celle de changement du Pass est appelée.
Au plaisir …
Z.
Bonjour
Dès mon 1er message j'ai indiqué
Banzai64 a écrit :Un début d'idée (je n'irais pas plus loin)
La je pense que j'ai dépassé
Le fonctionnement prévu
Si le nom n'existe pas --> On n'entre pas
Si le nom existe + mot de passe valide ---> on entre
Une fois entré
Possibilité de changer de nom ou de changer son mot de passe
Essayes cela et dis moi ce qui gène
@Banzaï
La je pense que j'ai dépassé
A+
Bonjour Banzaïe
Banzai64 a écrit :Essayes cela et dis moi ce qui gène
Merci pour tes réponses et la disponibilité dépassée, en effet, que tu as bien voulu me consacrer.
MAis voilà, on planche sur un beau projet et les idées d'améliorations fusent à la pelle et c'est trop C... de pas finaliser à cause d'un brol qui coince
Je recannais en avoir appris pas mal sur l'utilisation des User Forms à l'étude de tes programmes... mais j'ai encore du boulot pour tout assimiler !
Ainsi, j'ai toutefois ajouté les fonctions dont je parlais dans mon post précédent et sauvé tout ca dans la version 7A ci-jointe.
(Obligation de mettre un Pass si il est égal à NP NoPass --->Voir sur Yves)
Dans ta propre version 7, pour ma part le bouton de changement de Pass ne s'activait pas.
J'ai laissé dans ma version 7A tous les msgbox de debug pour ton information.
Tout semble fonctionner désormais... à un détail près que je ne parviens pas à fixer après une journée de recherche:
Lorsqu'on a changé le mot de pass (à la demande ou obligatoirement si c'est la première utilisation de l'utilisateur Pass=NP) et bien la saisie des réservations n'est (parfois ?) plus limitée à l'utilisateur qui peut alors aller effacer celles des autres !
Si c'est pas abuser de te demander une dernière fois ton avis sur ce point, je t'en serai particulièrement reconnaissant.
Merci encore.
Z.
Bonjour
J'ai essayé avec Yves ---> Changement MDP ok
Dans la page Vacances clic sur Modifier le nom --> à l'affichage de l'Usf_Mdp ne rien saisir, juste appuyer "modifier mot de passe" ---> dégage en touche et fermeture du programme
Sinon en changeant le nom et le mot de passe je n'ai accès qu'aux nouveau nom
Comment tu fais pour avoir le bug ?
Bonjour BAnzaïe,
Merci d'avoir suivi mon Post
Exemple de ce que je fais: Je choisi Yves en premier, là il faut obligatoirement changer le pass.
Tout va bien jusqu'à l'accès à la grille.
Là, je sélectionne deux cases à toto... et je peux les changer toutes les deux sans interdiction d'accès !
Z.
J'ajoute que je peux modifier Toto ... mais pas les autres ! Même pas Yves(parfois) !? (sauf si la zone de saisie commence par toto !
Bonjour
Quand tu obliges à changer le mot de passe, tu ne repasses pas par la macro "CmBValider_Click" de "Usf_Mdp" qui doit te déverrouiller les cellules
A toi de voir