Bloquer tous les éléments d'une feuille

Résolu
freepopo Messages postés 9 Date d'inscription mercredi 1 juin 2005 Statut Membre Dernière intervention 7 août 2008 - 25 juil. 2008 à 11:46
freepopo Messages postés 9 Date d'inscription mercredi 1 juin 2005 Statut Membre Dernière intervention 7 août 2008 - 28 juil. 2008 à 17:01
Bonjour à vous,

Je programme en VB6.
Je voudrais savoir s'il est possible de bloquer tout un formulaire pour ne pas que l'utilisateur change des données par inadvertance.
Un bouton "Modifier" permetterait de débloquer ce formulaire pour changer des éléments.

Y a t'il un moyen de tout vérrouiller directement ? Par exemple dans tout mettre dans une frame et bloquer/débloquer les éléments de cette frame ?

Merci d'avance

Enfin quelqu'un qui n'a pas de signature.

10 réponses

cs_titicar Messages postés 181 Date d'inscription jeudi 30 mai 2002 Statut Membre Dernière intervention 19 août 2012
25 juil. 2008 à 18:47
Oups, ça m'apprendra à me relire trop vite :
Dans le premier exemple, myFrame.Enabled = False (au lieu de True)... oui, c'est évident !

titicar
3
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
28 juil. 2008 à 16:07
Dim

s


As

Control



For





Each

s


In





Me

.Controlss.Enabled =



False  'ou true ça dépends de ou tu mets ce code








Next









Il y a (4.5 \ 1.5) sortes de gens, ceux qui comprennent le vb et les autres ,je fais partie des autres/FONT>
3
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
25 juil. 2008 à 11:59
la réponse est oui si c'est du vb et je sais pas si c'est du vba
 de quel genre de formulaire parles tu ??

Il n'y a que les gens qui ne font rien, qui ne font pas d'erreur

/B>
0
freepopo Messages postés 9 Date d'inscription mercredi 1 juin 2005 Statut Membre Dernière intervention 7 août 2008
25 juil. 2008 à 13:58
Bonjour,

C'est bien du VB6, pas du VBA. Ce sont en fait des feuilles ou sont affichées des données récupérées à partir d'une base de données Access toute bête.

Enfin quelqu'un qui n'a pas de signature.
0

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

Posez votre question
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
25 juil. 2008 à 14:09
dans quels types de controles affiche tu les données??

Il n'y a que les gens qui ne font rien, qui ne font pas d'erreur

/B>
0
cs_titicar Messages postés 181 Date d'inscription jeudi 30 mai 2002 Statut Membre Dernière intervention 19 août 2012
25 juil. 2008 à 18:43
Salut,

Il y a 2 solutions simples :

La première :
Tous tes contrôles sont placés dans une frame... à l'exception de ton bouton 'modifier'.
Dans ce cas là, y a pas plus simple : désactive simplement ta frame (myFrame.Enabled = True).
Ainsi tous les contrôles contenus dans cette frame seront désactivés. Mais d'un point de vue visuel, tu ne le remarqueras pas car les contrôles dans cette frame ne seront pas grisés.

Deuxième solution :
Tous tes contrôles ne sont pas dans une frame.
Utiliser une boucle For Each myObject In myForm : Très pratique, la boucle désactivera TOUS les différents contrôles du form.
Faudra juste penser à réactiver ton bouton 'Modifier' à la fin de la procédure, et activer à nouveau les contrôles (ou objets) quand on appuie sur ce bouton.

Exemple :

Private Sub Form_Load()
    '# Par défaut, on désactive les controles de ce form:
    '# Dans l'exemple, le bouton 'modifier' s'apelle CmdModify
    myObjects_Enable False, Me, Me.CmdModify
End Sub

Private Sub CmdModify_Click()
    myObjects_Enable True, Me, CmdModify
End Sub

Private Sub myObjects_Enable(ByVal Bool As Boolean, myForm As Form, myButtonModified_Name As CommandButton)
'# Permet d'activer ou de désactiver tous les objets du form, sauf le bouton myButtonModified_Name
'# Bool active ou non les différents objets
'# myForm représente le form contenant les objets
'# myButtonModified_Name représente le bouton qui doit rester activé !
Dim myObject As Object

    On Local Error Resume Next 'Au cas où...
   
    '# Désactive TOUS les objets du form 'myForm':
    For Each myObject In myForm
        myObject.Enabled = Bool
    Next
   
    '# Réactive le bouton 'Modifier':
    myButtonModified_Name.Enabled = True
   
    On Local Error GoTo 0
End Sub

titicar
0
freepopo Messages postés 9 Date d'inscription mercredi 1 juin 2005 Statut Membre Dernière intervention 7 août 2008
28 juil. 2008 à 13:51
Thanks, je vais tester ça

Enfin quelqu'un qui n'a pas de signature.
0
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
28 juil. 2008 à 14:01
freepopo, "Enfin quelqu'un qui n'a pas de signature." n'est ce pas une signature??
Il y a (4.5 \ 1.5) sortes de gens, ceux qui comprennent le vb et les autres ,je fais partie des autres/FONT>
0
freepopo Messages postés 9 Date d'inscription mercredi 1 juin 2005 Statut Membre Dernière intervention 7 août 2008
28 juil. 2008 à 15:49
Si, c'est justement ironique ;)

Sinon la méthode décrite juste au dessus ne fonctionne pas. Tous les éléments du form sont bien désactivés mais sa m'affiche un message d'erreur de code 438. Je pense qu'il y a un objet dans le form qui ne peut pas être mis a enabled comme sa, qu'en pensez-vous ? Voici le code :

Dim myObject As Object

    '# Désactive TOUS les objets du form 'myForm':
    For Each myObject In nouvProfil2
        myObject.Enabled = True
    Next

Enfin quelqu'un qui n'a pas de signature.
0
freepopo Messages postés 9 Date d'inscription mercredi 1 juin 2005 Statut Membre Dernière intervention 7 août 2008
28 juil. 2008 à 17:01
Merci bien :)

Enfin quelqu'un qui n'a pas de signature.
0
Rejoignez-nous