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 :

Récupérer le nom d'un contrôle de type rectangle au clic de la souris [AC-2003]


Sujet :

Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    -
    Inscrit en
    Avril 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : -
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2014
    Messages : 10
    Points : 10
    Points
    10
    Par défaut Récupérer le nom d'un contrôle de type rectangle au clic de la souris
    Bonjour à tous,

    Voici mon problème :

    Je viens de mettre en place un nuancier de couleurs sous forme de formulaire (un peu dans l'esprit du nuancier dans Excel).

    Ce dernier fait 3,5 cm par 3,5 cm et contient 7 x 7 contrôles de type rectangle (49 petits carrés donc) qui ont chacun leur couleur.

    L'idée est de permettre aux utilisateurs du nuancier de récupérer le code HTML d'une couleur spécifique.

    J'ai donc nommé chaque rectangle ainsi :

    Bte_000000 : pour le noir
    Bte_FFFFFF : pour le blanc
    etc.

    Dans l'esprit je comptais mettre en place une procédure qui récupère automatiquement les 6 derniers caractères du nom du contrôle qui vient d'être cliqué.

    Mais là, je bloque. Le ActiveControl ne marche pas et je souhaiterais éviter de créer 49 procédures différentes pour chacun des carrés de couleur...

    Si l'un d'entre vous a une solution, ce serait super...

    Merci par avance pour votre aide.

    rn

    PS: c'est peut-être stupide d'avoir raisonner comme cela, il y a peut être un contrôle activex déjà existant qui fait ça

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 359
    Points : 23 829
    Points
    23 829
    Par défaut
    Personnellement, j'ajouterai 49 boutons transparents exactement sur les rectangles.
    Ensuite mettrai une fonction dans propriete OnClik apres les avoir tous selectionnes.

    Un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public function ClickBtnCouleur()
       msgbox me.activecontrol.name
    end function
    Bon tu vas devoir te cogner la creation des 49 boutons mais c'est assez simple.

    Sinon il me semble qu'il y a un controle ou un OCX ColorPicker qui existe. Tu pourrais peut-etre t'en servir.

    Note : Desole pour l'abscence des accents mais mon clavier ne les as pas.

    A+

  3. #3
    Membre à l'essai
    Homme Profil pro
    -
    Inscrit en
    Avril 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : -
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2014
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    Merci René,

    En fait, je voulais éviter de créer "n" fonctions pour mes "n" contrôles dans le formulaire (fastidieux et pas très propre non plus a priori), j'en ai 49, j'aurai tout autant pu en avoir 200

    La nuit portant conseil, voici la solution à laquelle je suis parvenu en combinant quelques essais et en m'appuyant sur des solutions associés à des sujets connexes...

    Je crée une fonction "bateau" qui affiche le nom d'un contrôle dans un msgbox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Function NomBte(ByRef ctl As Control)
     
    MsgBox ctl.Name
     
    End Function
    Dans un second temps, dans mon formulaire nuancier, sur l'événement ouverture, j'affecte à la volée la fonction NomBte() à tous les contrôles qui commencent par "Bte" (j'ai l'habitude de préfixer par type tous les contrôles dans mes formulaires) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Form_Open(Cancel As Integer)
     
    Dim ctl As Control
     
    For Each ctl In Me.Controls
    If Left(ctl.Name, 3) = "Bte" Then
    ctl.OnClick = "=NomBte([" & ctl.Name & "])"
    End If
    Next ctl
     
    End Sub
    Ca marche sans souci !

    PS : J'ai suivi tes conseils et ai trouvé sur Internet des solutions pour ouvrir le ColorPicker par défaut de Windows. Le problème c'est que mon nuancier est basé sur une série de couleurs personnalisées (liées à une charte graphique d'entreprise). L'intérêt d'un nuancier dédié est d'éviter que les utilisateurs aient à taper le code rgb de la couleur dont ils ont besoin (il est également beaucoup plus petit que celui de Windows )

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

Discussions similaires

  1. [AC-2007] Récupérer le nom d'un contrôle dans une variable.
    Par gerarddurand dans le forum VBA Access
    Réponses: 1
    Dernier message: 12/05/2012, 11h26
  2. Réponses: 2
    Dernier message: 18/06/2010, 11h18
  3. Réponses: 2
    Dernier message: 09/01/2009, 12h15
  4. récupérer le nom des champs d'une table de type VARCHAR
    Par melisse dans le forum Requêtes
    Réponses: 4
    Dernier message: 14/02/2008, 11h03
  5. Récupérer le nom du type de l'instance d'objet
    Par sony351 dans le forum C++Builder
    Réponses: 1
    Dernier message: 22/02/2007, 23h08

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