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 :

Mise en forme conditionnelle avec screen.activeControl [AC-2007]


Sujet :

IHM

  1. #1
    Membre habitué Avatar de doncamelo
    Homme Profil pro
    Chargé d'études
    Inscrit en
    Décembre 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chargé d'études
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2007
    Messages : 129
    Points : 164
    Points
    164
    Par défaut Mise en forme conditionnelle avec screen.activeControl
    Bonjour le Forum,

    Mon but est de permettre à l'utilisateur d'identifier le control actif en lui appliquant une couleur de fond.

    L'utilisation de la MFC par le menu access fonctionne très bien. Mais mon formulaire comportant un certain nombre de control, j'ai voulu passer par vba.

    Le code utilisé est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Form_Current()
     
        Dim Lecontrol As Control
     
        Set Lecontrol = Screen.ActiveForm.ActiveControl
        Lecontrol.BackColor = RGB(255, 255, 0) 'RGB(255, 255, 0) = exemple de l'aide en ligne F1
     
     
    End Sub
    Le message d'erreur est le suivant :

    Erreur d'exécution '2474'
    L'expression entrée requiert que le contrôle se trouve dans la fenêtre active.
    Pourriez-vous me dire ce qui ne va pas dans ce code ?

    Merci
    Doncamelo

  2. #2
    Membre habitué Avatar de doncamelo
    Homme Profil pro
    Chargé d'études
    Inscrit en
    Décembre 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chargé d'études
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2007
    Messages : 129
    Points : 164
    Points
    164
    Par défaut
    Bonjour,

    J'ai essayé de modifier mon code après avoir consulté le tuto ci-dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://warin.developpez.com/access/mfc/
    Mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Form_Current()
        Dim MonFormulaire As Form
        Set MonFormulaire = Forms!frmrecherche2
     
        Dim MonControl As String
            MonControl = MonFormulaire.ActiveControl.Name
     
        Debug.Print MonControl
     
        MonControl.FormatConditions.Add acFieldHasFocus
        MonControl.FormatConditions.Item(0).BackColor = vbGreen
    End Sub
    Et là j'ai un autre message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Erreur de compilation
    Qualificateur incorrect
    L'erreur soulignée est sur la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonControl.FormatConditions.Add acFieldHasFocus
    J'ai donc remplacé MonControl par MonFormulaire.ActiveControl.Name
    j'ai toujours le même message d'erreur

    Auriez-vous une idée ?

  3. #3
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 912
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 912
    Points : 4 811
    Points
    4 811
    Par défaut
    bonjour,
    La méthode .FormatConditions.Add s'applique sans doute plus à un contrôle qu'à une chaine de caractères

    Donc déclare déjà MonControl comme un controle et corrige la suite



  4. #4
    Membre habitué Avatar de doncamelo
    Homme Profil pro
    Chargé d'études
    Inscrit en
    Décembre 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chargé d'études
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2007
    Messages : 129
    Points : 164
    Points
    164
    Par défaut
    Bonjour micniv,

    C'est à ce niveau que je bloque.

    Quand je déclare MonControl comme un controle control, j'ai le message :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Erreur d'exécution '2474'
    L'expression entrée requiert que le contrôle se trouve dans la fenêtre active.
    Je tourne en boucle

  5. #5
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 912
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 912
    Points : 4 811
    Points
    4 811
    Par défaut
    Une solution simple peut être la suivante :
    dans les evts suivants de chaque bouton, tu places le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Private Sub Cmd1_GotFocus()
        With Me.ActiveControl
            .BackColor = RGB(255, 255, 0)
        End With
    End Sub
     
    Private Sub Cmd1_lostFocus()
        With Me.ActiveControl
            .BackColor = RGB(200, 200, 255)
        End With
    End Sub
    Ainsi tu n'as pas à utiliser les MFC.
    Rq : je suis en acc2003 donc pas testé.

  6. #6
    Membre habitué Avatar de doncamelo
    Homme Profil pro
    Chargé d'études
    Inscrit en
    Décembre 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chargé d'études
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2007
    Messages : 129
    Points : 164
    Points
    164
    Par défaut
    Merci beaucoup micniv,

    Ta solution fonctionne parfaitement, mais je n'en démords pas moins de vouloir trouver une solution avec Screen.activeControl.

    Je reviendrai sur ce post une fois la solution trouvée.

    Encore merci.
    Doncamelo.

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

Discussions similaires

  1. Mise en forme conditionnelle avec les fontions "ou, non, estnum, trouve"
    Par P96O1004 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/03/2009, 11h17
  2. [E-03] : Mise en forme conditionnelle avec 5 choix
    Par basto dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/10/2008, 12h40
  3. mise en forme conditionnelle avec date
    Par jeff192 dans le forum Excel
    Réponses: 1
    Dernier message: 20/03/2008, 16h08
  4. Mise en forme conditionnelle avec Access 97
    Par soso78 dans le forum IHM
    Réponses: 4
    Dernier message: 22/11/2007, 20h25
  5. Réponses: 4
    Dernier message: 29/03/2007, 09h10

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