IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Bloquer tous les champs et en libérer un seul


Sujet :

VBA Access

  1. #1
    Membre habitué Avatar de 4rocky4
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    528
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 528
    Points : 180
    Points
    180
    Par défaut Bloquer tous les champs et en libérer un seul
    Bonjour à toutes et à tous,

    J'ai besoin de vous, j'ai un problème qui commence à durer, si vous voulez sauver mon ordinateur, aidez moi à le résoudre

    Je voudrais verrouiller tous les champs de mon formulaire de consultation sauf UN, une liste déroulante .

    Voilà le code de mon formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    Option Compare Database
    Option Explicit
    
    Private Sub bt_annuler_Click()
    btannuler
    End Sub
    
    Private Sub bt_supprimer_Click()
    btsupprimer
    End Sub
    
    Private Sub bt_valider_Click()
    btvalider
    End Sub
    
    Private Sub Form_Load()
    Call presentation(Me)
    End Sub
    
    Private Sub bt_menu_Click()
    btmenu
    End Sub
    
    Private Sub ld_recherche_AfterUpdate()
        ' Rechercher l'enregistrement correspondant au contrôle.
        Dim rs As Object
        Set rs = Me.Recordset.Clone
        rs.FindFirst "[code_ce] = " & Str(Nz(Me![ld_recherche], 0))
        Me.Détail.Visible = True
        If Not rs.EOF Then Me.Bookmark = rs.Bookmark
    End Sub
    
    Private Sub Form_Open(Cancel As Integer)
    Dim ctl As Control
    Select Case Openargs
        Case "ce_ajout"
            'on affiche la partie Détail
            Me.Détail.Visible = True
            'On cache les outils recherche
            Me.boite_rectangle.Visible = False
            Me.za_nom.Visible = False
            Me.ld_recherche.Visible = False
            Me.éti_recherche.Visible = False
            'modification impossible
            Me.AllowEdits = False
            
        Case "ce_modif"
            'Boutons
            Me.bt_annuler.Visible = False
            Me.bt_valider.Visible = False
            'Ajout impossible
            Me.AllowAdditions = False
            'on affiche la partie Détail
            Me.Détail.Visible = False
            'les Champs sont accessible
            For Each ctl In Me.Controls
                Select Case ctl.ControlType
                    Case acTextBox, acComboBox
                        ctl.Enabled = True
                End Select
            Next ctl        
            Me.za_titre.Caption = "Modification d'un comité d'engagement"
            
        Case "ce_consultation"
            'boutons
            Me.bt_annuler.Visible = False
            Me.bt_valider.Visible = False
            'ajout impossible
            Me.AllowAdditions = False
            'on affiche la partie Détail
            Me.Détail.Visible = False
            ' on bloque les champs que l'on consulte pour empécher la modification
            For Each ctl In Me.Controls
                Select Case ctl.ControlType
                    Case acTextBox, acComboBox
                        ctl.Enabled = False
                End Select
            Next ctl
            Me.ld_recherche.Enabled = True
            Me.ld_recherche.Locked = False
            'on change le titre
            Me.za_titre.Caption = "Consultation d'un comité d'engagement"
            
        Case "ce_suppr"
            'boutons
            Me.bt_annuler.Visible = False
            Me.bt_valider.Visible = False
            Me.bt_supprimer.Visible = True
            'ajout impossible
            Me.AllowAdditions = False
            'on affiche la partie Détail
            Me.Détail.Visible = False
            ' on bloque les champs que l'on consulte pour empécher la modification
            For Each ctl In Me.Controls
                Select Case ctl.ControlType
                    Case acTextBox, acComboBox
                        ctl.Enabled = False
                End Select
            Next ctl
            Me.ld_recherche.Enabled = True
            Me.ld_recherche.Locked = False
            'on change le titre
            Me.za_titre.Caption = "Suppression d'un comité d'engagement"
    End Select
    End Sub
    Lorsque le formulaire s'ouvre en modification, les boutons doivent tous être accessible. Ce formulaire marche comme je le souhaite.
    Par contre lors de l'ouverture en consultation ou suppression, je voudrais verrouiller tous les champs sauf UN, la liste déroulante qui me permet de choisir la personne que je veux afficher.
    Actuellement, je peux accéder à cette liste mais pas selectionner.
    Je voudrais y accéder et pouvoir selectionner (débloquer cette liste uniquement)

    Le champ qui doit être libre s'agit bien de ld_recherche.

    Un test qui me parait vraiment louche : si dans "Consultation" je met la même boucle FOR que "Modification", le problème est toujours le même ... accès à la liste mais pas de selection possible
    Si je supprime totalement la boucle FOR dans "Consultation", je n'y ai pas acces non plus ... le problème viens donc de plus haut ... mais où ?!

    Mille merci par avance

  2. #2
    Membre habitué Avatar de 4rocky4
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    528
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 528
    Points : 180
    Points
    180
    Par défaut
    Bon j'suis reparti d'une sauvegarde de ma base, j'a tout refait et ca marche cette fois-ci ...

    Bon je sais pas ce qui n'allait pas mais là



    Parcontre je voudrais mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For Each ctl In Me.Controls
                Select Case ctl.ControlType
                    Case acTextBox, acComboBox, acCheckBox
                        ctl.Locked = True
                End Select
            Next ctl
    Dans un module afin d'appeler juste la procédure au lieu d'avoir à chaque fois le code.

    comment dois-je faire ?

    Si je met ce code dans un module et que je l'appel dans mon formulaire,
    il y a une erreur a ce niveau là :

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut

    Il faut adapter ton code pour qu'il soit générique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Sub Blocage(frm As Form)
        Dim ctl As Control
         For Each ctl In frm.Controls
         Select Case ctl.ControlType
              Case acTextBox, acComboBox, acCheckBox
                   ctl.Locked = True
              End Select
         Next ctl
     
    End Sub
    et tu l'appelles dans ton formulaire de la façon suivante
    Attention tapé à la main.

    Starec

  4. #4
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Bonjour.....

    Je pense que ton problème vient d'un verrouillage mal défini à la conception de ton Formulaire....

    En mode conception, il faut que tous tes contrôles aient leurs propriétés:
    ..Activé = oui
    ..Verrouillé = non

    Sinon, j'ai un petit doute ici.....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     'on affiche la partie Détail
    Me.Détail.Visible = False
    .......là tu cache ta Zone détail.......

  5. #5
    Membre habitué Avatar de 4rocky4
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    528
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 528
    Points : 180
    Points
    180
    Par défaut
    Oui j'ai fait exprès, la partie détail s'affiche uniquement lorsque ld_recherche est selectionné.

    Merci Starec, ca marche

    Je n'ai pas touché à la conception de mon formulaire mais juste au code . . .
    Et tout est rentré dans l'ordre.

    Je vous remercie beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer tous les champs de même nom
    Par hlr dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 07/02/2005, 14h26
  2. afficher tous les champs d'une table
    Par julio84 dans le forum ASP
    Réponses: 8
    Dernier message: 19/01/2005, 11h31
  3. selectionner tous les champs sauf un ?
    Par HULK dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 13/01/2005, 16h51
  4. Retrouver tous les champs d'une table
    Par tripper.dim dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/07/2004, 21h40
  5. Afficher tous les champs d'une table avec dbexpress et MySQL
    Par LHT dans le forum Bases de données
    Réponses: 2
    Dernier message: 25/06/2004, 18h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo