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
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
A voir également:
- VBA Excel Bloquer écriture cellule, zdTextes
- Bloquer cellule excel - Guide
- Excel cellule couleur si condition texte - Guide
- Aller à la ligne dans une cellule excel - Guide
- Liste déroulante excel - Guide
- Excel compter cellule couleur sans vba - Guide
22 réponses
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
2 févr. 2011 à 13:17
2 févr. 2011 à 13:17
Protéger ta feuille et laisser l'accès au Combo..
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.
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
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
293
1 févr. 2011 à 15:45
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+
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+
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
1 févr. 2011 à 16:54
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+
Merci d'avoir préciser ce que je n'ai pas eu la patience de faire.
A+
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
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!!
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!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
23 janv. 2011 à 12:38
23 janv. 2011 à 12:38
Bonjour,
Pour les feuilles voir Protect / UnProtect
Pour les contrôles voir Enabled.True/false
A+
Pour les feuilles voir Protect / UnProtect
Pour les contrôles voir Enabled.True/false
A+
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
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
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
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
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
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
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
2 févr. 2011 à 19:47
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.
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.
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
293
3 févr. 2011 à 10:04
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
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
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
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.
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.
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
293
4 févr. 2011 à 10:07
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.
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.
Bidouilleu_R
Messages postés
1181
Date d'inscription
mardi 27 mai 2008
Statut
Membre
Dernière intervention
12 juillet 2012
293
4 févr. 2011 à 11:32
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.
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.
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
4 févr. 2011 à 13:34
4 févr. 2011 à 13:34
Bon, je vais un peu déroger à mon premier avis...
Voir ce classeur
A+
Voir ce classeur
A+
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
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
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
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
7 févr. 2011 à 19:33
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
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
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?
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?
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
8 févr. 2011 à 13:50
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+
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+
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
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
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
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
8 févr. 2011 à 18:36
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.
Poste ton classeur sur CiJoint.fr, j'adapterais pour que ça fonctionne.
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
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
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
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
11 févr. 2011 à 09:53
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+
Remplace ton Texte par une étiquette et le tour est jouer.
A+
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
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 ?
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 ?
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
11 févr. 2011 à 17:28
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+
Pour avoir une étiquette.
Ruban Développeur >> Insérer >> Dans les contrôles ActiveX l'icône avec A
A+
2 févr. 2011 à 14:54
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.