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 :

Changer couleur cellule sur double clic dans formulaire Access


Sujet :

Access

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Changer couleur cellule sur double clic dans formulaire Access
    Bonjour,
    je voudrais savoir comment faire pour changer la couleur d'une cellule dans un formulaire sur un double clic sur la cellule en question ?
    Et si lorsque l'on refait le double clic on revient à la première couleur ce serait encore mieux .
    Je ne connais pas grand chose en code , si vous pouvez m'aider . Merci d'avance.

  2. #2
    Membre éclairé
    Homme Profil pro
    D.E.
    Inscrit en
    Octobre 2013
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : D.E.

    Informations forums :
    Inscription : Octobre 2013
    Messages : 562
    Points : 764
    Points
    764
    Par défaut
    Citation Envoyé par pasbr Voir le message
    Bonjour,
    je voudrais savoir comment faire pour changer la couleur d'une cellule dans un formulaire sur un double clic sur la cellule en question ?
    Et si lorsque l'on refait le double clic on revient à la première couleur ce serait encore mieux .
    Je ne connais pas grand chose en code , si vous pouvez m'aider . Merci d'avance.
    Cellule ? Dans un formulaire ? Vous parlez d'une zone de texte ou d'une cellule d'un tableau d'un sous formulaire ?
    Parce que si c'est pour changer la couleur de fond, vous pouvez tout simplement utiliser la barre d'outil de mise en forme.

  3. #3
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Bonjour,

    Je suppose qu’il s’agit d’un contrôle dans un formulaire.

    Voici une proposition sans code.

    Dans mon exemple, J’ai ajouté au formulaire une zone de texte « Cpteur », éventuellement cachée et initialisée à 1.

    Une macro « AlternerCouleur »


    Elle se déclenche lorsqu’on double-clique le champ à colorer.
    Le champ à colorer a ce format conditionnel :




    Ainsi, lorsque « cpteur » sera impair le contrôle aura sa couleur initiale (ici bleu) et jaune lorsqu’il est impair.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  4. #4
    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
    Sauf erreur de ma part, Claude, dans le cas d'un formulaire continu, cela va affecter tous les contrôles Et comme il est question de cellule, j'imagine que le formulaire ressemble à un tableau.

    Personnellement, je partirai sur une collection en VBA qui regrouperait les lignes cliquées et le nombre de clic. On pourrait aussi utiliser un tableau, mais la collection implémente déjà la recherche d'un élément via sa clé, c'est plus simple. Le hic, c'est que la collection doit être remplie d'objet, je créerai donc une petite classe nommée clsCompteurMFC

    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
    Option Compare Database
     
    Private strId As String
    Private intValeur As Integer
     
     
    Public Function Incrementer()
        intValeur = intValeur + 1
        Incrementer = intId
    End Function
     
    Public Property Get Valeur() As Integer
        Valeur = intValeur
    End Property
    Public Property Let Valeur(pValeur As Integer)
        intValeur = pValeur
    End Property
     
    Public Sub Creer(pId As String, Optional pValeur As Integer)
        strId = pId
        intValeur = pValeur
    End Sub
    Dans un module, la déclaration de la collection et une fonction donnant accès à la valeur d'un élément.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public colCompteurMFC As Collection
     
    Function CompteurMFC(id As String) As Integer
    On Error GoTo err
    Dim oCpt As clsCompteurMFC
    Set oCpt = colCompteurMFC("t" & id)
    CompteurMFC = oCpt.Valeur
    err:
    End Function
    Au chargement et au déchargement du formulaire, on instancie ou détruit la collection :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Form_Load()
    Set colCompteurMFC = New Collection
    End Sub
     
    Private Sub Form_Unload(Cancel As Integer)
    Set colCompteurMFC = Nothing
    End Sub
    Enfin, sur l'évènement double clic d'une zone de texte

    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
    Private Sub Nom_DblClick(Cancel As Integer)
    On Error GoTo err
    Dim oCpt As clsCompteurMFC
    Set oCpt = colCompteurMFC("t" & Me.Groupe)
    oCpt.Incrementer
     
    fin:
    Me.Recalc
    Exit Sub
     
     
    err:
    Select Case err.Number
        Case 5
            Set oCpt = New clsCompteurMFC
            oCpt.Creer Me.Groupe, 1
            colCompteurMFC.Add oCpt, "t" & Me.Groupe
    End Select
    Resume fin
    End Sub
    Si je double clique sur une ligne j'incrémente le compteur de clic de cette ligne (les lignes doivent pouvoir être identifiées de façon unique, dans mon exemple, groupe est de type NumAuto). Si le compteur de la ligne n'existe pas, je le crée à 1 et l'ajoute à ma liste de lignes surveillées (colCompteurMFC)

    Enfin, dans la mise en forme conditionnelle de la zone de texte à colorier :

    Expression : CompteurMFC([Groupe]) Mod 2=1

    EDIT : c'est une piste, le code mérite d'être améliorer, notamment au niveau de la gestion d'erreur

  5. #5
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Effectivement. Et c'est sans doute le cas.



    Waaw !




    ligne 9

    = strId ?
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  6. #6
    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
    Incrementer = intValeur

    Plutôt

    Comme je n'utilise pas le retour de la fonction, je n'ai pas vu l'erreur. Merci

  7. #7
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Incrementer = intValeur
    ????

    J'ai mis = strId.




    Je viens d'essayer, dans mon cas, j'ai un autonum : impeccable !



    Par contre, s'il n'y en avait pas, je ne comprends pas comment distinguer les enregistrements entre eux.

    Si le compteur de la ligne n'existe pas, je le crée à 1 et l'ajoute à ma liste de lignes surveillées (colCompteurMFC)
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  8. #8
    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
    Le but de la fonction Incrementer et d'ajouter +1 et au passage de retourner la nouvelle valeur. Cela évite dans l'appelant de relire la propriété Value. Mais on s'en moque

  9. #9
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    En fait ça marche tout aussi bien sans cette instruction !
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour, et merci pour vos réponses, mais je reste coincé car je n’ai pas compris où mettre les codes de Tofalu.
    En fait j’aurai du dire que je ne connais rien en code, c’est plus proche de la vérité !
    Je reprends, c’est bien Tofalu qui a compris ma demande : en fait l’utilisateur de la base va saisir dans un tableau des articles (vêtements) et qté à commander selon la taille, et à la réception de la marchandise, je voudrais qu’en double cliquant dans la cellule Qté concernée celle-ci change de couleur . Ce serait un moyen simple et visuel de savoir ce qui a été livré. Et en redouble-cliquant revenir à la couleur d'avant si besoin.

    Rq : Dans mon cas sur 1 même enregistrement j’ai plusieurs cellules qui correspondent à des tailles de vêtements différentes pour l'article. (dans chaque colonne de taille je renseigne la qté correspondante).

    Quant au code que Tofalu écrit, où les mettre ? le 1er j'ai créé un module.
    mais le 2eme ? il se met où ?
    Pour les autres ça doit être dans Propriétés du formulaire je pense.
    merci d'avance.

  11. #11
    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
    C'est encore autre chose, car là il y a la notion de sauvegarde du résultat. Il suffit d'ajouter un champ EstLivre dans votre table des commandes et de baser la mise en forme conditionnelle dessus.

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Collégien
    Inscrit en
    Mars 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Mars 2017
    Messages : 4
    Points : 6
    Points
    6
    Par défaut
    Bonjour,
    Je sais que je déterre mais si ça peux servir à quelqu'un:
    Étant confronté à ce problème et débutant en programmation, j'ai mis en place une autre solution:

    1) créer un tableau:
    Nom : Access_5.png
