Bloquer tous les éléments d'une feuille

[Résolu]
Signaler
Messages postés
9
Date d'inscription
mercredi 1 juin 2005
Statut
Membre
Dernière intervention
7 août 2008
-
Messages postés
9
Date d'inscription
mercredi 1 juin 2005
Statut
Membre
Dernière intervention
7 août 2008
-
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

Messages postés
181
Date d'inscription
jeudi 30 mai 2002
Statut
Membre
Dernière intervention
19 août 2012

Oups, ça m'apprendra à me relire trop vite :
Dans le premier exemple, myFrame.Enabled = False (au lieu de True)... oui, c'est évident !

titicar
Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
4
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>
Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
4
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>
Messages postés
9
Date d'inscription
mercredi 1 juin 2005
Statut
Membre
Dernière intervention
7 août 2008

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.
Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
4
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>
Messages postés
181
Date d'inscription
jeudi 30 mai 2002
Statut
Membre
Dernière intervention
19 août 2012

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
Messages postés
9
Date d'inscription
mercredi 1 juin 2005
Statut
Membre
Dernière intervention
7 août 2008

Thanks, je vais tester ça

Enfin quelqu'un qui n'a pas de signature.
Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
4
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>
Messages postés
9
Date d'inscription
mercredi 1 juin 2005
Statut
Membre
Dernière intervention
7 août 2008

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.
Messages postés
9
Date d'inscription
mercredi 1 juin 2005
Statut
Membre
Dernière intervention
7 août 2008

Merci bien :)

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