VBA Excel Bloquer écriture cellule, zdTextes

Résolu/Fermé
hardgratte Messages postés 448 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 2 juin 2022 - 23 janv. 2011 à 12:32
hardgratte Messages postés 448 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 2 juin 2022 - 14 févr. 2011 à 12:54
Bonjour,
J'aimerais bloquer l'écriture dans les cellules, zones de textes, ComboBox, etc... lorsque l'on est pas en mode création.
L'utilisateur ne doit pouvoir interagir que avec les boutons, les ComboBox (mais pas l'écriture), les liens hypertextes, etc...
Merci d'avance pour votre aide.
Salutations



A voir également:

22 réponses

lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
2 févr. 2011 à 13:17
Protéger ta feuille et laisser l'accès au Combo..
    ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:=True



Pour exécuter une macro sur une feuille protégée il faut d'abord la déprotéger en entrée de macro et la reprotéger en sortie.

Sub MyMacro()
    ActiveSheet.Unprotect

'... Le code de la macro
'.......................
    ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:=True
End Sub

5
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 288
2 févr. 2011 à 14:54
Bien,
Moi je trouves que tu es patient, je dirai qu'hier tu étais plus pris, tes codes sont toujours très clairs et précis on ne peut que féliciter l'Artiste.
Bonne journée.
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 288
1 févr. 2011 à 15:45
Tu dis

J'aimerais bloquer l'écriture dans les cellules, zones de textes, ComboBox, etc... lorsque l'on est pas en mode création.

donc c'est avec les mméthodes .Protect et .unprotect
sub test()
Sheets("feuil1").Protect MotDePasse = "toto"
Sheets("feuil1").Unprotect MotDePasse = "toto"
end sub

et pour les textbox, combobox ...etc il faut utiliser la propriété textbox1.enable=true
ou
textbox1.enable=false


L'utilisateur ne doit pouvoir interagir que avec les boutons, les ComboBox (mais pas l'écriture), les liens hypertextes, etc...

Ce qui signifie qu'il faut que tu autorises le programme à le faire
c'est donc à toi de gérer tout ça.

Voici comment tu peux simplifier les choses.

1) quelles sont les feuilles que tu dois vérouiller?
réponse : Feuille 1,2,3,4
action faire une sub qui vérouillera les dîtes feuilles et une autre qui les déverouillera.

pour les combobox, textbox....
tu en fais une autre
comme ça!
sub rendInactif()
Userform1.combobox1.enable=False
Userform1.textbox1.enable=false
End sub

mais je crois que c'est à toi d'en faire un peu
A+
2
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
1 févr. 2011 à 16:54
Bonjour Bidouilleu_R
Merci d'avoir préciser ce que je n'ai pas eu la patience de faire.
A+
1
hardgratte Messages postés 448 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 2 juin 2022 76
2 févr. 2011 à 19:51
merci
j'avais déjà essayé de nommer la feuille! Je ne suis si désespérant que ça finalement ^^
J'ai également essayé Sheets("Feuil2").select avant mais rien n'y fait.
Abandon un peu trop rapide à mon goût.
Merci quand même!!
1

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

Posez votre question
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
23 janv. 2011 à 12:38
Bonjour,
Pour les feuilles voir Protect / UnProtect
Pour les contrôles voir Enabled.True/false
A+
0
hardgratte Messages postés 448 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 2 juin 2022 76
1 févr. 2011 à 18:01
Merci de me consacrer un peu de votre temps.
J'ai déjà fait tout ça mais comme je l'ai préciser plus haut, lorsque que je protège les feuilles, je ne peux plus utiliser mes Listes déroulantes.
Et je ne veux pas protéger par mot de passe mais juste empêcher les modifications (écriture dans les cellules).
Merci bonne soirée
0
hardgratte Messages postés 448 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 2 juin 2022 76
2 févr. 2011 à 19:07
J'ai essayé le "ActiveSheet.Unprotect" mais les macro ne peuvent quand même pas s'exécuter ... à cause de la protection!

Pour ce qui est de "ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:=True", mes listes déroulantes ne se remplissent pas avec ce code.

Bonne soirée
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
2 févr. 2011 à 19:47
Là... tu commence à me désespérer... si la feuille active n'est pas la feuille protégée tu dois NOMMER le feuille.
Sub MyMacro()
Sheets("MachinChouette").Unprotect