Affichages : 1118
Taille : 6,6 Ko

    2) modifier la requête du formulaire:
    Nom : Access_2.png
Affichages : 1227
Taille : 35,5 Ko

    3) insérer les champs dans le formulaire (les rendre invisible ensuite)
    Nom : Access_6.png
Affichages : 1141
Taille : 9,1 Ko

    4) mettre dans le formulaire le code
    Par exemple celui qui me convenait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Ordre_DblClick(Cancel As Integer)
    If OrdreVu = -1 Then Else OrdreVu = -1
    End Sub
     
    Private Sub Form_Unload(Cancel As Integer)
    DoCmd.SetWarnings False
    DoCmd.RunSQL "Delete T_Vu.NumOrdre FROM T_Vu;"
    DoCmd.SetWarnings True
    End Sub
    5) mettre la mise en forme conditionnelle:
    Nom : Access_4.png
Affichages : 1330
Taille : 57,7 Ko

    Cette solution sûrement moins efficace que la première mais elle permet aux débutants comme moi de comprendre ce qu'ils font
    Images attachées Images attachées   

Discussions similaires

  1. [AC-2010] Macro "Ouvrir formulaire where" sur double-clic dans un sous-formulaire
    Par Beaver dans le forum Macros Access
    Réponses: 3
    Dernier message: 21/04/2015, 12h07
  2. [XL-2003] Double clic dans la cellule sur 2 feuilles différentes
    Par jeanlouisdep dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/02/2010, 15h15
  3. Recuperer valeur d'une cellule sur double clic sur la ligne
    Par boboss123 dans le forum Composants
    Réponses: 2
    Dernier message: 18/01/2010, 09h54
  4. Réponses: 3
    Dernier message: 04/10/2005, 16h39
  5. Ouvrir un fichier sur un double-clic dans une TListBox
    Par SegmentationFault dans le forum Composants VCL
    Réponses: 4
    Dernier message: 09/08/2004, 18h22

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