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

Access Discussion :

[access] Code général


Sujet :

Access

  1. #1
    Nouveau membre du Club Avatar de Puffcash
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 54
    Points : 36
    Points
    36
    Par défaut [access] Mise en forme générale
    Salut,

    Je voudrais que dans tous mes formulaires, lorsque je remplis un champ, l'étiquette devant celui-ci change de couleur. J'ai écrit le code pour un champ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Champ_BeforeUpdate(Cancel As Integer)
    If IsNull(Champ) = True Then
    Étiquette128.ForeColor = RGB(0, 0, 0)
    Else
    Étiquette128.ForeColor = RGB(25, 160, 240)
    End If
    End Sub
    Ca marche, mais le probleme c'est que j'ai au moins 300 champs en comptant tous mes formulaires. Je ne veux pas taper ce code pour tous mes champs...

    Est-ce qu'il y un solution pour rendre général ce code ?

    Merci

  2. #2
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    les please help dans les titres sont interdits.

    Merci
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  3. #3
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Tu as une solution ici...

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  4. #4
    Nouveau membre du Club Avatar de Puffcash
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 54
    Points : 36
    Points
    36
    Par défaut
    Salut Argy,
    Merci pour ta réponse

    Je comprend pas tout à ton code, mais j'immagine que je dois taper au moins ça pour chaque textebox, non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub MyTextBox_BeforeUpdate(Cancel As Integer)
      Call ChangeColorCaption(MyTextBox, RGB(25, 160, 240))
    End Sub

    Merci

  5. #5
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    c'est possible, il faut faire une fonction générique, qui sera affectée lors du chargement du formulaire à chaque contrôle de type TextBox

    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
    Private Sub Form_Load()
    
    Dim ctl As Control
    
    For Each ctl In Me.Controls
        If ctl.ControlType = acTextBox Then
            ctl.BeforeUpdate = "=TrackControl(""" & ctl.Name & """)"
        End If
    Next ctl
    
    Set ctl = Nothing
    
    End Sub
    
    
    Private Function TrackControl(ByVal ctlName As String)
    
    Dim ctl As Control
    
    For Each ctl In Me.Controls
        ' on utilise la propriété Parent pour trouver l'étiquette liée
        '  au contrôle en question
        ' on peut aussi utiliser
        '  Me.Controls(ctlName).Controls.Item(0).ControlName
        If ctl.ControlType = acLabel And ctl.Parent.Name = ctlName Then
            If IsNull(Me.Controls(ctlName)) = True Then
                ctl.ForeColor = RGB(0, 0, 0)
            Else
                ctl.ForeColor = RGB(25, 160, 240)
            End If
        End If
    Next ctl
    
    Set ctl = Nothing
    
    
    End Function
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  6. #6
    Nouveau membre du Club Avatar de Puffcash
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 54
    Points : 36
    Points
    36
    Par défaut
    Merci caféine,

    Ton code est parfait, c'est exactement ce que je voulais. J'aimerais bien comprendre ton code, mais c'est un peu compliqué pour moi, alors je me suis contenté de copier/coller


    encore merci

    bye

  7. #7
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    Wouahh, c'est beau Cafeine mais ta solution reste effective même sur le changement de l'enregistrement...

    D'ailleurs la solution que je propose aussi.

    Puffcash, il faudra que tu prévoies le fait de passer à l'enregistrement suivant ou précédent autant que l'annulation du changement en cours...

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

  8. #8
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    On doit pouvoir s'en sortir avec un truc du genre :

    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
    Private Sub Form_Current()
    
    Dim ctl As Control
    
    For Each ctl In Me.Controls
        If ctl.ControlType = acTextBox Then
            If IsNull(ctl.Value) Or Len(ctl.Value) = 0 Then
                Me.Controls(ctl.Controls.Item(0).ControlName).ForeColor = RGB(0, 0, 0)
            Else
                Me.Controls(ctl.Controls.Item(0).ControlName).ForeColor = RGB(25, 160, 240)
            End If
        End If
    Next ctl
    
    Set ctl = Nothing
    
    End Sub
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  9. #9
    Nouveau membre du Club Avatar de Puffcash
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 54
    Points : 36
    Points
    36
    Par défaut
    Salut,

    Ca marche nickel pour les "champs libres" mais que faut-il ajouter dans le code pour que les étiquettes devant des listes modifiables ou des cases à cocher soit concernéés ?

    merci

  10. #10
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Et la mise en forme conditionnelle ?

    ça n'irait pas ?

    Quant au titre ... merci d'en mettre un plus précis !

  11. #11
    Nouveau membre du Club Avatar de Puffcash
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 54
    Points : 36
    Points
    36
    Par défaut
    salut,

    La mise en forme conditionelle ? ça à l'air bien.... mais comment on fait ça ?
    Ca réglerait mon probleme des listes modifiables et les cases cocher?


    Merci,


    PS : je voudrais bien changer le titre, mais je sais pas comment faire ...

  12. #12
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 123
    Points : 12 169
    Points
    12 169
    Billets dans le blog
    5
    Par défaut
    Re,

    1/ Tu as un tuto édité par Tofalu à ce sujet
    2/ Tu cliques sur Editer de ton 1er post et tu changes le titre. (merci)

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0
    *** Je recherche des profils (2 ans min.) Java EE, Fullstack, Front, .Net, Mobile... pour CDI ***

Discussions similaires

  1. Access: Code VBA
    Par johndi dans le forum VBA Access
    Réponses: 6
    Dernier message: 09/04/2013, 16h51
  2. [AC-2010] Plantage Access Code VBA
    Par Lologolas dans le forum VBA Access
    Réponses: 7
    Dernier message: 13/12/2011, 09h10
  3. [Intellij Idea] Profil d'inspections de code général
    Par Sandro Munda dans le forum IntelliJ
    Réponses: 0
    Dernier message: 26/02/2010, 10h02
  4. Ouvrir document Word à partir d'un formulaire Access(code VBA)
    Par protocoleigrp dans le forum VBA Access
    Réponses: 1
    Dernier message: 15/06/2009, 16h22
  5. Création BD Access Code SQL pour relation 1-1 ?
    Par colorid dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 26/10/2005, 16h42

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