'... Le code de la macro
'.......................
Sheets("MachinChouette").Protect DrawingObjects:=False, Contents:=True, Scenarios:=True
End Sub
Et essaye quand même de faire Un tout petit peu faire fonctionner tes neurones.
A++
Abandon du suivi.
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 288
3 févr. 2011 à 10:04
Si je puis me permettre..... :- ) < Merci>

Le problème vient sans doute que tu as protégé toute la feuille.

il faut laissé certaines cellules dévérouillées ( celles que tu veux modifier)
Tu fais un click droit /format de cellule/onglet protection.

Le code que te donne lermite222 est correct et explicite mais il ne donneras pas un bon résultat si tu as tout vérouillé ( genre crise de paranoïa aigue).

si tu veux en savoir plus sur la protection.... voici un lien (les bases en fait)
https://silkyroad.developpez.com/VBA/FeuilleDeCalcul/#LII-A-21
bonne journée
0
hardgratte Messages postés 448 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 2 juin 2022 76
3 févr. 2011 à 18:25
bonjour,
Je viens d'essayer certaines formules se trouvant que la page que vous m'avez fait parvenir.
Le problème est que quand je déverrouille une cellule, la macro peu écrire dedans (ça c'est bien), mais l'utilisateur peu écrire dedans également (beaucoup moins bien).
J'ai essayé le code pour protèger la feuille et autoriser toutes les modifications effectuées par macro.
"Worksheets("Feuil1").Protect UserInterfaceOnly:=True"
Je ne vois pas la différence avec une protection normale, mes macro ne peuvent quand même pas modifier mes cellules verrouillées.
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 288
4 févr. 2011 à 10:07
"Worksheets("Feuil1").Protect UserInterfaceOnly:=True"
Je ne vois pas la différence avec une protection normale, mes macro ne peuvent quand même pas modifier mes cellules verrouillées.



Ce qui signifie que tu n'as pas compris comment cela fonctionne.
C'est comme si tu nous racontais que tu as fermé ton garage à clef mais que tu peux toujours rentrer dans la maison.

Il te faut un cours de base et peut-être un peu moins de paranoïa.
0
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 288
4 févr. 2011 à 11:32
Je ne vois pas la différence avec une protection normale, mes macro ne peuvent quand même pas modifier mes cellules verrouillées.

Cette phrase montre que tu n'as pas compris.
le principe est le suivant.

je protège certaines cellules ( elles le sont toutes par défaut si tu vérouilles tu peux plus rien faire)
je lance le module vba qui va :
- 1 déprotéger la feuille, les contrôles etx.. ( parce que sinon ton programme ne pourra pas fonctionner)
- 2 il va executer certaines choses, lire, écrire,...
- 3 en fin de travail ( retour sur la feuille / déchargement du userform) tu vérouilles à nouveau ( rétablissement de la protection).

A mon sens tu confonds beaucoup de choses. il faudra se réserver du temps pour la lecture et quelques petits test.

Personnellement Je trouve la phrase "Abandon un peu trop rapide à mon goût." agaçante,répétitive,déplacée,inapropriée.
Il est évident que tu ne sais pas à qui tu parles. Alors soit sage.
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
4 févr. 2011 à 13:34
Bon, je vais un peu déroger à mon premier avis...
Voir ce classeur
A+
0
hardgratte Messages postés 448 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 2 juin 2022 76
7 févr. 2011 à 19:07
Bonjour,
Merci pour ton classeur lermite222.
Je vais faire en sorte que le mien fonctionne aussi bien.
Cependant je voudrais ne pas pouvoir modifier les données de la liste déroulante.
Comment est-ce possible?

Bidouilleu_R
Lorsque j'ai dit "abandon un peu trop rapide à mon goût", il n'y avait rien méchant là dedans. J'ai juste trouvé la réaction de Lermite un peu trop radicale, voilà tout (il est vrai que je ne l'avait pas informé de tout ce que j'avais essayé, je comprend donc qu'il ai pu croire que je n'avais pas cherché). Je pense qu'il faut toujours dire ce que l'on pense lorsqu'il y a désaccord. Et sache que je sais que Lermite222 est d'une grande aide à beaucoup de monde sur ce forum, qu'il m'a beaucoup aidé, et que je lui en suis extrêmement reconnaissant.
Maintenant, si par ce que j'ai dit, j'ai blessé, énervé ou agacé quelqu'un, je m'en excuse. Mais on ne peut pas se permettre d'être susceptible sur un forum car on ne peut jamais savoir quel est le ton de la phrase.

En tout cas merci à vous deux de m'avoir apporté votre aide jusqu'à présent.
Bonne soirée
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
7 févr. 2011 à 19:33
C'est pas possible de modifier le combo, si tu veux reprendre une sélection d'un combo sur lequel ont aurait éventuellement changer la partie texte de la fenêtre visible, emploi ComboBox1.list(ComboBox1.listIndex) à la place de ComboBox1.text
0
hardgratte Messages postés 448 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 2 juin 2022 76
7 févr. 2011 à 20:11
Excuse moi je ne comprend pas ce que tu dit.
Je ne veut pas modifier le Combo. Au contraire, je veut ne pas pouvoir le faire.
Lorsque je clique dans la fenêtre de la liste déroulante, je peux effacer le texte s'y trouvant... et je ne veux pas!
Peut on le verrouiller?
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
8 févr. 2011 à 13:50
Avec le ComboBox ce n'est pas possible d'interdire la modification du texte bien qu'il est possible que les données ne puissent êtres modifiées.
Pour faire ce que tu veux il faut tricher un peu, (plus qu'un peu).. en employant un TextBox, un bouton et une listeBox.
Voir exemple 2
A+
0
hardgratte Messages postés 448 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 2 juin 2022 76
8 févr. 2011 à 18:23
D'accord merci je pense que je vais laisser comme ça.
Par contre, même en verrouillant ma feuille (tel que vous l'avez fait dans le premier classeur), je peux toujours écrire dans ma TexteBox.
J'ai essayer les commande Enabled et ReadOnly mais l'une me grise le texte (Enabled) et je n'arrive pas à mettre en place l'autre.
J'ai vu que vous n'aviez fait ni l'un ni l'autre.
Le remplissage de ma TextBox est commandé par l'appui sur un bouton, je n'ai donc pas dans mon code la procédure de cette TextBox (Private Sub TextBox1_Change()...etc)
Cela peut il poser problème pour la verrouiller?
Bonne soirée
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
8 févr. 2011 à 18:36
Évidemment... faut mettre le code qui va avec, pour le voir clic droit sur le nom de l'onglet >> Visualiser le code.

Poste ton classeur sur CiJoint.fr, j'adapterais pour que ça fonctionne.

0
hardgratte Messages postés 448 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 2 juin 2022 76
10 févr. 2011 à 18:36
Bonjour,
Je ne vous envoies pas le lien de mon classeur car trop imposant, pas toujours très clair dans la macro et surtout fait appel à des fichier extérieurs.
Je vous envoies donc un classeur sur lequel un Bouton fait apparaître du texte dans une TextBox. Je voudrais que le texte ne sois pas modifiable mais n'apparaisse pas en gris flouté.
http://www.cijoint.fr/cjlink.php?file=cj201102/cijRxzdTDT.xlsm

Merci d'avance.
Bonne soirée
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
11 févr. 2011 à 09:53
Pourquoi utiliser une zone de texte si ce n'est pas pour saisir du texte...
Remplace ton Texte par une étiquette et le tour est jouer.
A+
0
hardgratte Messages postés 448 Date d'inscription mardi 16 juin 2009 Statut Membre Dernière intervention 2 juin 2022 76
11 févr. 2011 à 12:27
Bonjour,
J'ai en faite simplifié au maximum et je n'ai pas été assez explicite dsl.
En réalité, on vient choisir un terme dans un ComboBox, ce qui va chercher un texte dans une feuille Word et vient le mettre dans la TextBox.
Voila Merci à toi.
Bonne journée

PS : C'est quoi une étiquette ?
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
11 févr. 2011 à 17:28
Autrement dit, c'est un Label, il est comme un TextBox mais ont ne peu écrire dedans que par le code.
Pour avoir une étiquette.
Ruban Développeur >> Insérer >> Dans les contrôles ActiveX l'icône avec A
A+
0