Ordre de saisie dans une feuille protégée

Résolu/Fermé
GUGUSSE2 Messages postés 72 Date d'inscription mercredi 24 octobre 2007 Statut Membre Dernière intervention 1 février 2017 - 30 août 2012 à 18:37
 GUGUSSE2 - 3 sept. 2012 à 06:37
Bonjour,

Sur une feuille protégée comportant un certain nombre de cellules non protégées à renseigner, est-ce qu'il y a un moyen pour imposer l'ordre dans lequel le curseur se déplace dans ces cases après appui sur "tab" ou "entrée" ?
Merci,
cordialement,
GUGUSSE.

12 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
Modifié par Patrice33740 le 30/08/2012 à 20:07
Non (à moins d'utiliser VBA) !

Tab : cellule suivante vers la droite
Maj + Tab : cellule suivante vers la gauche


Entrée et Maj + Entrée : comportement bizarre, proche de celui avec une feuille non protégée (quand on autorise la selection des cellules verrouillées et déverrouillées)

Cordialement
Patrice
0
GUGUSSE2 Messages postés 72 Date d'inscription mercredi 24 octobre 2007 Statut Membre Dernière intervention 1 février 2017 7
30 août 2012 à 21:51
Bonjour Patrice,

Je pensais que la question supposait l'usage de "VBA" ! je te prie de m'excuser.
J'ai les cellules "E2, E3, K3,K3" à remplir mais il i a aussi les cellules "G20:G24;Q20:Q24; AA20:AA24" qui ne sont pas verrouillées car ce sont des paramètres sur lesquels il faut agir après avoir renseigné les 4 premières cellules !
SI ma feuille est protégée, le curseur suit le chemin suivant ;
E2, E3, G20, ...G24, K2, K3, ...
et je souhaiterai :
E2, E3, K2, K3, G20, ...

existe-t il une solution ?

Merci pour cette première réponse,
cordialement,
GUGUSSE.
0
GUGUSSE2 Messages postés 72 Date d'inscription mercredi 24 octobre 2007 Statut Membre Dernière intervention 1 février 2017 7
Modifié par GUGUSSE2 le 31/08/2012 à 17:10
Bonjour à tous,

Finalement, j'ai contourné le problème en créant une "userform" pour remplir les 4 premières cases. L'utilisateur n'aura plus QUE cette possibilité pour les renseigner et il pourra remplir les diamètres comme bon lui semble !
Seulement voilà, il y a un hic :
- les renseignements donnés dans la "userform" s'inscrivent bien dans les cases, mais sont inexploitables car écrit sous forme de texte ! Si je les convertis, cela ne "dure" pas. Un nouvel usage de la "userform" conduit au même résultat montré sur la copie d'écran.

https://www.cjoint.com/?BHFqz0nzQWb

- J'aimerai que les renseignements donnés restent dans la "userform" pour une correction éventuelle JUSQU'À la réouverture du fichier (où ils pourraient être effacés).
Ci-joint le fichier :

https://www.cjoint.com/?BHFrilCUWZt

Désolé pour ceux qui avaient commencé à chercher, mais cette approche me convient mieux. Et si vous trouvez quelques améliorations à apporter, n'hésitez pas, je suis encore novice en la matière !

Cordialement,
GUGUSSE.
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
31 août 2012 à 17:08
Pour que les renseignements restent dans usf tu peux utiliser des cellules réservées à cet effet sur une feuille de calcul et définir la propriété ControlSource des TextBox

Tu peux alors utiliser les formules de conversion d'Excel par rapport à ces cellules textes pour obtenir le format désiré.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
GUGUSSE2 Messages postés 72 Date d'inscription mercredi 24 octobre 2007 Statut Membre Dernière intervention 1 février 2017 7
Modifié par GUGUSSE2 le 31/08/2012 à 20:04
Bonjour Patrice,

J'ai essayé de suivre tes conseils (voir copie d'écran).

Private Sub TextBox5_Change()
'VITESSE MINI
[E2] = UserForm1.TextBox5
[A27] = UserForm1.TextBox5
End Sub

https://www.cjoint.com/?BHFt32evGIz

Cela semble fonctionner, mais je trouve que la modification des valeurs, quand je reviens sur ma "userform" est un peu "pénible" : il faut vraiment "insister" pour arriver à changer les valeurs et même, attendre quelques instants. Par contre, lorsque une valeur à été modifiée, l'appui sur "entrée" sélectionne automatiquement le texte de la case située en dessous et l'on peux changer la valeur sans problème.
Est-ce un comportement "normal" ou ai-je oublié quelque chose ?

Ci-joint le fichier correspondant :

https://www.cjoint.com/?BHFt4OCATur

Maintenant voudrais-tu m'expliquer comment avoir des "nombres" et non pas du "texte" dans les cellules "E2,E3,K2 et K3" ?

Cordialement,
GUGUSSE.
0
GUGUSSE2 Messages postés 72 Date d'inscription mercredi 24 octobre 2007 Statut Membre Dernière intervention 1 février 2017 7
Modifié par GUGUSSE2 le 31/08/2012 à 20:55
Bonjour,

J'ai trouvé que, en ajoutant ".value" après "UserForm1.TextBox5", j'avais un "nombre".
Mais l'ayant fait pour toutes les cases, la "userform" buge (j'ai un rectangle blanc dans l'éditeur et Excel bloque).
Quelle est la bonne méthode pour avoir des "nombres" ?
Cordialement,
GUGUSSE.
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
31 août 2012 à 21:24
Bonjour,

