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 :

Affichage conditionnel d'un champ


Sujet :

VBA Access

  1. #1
    Membre du Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Mars 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2011
    Messages : 64
    Points : 56
    Points
    56
    Par défaut Affichage conditionnel d'un champ
    Bonjour,

    J'ai besoin de vous pour résoudre un problème qui peut certainement se faire en VBA mais je ne suis pas sûr du tout.
    J'ai dans un formulaire un sous-formulaire affichant plusieurs lignes d'enregistrements. Ceux-ci contiennent des champs dont certains peuvent être vides. Les lignes contenant un certain champ vide sont affichées en blanc tandis que les autres sont affichées en vert avec la mise en forme conditionnelle d'Access.
    Maintenant, j'aimerais qu'en plus de changer la couleur de la ligne selon son contenu, un bouton soit visible ou à la fin de la ligne. J'ai essayé plusieurs choses mais je ne parviens qu'à le rendre visible pour aucune ligne ou bien pour toutes. Voici comment est structuré mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ' Evènements lors de la sélection d'une fiche de poste dans la liste
    Private Sub lst_Fiches_poste_AfterUpdate()
     
    Dim str_Fiche As String
     
    ' Sélection des modules, des compétences et des infos concernant leur acquisition par l'opérateur
    str_Fiche = "Requête SQL";
     
    ' Mise à jour du formulaire
    Me.sf_Elements_FP_Op.Form.RecordSource = str_Fiche
     
    End Sub
    Ce morceau correspond à la procédure s'exécutant lors d'un choix dans une liste, c'est celui qui génère les résultats du sous-formulaire.
    Merci d'avance!

    Cordialement,
    Prettyletter

  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 : 64
    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
    rien à voir avec le code !
    pour qu'un objet soit différencié suivant les lignes, il faut qu'il ait une source, il ne faut donc pas qu'il soit indépendant. (donc pas un bouton mais une zone de texte, quite à lui donner une apparence de bouton)
    après, tu peux lui appliquer les règles de mise en forme conditionnelle, y compris l'invisibilité.

  3. #3
    Membre du Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Mars 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2011
    Messages : 64
    Points : 56
    Points
    56
    Par défaut
    Salut!

    Merci pour ta réponse
    Je ne sais pas si cela peut fonctionner dans mon cas puisque non seulement je dois rendre invisible ce bouton lorsque le champ est rempli, mais je dois aussi en afficher un autre à la place.
    Pour être plus clair, mon tableau contient des noms de modules. Si ceux-ci ont été acquis, la date est renseignée et la ligne est verte. Le bouton en bout de ligne doit donc permettre la suppression de l'acquisition, donc la suppression de la date.
    En revanche, si la date n'est pas renseignée, le bouton doit permettre l'ajout de l'acquisition en inscrivant la date dans le champ correspondant.

    Mon idée, à la base, était de créer deux boutons qui sont rendus visibles ou invisibles selon la valeur du champ "date". Est-il possible de faire cela avec l'idée que tu m'as proposé? Je vais étudier cette piste en attendant ta réponse.

  4. #4
    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 : 64
    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
    tu peux tout à fait avoir un fonctionnement de bouton avec une zone de texte (sans son étiquette bien sûr!)
    avec deux, il suffit de faire deux fois le boulot

  5. #5
    Membre du Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Mars 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2011
    Messages : 64
    Points : 56
    Points
    56
    Par défaut
    Je crois que ça ne fonctionnera pas. J'ai besoin d'afficher une image et non du texte, et ce bouton n'a pas de source. J'aurais plutôt vu une solution comme l'affichage du tableau par VBA avec une boucle, en affichant le bouton à chaque itération selon la valeur de la date en cours. Je ne sais pas s'il est possible de procéder comme cela mais j'ai du mal à voir comment l'utilisation des zones de texte pourrait fonctionner dans mon cas.

  6. #6
    Membre du Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Mars 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2011
    Messages : 64
    Points : 56
    Points
    56
    Par défaut
    Bonjour,

    Je n'ai toujours pas trouvé de solution à mon problème. J'ai essayé plusieurs solutions, dont une qui pourrait peut-être fonctionner si je savais mieux m'y prendre.

    Au lieu de modifier la propriété RecordSource de mon sous-formulaire lors de la sélection d'une fiche de poste dans la liste, j'ai essayé de l'afficher ligne par ligne avec un Recordset pour pouvoir traiter chaque ligne séparément. Le soucis, c'est que je n'ai jamais réussi à les afficher. Pourquoi? Je n'en sais rien.

    J'avais donc procédé comme cela :

    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
    ' Evènements lors de la sélection d'une fiche de poste dans la liste
    Private Sub lst_Fiches_poste_AfterUpdate()
     
    Dim db As DAO.Database
    Dim rst_Fiche As DAO.Recordset
     
    Dim str_Fiche As String
     
    ' Sélection des modules, des compétences et des infos concernant leur acquisition par l'opérateur
    str_Fiche = "REQUETE SQL"
     
    ' Ouverture de la base
    Set db = Application.CurrentDb
     
    ' Ouverture du Recordset
    Set rst_Fiche = db.OpenRecordset(str_Fiche)
     
    While Not rst_Fiche.EOF
        Me.sf_Elements_FP_Op.Form.txt_Code = rst_Fiche("CODE")
        Me.sf_Elements_FP_Op.Form.txt_Libelle = rst_Fiche("LIBELLE")
        Me.sf_Elements_FP_Op.Form.txt_Formateur = rst_Fiche("FORMATEUR")
        Me.sf_Elements_FP_Op.Form.txt_Date_acq = rst_Fiche("DATE_ACQ")
        Me.sf_Elements_FP_Op.Form.txt_Observations = rst_Fiche("OBSERVATIONS")
     
        If rst_Fiche("DATE_ACQ") <> Null Then
            Me.sf_Elements_FP_Op.Form.btn_Valider.Visible = False
        Else
            Me.sf_Elements_FP_Op.Form.btn_Valider.Visible = True
        End If
     
        rst_Fiche.MoveNext
    Wend
     
    ' Fermeture et libération des objets
    rst_Fiche.Close
    Set rst_Fiche = Nothing
    Set db = Nothing
     
    End Sub
    Lorsque les propriétés Source des champs texte sont renseignés, le code retourne une erreur. Si je les enlève, et que les champs deviennent donc indépendants, je n'ai plus d'erreur mais rien ne s'affiche dans le sous-formulaire.
    La requête fonctionne très bien puisque j'obtiens les résultats souhaités en procédant comme je le faisais avant, c'est-à-dire via la propriété Recordsource.
    Je ne sais pas si ça vient d'une erreur d'écriture de mon code ou tout simplement si c'est parce qu'il n'est pas possible de procéder ainsi, en tout cas ça ne fonctionne pas. C'est pourquoi je me tourne encore vers vous!

    Merci!

    Cordialement,
    Prettyletter

  7. #7
    Membre du Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Mars 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2011
    Messages : 64
    Points : 56
    Points
    56
    Par défaut
    Bonjour,

    Désolé d'insister mais ce problème me bloque toujours...

    J'ai donc opté pour la solution qui m'a été donnée et j'ai utilisé un champ de texte avec affichage conditionnel. Maintenant, j'aimerais savoir s'il est possible d'afficher une valeur différente dans ce champ selon la valeur de la date? Par exemple, écrire "supprimer" dans un cas et "valider" dans l'autre, même si le mieux aurait été d'utiliser une image.

    J'attends vos idées!

Discussions similaires

  1. Affichage conditionnel d'un champs
    Par syntaxis dans le forum Salesforce.com
    Réponses: 2
    Dernier message: 23/01/2013, 15h51
  2. [AC-2003] affichage conditionnel dans un champ
    Par castours dans le forum IHM
    Réponses: 5
    Dernier message: 21/01/2011, 18h00
  3. Somme de valeurs de champs text et affichage conditionnel
    Par night_flyers dans le forum Langage
    Réponses: 20
    Dernier message: 27/03/2009, 18h13
  4. [DOM] Formulaire dynamique : affichage conditionnel de champs
    Par Flackou dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 21/08/2008, 21h47
  5. [PHP-JS] Affichage conditionnel d'un champ
    Par bankette dans le forum Langage
    Réponses: 15
    Dernier message: 23/07/2007, 13h54

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