Bonjour,
En train de faire passer un logiciel d'Excel 2000 sous la version 2010 sur un code que je n'ai pas écrit, je rencontre un problème: j'ai de nombreuses TextBox sur l'écran mais et j'ai beau passer ce que je trouve sur les forums (c'est-à-dire les propriétés Enabled et/ou Locked), lorsque je charge un projet sous le logiciel, je peux quand même modifier les données.
Je précise que:
> Je ne suis pas un professionnel de VBA
> Lorsqu'on change ce qu'il y a écrit dans la TextBox, le texte à l'écran change (ce que je veux rendre impossible) mais les tableaux de valeurs du code ne sont pas modifiés
> Je n'arrive pas à passer la propriété Enabled bien que j'ai le mode d'emploi (j'ai un message d'erreur)
> J'ai un problème peut-être similaire avec les shapes : j'ai des shapes formées de plusieurs shapes que je traite d'une certaine manière puis que je groupe. Cependant, en cliquant droit sur l'image finale, on peut modifier indépendamment les "sous"-shapes !
Merci d'avance pour votre aide.
Le code: (simplement on crée une TextBox à laquelle on donne un nom et d'autres propriétés puis on veut la bloquer)
Public Sub CreerNomTxtBox()
Set NomTxtBox = Feuil_Schema.Shapes.AddTextbox(msoTextOrientationHorizontal, Eq_Image.Left, Eq_Image.Top + Eq_Image.Height, 0, 0)
With NomTxtBox
.Fill.Visible = msoFalse
.Fill.ForeColor.RGB = RGB(255, 140, 120) 'sera visible, après calculs, si l'équipement a été à l'origine d'errreur
.Line.Visible = msoFalse
End With
.name = "TxBx" & Mid(Eq_Image.name, 5) 'prend le meme nom que l'image, en remplaçant "Im_D" par "TxBx"
.OnAction = "'Dialog_Ouvre_Toi" & Chr(34) & NomTxtBox.name & "'"
'.ControlFormat.LockedText = True
'.Enabled = False
'.Locked = True
End With
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018220 19 avril 2013 à 14:50
Bonjour,
Je précise que:
> Je ne suis pas un professionnel de VBA
Moi non plus .
Ce qui nous importe ici, c'est de savoir :
- si tu es ou non, tout simplement, développeur sous VBA. Ce forum est un forum de développeurs, professionnels ou non, mais développeurs.
- il se trouve que tu n'as pas là affaire à une textbox.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Je suis en stage de 6 mois sur un logiciel codé en VBA.
Dans un premier temps je dois faire passer le logiciel sous Excel 2010 (en ce moment), puis juste après augmenter les fonctionnalités.
En conclusion, mon poste de stagiaire est bien de développer ce logiciel et donc le code. Peut-on dire que je suis un développeur?
En fait, le logiciel est à destination d'utilisateurs qui ne doivent pas, lorsqu'ils l'utilisent, pouvoir modifier les données des textbox (shapes). Je ne peux donc pas leur demander de rentrer un mot de passe par exemple lorsqu'on ouvre le logiciel...
J'ai essayé de protéger la feuille manuellement, en bloquant l'écriture dans la textbox, mais rien n'y fait: si je fais clic droit puis clic gauche sur cette textbox, je peux changer le texte à l'intérieur.
D'après quelques forums que j'ai parcouru (notamment avec ton lien (merci =) ), cela vient du mode création d'Excel. Seulement, tous ont l'air de dire que ce n'est pas possible de le désactiver.
Mon but est d'empêcher l'écriture dans les textbox sur l'écran, j'ai pensé mettre un rectangle transparent mais ça comporte de nombreux désavantages...
Une idée?
Merci !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Bonjour!
L'application est composée de nombreux équipements (shapes) chacun lié à une boîte de dialogue.
Quand on a créé un système complet et remplit chaque boîte de dialogue (userforms) avec les données nécessaire à faire un calcul.
Quand le calcul est lancé puis terminé, il affiche les résultats dans des TextBox sur le schémas.
Je voudrais que ces résultats soient non modifiables par l'utilisateur (logique ^^). L'utilisateur remplit uniquement les boîtes de dialogue.
Par exemple j'ai rajouté pour un équipement spécifique :
Private Sub Chk_AffichNom_Click()
'pour afficher/masquer le nom de l'équipement sur le schéma
Liste_Equipements.item(IndexEq).NomTxtBox.Visible = Chk_AffichNom.value
[u]Liste_Equipements.item(IndexEq).NomTxtBox.ControlFormat.LockedText = True
Liste_Equipements.item(IndexEq).Locked = True/u End Sub
(les deux lignes doivent d'ailleurs être une redite)
Et ça ne fonctionne toujours pas.. Si je fais clic droit puis clic gauche, je peux toujours remplacer le texte ou les valeurs..
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201822 23 avril 2013 à 11:46
Il ne te reste, a mon avis, qu'à mettre une protection sur la feuille.
Lorsque tu débutes la macro reliée à un bouton, tu enlèves la rpotection, puis la remets à la fin de la procédure.
Ça demeurera transparent pour l'utilisateur, mais il ne pourra pas modifier quoique ce soit.
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI