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

IHM Discussion :

Activé boutons sur formulaires appelants depuis formulaire appelé [AC-2007]


Sujet :

IHM

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 154
    Points : 193
    Points
    193
    Par défaut Activé boutons sur formulaires appelants depuis formulaire appelé
    Bonsoir à tous.

    J'ai plusieurs formulaires dans lesquels il y a un Textbox date (ET_datesoins) et deux boutons associés pour décrémenter (BtnDec) et incrémenter (BtnInc) de un jour à chaque click.

    Petite précision : je veux interdire la saisie de date > à Date().
    Jusque là, tout va bien.

    J'ai mis une procédure sur click sut mon TextBox pour ouvrir un autre form, une boite de dialogue avec dedans un activex Calendar.
    Jusque là tout va encore trés bien, je sais récupérer dans ET_datesoins, la date sélectionnée dans mon activex.

    Mais là où je bloque complètement, c'est que je voudrais aussi réactiver mon bouton BtnInc de mon form actif si la date est < à date().

    Voici mon code et le pb se situe dans activation de BtnInc :

    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
    Private Sub Calendar0_Click()
        Dim frm As String
        Dim ctl As String
        Dim btn As CommandButton
        Dim objForm As AccessObject, dbs As Object
     
        On Error GoTo Err_Args
        frm = Mid(Me.Caption, 1, InStr(1, Me.Caption, "!") - 1)
        ctl = Mid(Me.Caption, InStr(1, Me.Caption, "!") + 1)
     
        If IsNull(frm) Or frm = "" Or IsNull(ctl) Or ctl = "" Then GoTo Err_Args
     
        If Me.calendar0 > Date Then
            MsgBox "Veuillez saisir une date antérieure à aujourd'hui !", vbOKOnly + vbCritical, "Action interdite"
            Forms(frm)(ctl) = Date
            GoTo Err_Args
        Else: Forms(frm)(ctl) = Me.calendar0
            DoCmd.Close
     
            'activation de BtnInc quelque soit le formulaire appelant
            Set dbs = Application.CurrentProject
            For Each objForm In dbs.AllForms
            If objForm.IsLoaded = True Then
     
                Set btn = objForm!BtnInc
                objForm!btn.Enabled = True
     
            End If
            Next
        End If
     
    Err_Args:
    End Sub
    J'arrive à identifier le form actif et rien de plus.
    Le code ci joint n'affiche aucune erreur mais ne fonctionne pas du tout car rien ne se passe.

    Merci pour vos idées.

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 396
    Points : 19 821
    Points
    19 821
    Billets dans le blog
    66
    Par défaut
    Salut,

    Une chose me gène dans ton code quand tu fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ...
    Else: Forms(frm)(ctl) = Me.calendar0
            DoCmd.Close
    ...
    Le :

    ferme le formulaire actif, donc le formulaire contenant le code de ta procédure, donc il serait logique que le reste du code ne s'exécute pas

    D'autre part, pourquoi n'essaie tu pas pour activer ou déactiver ton bouton du formulaire appelant un truc comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms!TonFormulaire!BtnInc.Enabled = True
    A+

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 154
    Points : 193
    Points
    193
    Par défaut
    Bonsoir User.

    Donc pour le :

    à priori, le pb ne vient pas de là car j'ai testé en ajoutant une MsgBox pour savoir si mon code reconnaissait mon form actif. Et donc la procédure suivait son chemin normalement.

    Quant au :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms!TonFormulaire!BtnInc.Enabled = True
    effectivement ça marche trés bien. Mais mon souci est que j'ai plusieurs formulaires avec une Textbox date qui appellent ma boite de dialogue Calendar.
    Je pourrai c'est vrai ajouter cette écriture autant de fois que j'ai de formulaires concernés.
    Ce serai quand même plus propre de passer par variables ...

    Merci pour ton aide.

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 396
    Points : 19 821
    Points
    19 821
    Billets dans le blog
    66
    Par défaut
    Re,

    Une solution parmi d'autres serait de passer le nom du formulaire appelant au formulaire appelé en utilisant l'argument "openargs" de la méthode OpenForm.

    1 exemple, si ton formulaire appelé se nomme "F_Calendar" :

    Sur le formulaire appelant tu auras le code qui ouvre "F_Calendar" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm "F_Calendar", , , , , , Me.Name

    Et après dans le formulaire "F_Calendar", tu as le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms(Me.OpenArgs)!BtnInc.Enabled = True
    Si j'ai bien tout saisi

    A moins que frm désigne le nom du formulaire appelant, dans ce cas la solution est évidente ...

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 154
    Points : 193
    Points
    193
    Par défaut Ca marche !!!
    Bonjour et merci pour l'info.

    Ca marche exactement comme je je souhaitais.
    Voici mon code à présent si ça intéresse qqun :

    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
    Private Sub Calendar0_Click()
        Dim frm As String
        Dim ctl As String
     
        On Error GoTo Err_Args
        frm = Mid(Me.Caption, 1, InStr(1, Me.Caption, "!") - 1)
        ctl = Mid(Me.Caption, InStr(1, Me.Caption, "!") + 1)
     
        If IsNull(frm) Or frm = "" Or IsNull(ctl) Or ctl = "" Then GoTo Err_Args
     
        If Me.calendar0 > Date Then
            MsgBox "Veuillez saisir une date antérieure à aujourd'hui !", vbOKOnly + vbCritical, "Action interdite"
            Forms(frm)(ctl) = Date
            GoTo Err_Args
        End If
     
        If Me.calendar0 = Date Then
            Forms(Me.OpenArgs)!BtnInc.Enabled = False
            DoCmd.Close
        End If
     
        If Me.calendar0 < Date Then
            Forms(frm)(ctl) = Me.calendar0
            Forms(Me.OpenArgs)!BtnInc.Enabled = True
            DoCmd.Close
        End If
     
    Err_Args:
    End Sub
    Merci User et bon WE.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 06/05/2015, 12h24
  2. Réponses: 4
    Dernier message: 15/04/2014, 16h47
  3. [AC-2007] activer un scanner par bouton sur formulaire
    Par lolocdm dans le forum VBA Access
    Réponses: 1
    Dernier message: 03/11/2010, 20h36
  4. [AC-2003] Ouvrir une autre base depuis un bouton sur formulaire
    Par Bernard67 dans le forum VBA Access
    Réponses: 2
    Dernier message: 07/05/2009, 13h38
  5. Réponses: 4
    Dernier message: 08/02/2007, 15h00

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