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 :

Mettre en évidence un champs d'un sous formulaire en mode feuille de données


Sujet :

VBA Access

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    683
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 683
    Points : 237
    Points
    237
    Par défaut Mettre en évidence un champs d'un sous formulaire en mode feuille de données
    Bonjour,
    J'ai un form avec un sous form (lignes de détails) en mode feuille de données.

    Sur mon détail, la première colonne est un menu déroulant permettant de sélectionner un article. Si l'article choisit a un code particulier dans un champ ACC_SPL, je veux que celui-ci soit mis en évidence (sorte de repère visuel)

    Mon menu déroulant affiche par exemple :
    cod_art, désignation, acc_spl, famille
    "vélo", "vélo de course", "", "famille1"
    "voiture", "voiture de course", "STK", "famille1"

    Je voudrais, si on saisit l'article vélo, que la ligne ou que le champs COD_ART soit en rouge quand ACC_SPL = "".

    J'ai essayé par une mise en forme conditionnelle : cela marche MAIS j'ai un critère de + à prendre en compte = la Famille
    Cela ne doit le faire QUE sur la famille 1, la famille3, la famille4 la famille 12 (et ainsi de suite pour une trentaine de famille)
    voici ce que j'ai mis dans ma mise en forme conditionnelle mais la taille est limitée et je ne peux pas mettre toutes mes familles dans les conditions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (Nz(LISTE_ART.Column(11))="" Et Nz(LISTE_ART.Column(9))="01") Ou (Nz(LISTE_ART.Column(11))="" Et Nz(LISTE_ART.Column(9))="02") Ou (Nz(LISTE_ART.Column(11))="" Et Nz(LISTE_ART.Column(9))="04") Ou (Nz(LISTE_ART.Column(11))="" Et Nz(LISTE_ART.Column(9))="05") Ou (Nz(LISTE_ART.Column(11))="" Et Nz(LISTE_ART.Column(9))="06") Ou (Nz(LISTE_ART.Column(11))="" Et Nz(LISTE_ART.Column(9))="07")
    Alors j'ai cherché du côté VBA avec ce code : (je n'ai pas encore testé la famille)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ACC_SPL = Nz(LISTE_ART.Column(11))
    FAMILLE = Nz(LISTE_ART.Column(12))
     
    If ACC_SPL = "" Then
        Forms![Bon de commande].Form![ACCESS_LIGNES_VTES_SF].Form!COD_ART.BackColor = 9176060
     
            ElseIf ACC_SPL <> "" Then
            Forms![Bon de commande].Form![ACCESS_LIGNES_VTES_SF].Form!COD_ART.BackColor = 12348669
     
    End If
    Mais bien que le code ne plante pas, je ne vois rien.

    Quelqu'un sait-il où je me trompe ? ou une autre méthode ?

    Merci pour votre aide
    Thibault

  2. #2
    Membre expérimenté
    Homme Profil pro
    Indépendant développeur et formateur
    Inscrit en
    Octobre 2007
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant développeur et formateur
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 036
    Points : 1 598
    Points
    1 598
    Par défaut
    hello
    je pense quand même que ta solution vient de la mise en forme conditionnelle avec une xpression où tu vas pouvoir mettre plusieurs conditions avec des AND ou des OR
    sinon, par VB, on peut mettre des mises en formes conditionnelles (elles n'affectent que l'enregistrement en cours, contrairement au backcolor qui se vit sur tous les enregistrements)
    dans l'exemple, comme j'ai enlevé le cadre de la zone de texte, pour visualiser la zone qui a le focus, je lui donne un backcolor
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub code_postal_GotFocus()
    On Error Resume Next
    code_postal.FormatConditions.Add acFieldHasFocus
    code_postal.FormatConditions(0).BackColor = 8454143
    End Sub
    l'avantage de VBA, c'est que tu peux, suivant une logique éventuellement compliquée, mettre une condition fort simple comme acFieldHasFocus, ce qui fait que la conjonction de tes conditions et du focus allumera le champ ! !

    En espérant aider et avec mes excuses si je suis à coté de la plaque
    -------------------Simplifi----------comme si tout était simple--------

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/06/2010, 15h38
  2. Réponses: 9
    Dernier message: 30/06/2008, 04h02
  3. Réponses: 10
    Dernier message: 28/12/2007, 07h11
  4. Réponses: 2
    Dernier message: 16/01/2007, 20h04
  5. Réponses: 6
    Dernier message: 14/12/2006, 20h04

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