Il y a une erreur au lancement du fichier.

Il faut modifier INIT comme suit :
Sub INIT()
        
        Sheets("DONNÉES").Activate
        Application.EnableEvents = False
        ActiveSheet.Unprotect
        [K2:K3] = ""
        [E2:E3] = ""
        Call Efface
        [Q2] = 0
        [V8] = ""
        [A20:A24] = 100
        [G25] = 100
        [Q25] = 100
        [AA25] = 100
        ActiveSheet.Protect
        Application.EnableEvents = False

End Sub


et il faut aussi déprotéger les cellules A27:B28

L'erreur résolue, passons a l'USF :

Tu pourrais supprimer tous les TextBox_Change mais pour voir en direct le résultat sur la feuille il suffit de conserver uniquement :
Private Sub TextBox5_Change()
 [A27] = TextBox5.Text
End Sub

Private Sub TextBox6_Change()
 [B27] = TextBox6.Text
End Sub

Private Sub TextBox7_Change()
 [A28] = TextBox7.Text
End Sub

Private Sub TextBox8_Change()
 [B28] = TextBox8.Text
End Sub


Sur la feuille Excel
En E2:
=A27+0
En E3:
=A28+0
En K2:
=B27+0
En K3:
=B28+0
0
GUGUSSE2 Messages postés 72 Date d'inscription mercredi 24 octobre 2007 Statut Membre Dernière intervention 1 février 2017 7
2 sept. 2012 à 18:11
Bonjour Patrice,

En premier lieu, merci pour le code. Les valeurs sont bien mémorisées et les cellules qui utilisent ces nombres "marchent" parfaitement !

Suite à des problèmes de démarrage d'excel (en double cliquant sur le fichier, j'avais le message : "Une erreur s'est produite lors de l'envoi d'une commande au programme"), j'ai reconstruis mon fichier en partant de la mise en page et j'ai recopié toutes les macros que j'avais pris soin d'enregistrer sous word.

Tout fonctionne maintenant parfaitement SAUF :

* la macro dans feuille1'DONNÉES) qui ne met toujours pas à "0" "Q2"(X) ! Je l'ai donc désactivée et j'ai usé d'un artifice pour que "X" passe à "0" quand il le faut (mais cela sélectionne automatiquement le choix précédemment fait lorsque l'on a de nouveau la nécessité de choisir l'option !) et que ela ne perturbe pas la mise à jour des résultats.

* La macro workbook_open() non seulement ne se "lance" pas à l'ouverture du fichier mais un message (Erreur système &H8000FFFF (-2147418113). défaillance irrémédiable) apparaît, le code "load userform1" est surligné en jaune et en fermant l'édieur, EXCEL plante !
Veux-tu bien examiner mon fichier ci-joint et me dire quelle (s ?) erreur(s) j'ai commise(s) ou ce que je dois faire pour réparer ?

https://www.cjoint.com/?BIcr2dRczK5

Merci de ta patience vis à vis d'un ... comme moi.
Cordialement,
GUGUSSE.
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
Modifié par Patrice33740 le 2/09/2012 à 23:04
Bonsoir,


Dans le Module1 / Sub INIT()
Tout à la fin, il faut remplacer :
Application.EnableEvents = False
Par :
Application.EnableEvents = True

Dans le module ThisWorkbook / Workbook_Open()
il faut supprimer :
Call DONNÉES
Il est déja dans INIT !

Par contre je ne comprend pas bien ce que tu veux faire avec le module de Feuil1 / Worksheet_Change, tu as écris :
If Target = [OPT] And Target = 0 Then
la bonne syntaxe serait :
If Target.Address = [OPT].Address And Target.Value = 0 Then 
Mais je ne suis pas certain que ce soit ce que tu désires,
c'est-dire que le contenu de X est forcé à 0, quand tu saisis 0 ou une formule dont le résultat est 0, dans la cellule OPT.
Si tu désires que X soit mis à 0 dès que la valeur de OPT passe à 0, quelle que soit le changement dans la feuille qui a provoqué cela, il suffit alors de :
If [OPT].Value = 0 Then



Cordialement
Patrice
0
Bonjour Patrice,

"If Target.Address = [OPT].Address And Target.Value = 0 Then"
ou
"If [OPT].Value = 0 Then"
ne changent pas grand chose : toujours pas de remise à "0" de "R2" quand "R2" passe à "0" ! En attendant, il faut que je règle mon problème d'erreur système !
le passage ce Ccleamer n'a pas eu d'effet. je vais réinstaller EXCEL et reconstruire mon fichier, sans ces deux macros qui posent problème et sans userform.
je t'enverrai le nouveau fichier et un fichier contenant la "userform" quand tout sera fait.

Merci pour ce que tu as déjà fait.
A+,
GUGUSSE.
0
Bonjour,

J'ai finalement eut la solution à mon problème en posant le message "une erreur s'..." à "G..." et je suis arrivé sur ce forum section bureautique. Vous êtes vraiment très fort, chapeau !
Je vais donc pouvoir retravailler normalement, avec vous si vous le voulez bien.
A+,
GUGUSSE.
0
Je pense qu'il est mieux d'interrompre ce sujet qui commence à être trop volumineux pour pouvoir retrouver les bonnes infos.
Pour partir sur de nouvelles bases, j'ai ouvert un nouveau sujet :

http://www.commentcamarche.net/forum/affich-25995110-touche-finale-protection-raz-cellule

Merci à ceux qui m'ont aidé ici, en souhaitant qu'ils me suivent.
Bien cordialement,
GUGUSSE.
0