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

Macros et VBA Excel Discussion :

Utiliser la couleur d'un bouton de formulaire dans une cellule


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2009
    Messages
    587
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 587
    Par défaut Utiliser la couleur d'un bouton de formulaire dans une cellule
    Bonjour à tous.

    J'ai (un peu) cherché sur le forum, mais je ne suis sans doute pas très fort en recherche : je n'ai pas trouvé.

    Je croyais que ce que je voulais faire était très simple : je voudrais mémoriser une couleur, et l'applique à une cellule de feuille quand je double-clique dedans (ça, je sais le faire).

    Maintenant, j'ai créé un formulaire avec six boutons "OK" de couleurs différentes, et c'est cette couleur que je voudrais mémoriser pour la fonction ci-dessus. Et je n'arrive à rien !

    J'ai commencé naïvement par prendre la valeur "Me.BackColor" dans le code associé au bouton, pour le recopier dans le "Target.Interior.Color" dans le code du "BeforeDouleClick", mais ça n'est manifestement pas le bon truc.

    Alors j'ai espéré décomposer le "Me.BackColor" en trois composantes et recomposer une couleur avec RGB, mais j'ai l'impression que la valeur (Long) que je récupère dans "Me.BackColor" n'a rien à voir avec celle affichée dans les propriétés du bouton, alors je suis perdu, et je m'adresse à vous.

    En vous remerciant de m'avoir lu, et en espérant avoir été compris.

    AMIcalement.

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Tu crées six formes (Insertion > Forme) de la forme et de la taille que tu veux (rectangle, rond, étoile) et qui seront tes "boutons".
    Tu les remplis avec la couleur qui va bien.

    Tu mets dans un module la macro suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub couleur()
    Selection.Interior.Color = ActiveSheet.Shapes(Application.Caller).Fill.ForeColor
    End Sub
    Tu associes cette macro à chacun de tes "boutons".

    Pour faire un test, tu choisies n'importe quelle cellule et tu appuies sur n'importe lequel de tes boutons.
    La cellule devrait prendre la couleur du bouton.

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 364
    Par défaut
    Bonsoir
    Ton formulaire se nommant Usf, as-tu, dans la fenêtre de codes de l’onglet de travail :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
      Usf.Show
    End Sub
    Tu dois avoir dans la fenêtre des codes du formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub C1_Click()   ‘CommandButton1
      ActiveCell.Interior.Color = C1.BackColor
    End Sub
    Private Sub C2_Click()   ‘CommandButton2
      ActiveCell.Interior.Color = C2.BackColor
    End Sub

  4. #4
    Membre éclairé
    Inscrit en
    Mai 2009
    Messages
    587
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 587
    Par défaut
    @ OrDonc.

    Ca n'est pas tout à fait comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Target.Column = 6 Or Target.Column = 7 Or Target.Column = 8 Or Target.Column = 10 Then
        Target.Interior.Color = CoulM
    End If
    End Sub
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Private Sub OK1_Click()
    CoulM = Me.BackColor
    OK
    End Sub
     
    Private Sub OK2_Click()
    CoulM = Me.BackColor
    OK
    End Sub
     
    etc...
    Avec les déclarations ici ou là qui vont bien.

    Et c'est ça qui ne marche pas : le double clic me met le fond en noir.

    Merci d'avoir essayé.

  5. #5
    Membre éclairé
    Inscrit en
    Mai 2009
    Messages
    587
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 587
    Par défaut
    @Menhir

    Ta suggestion ne me convient pas, car mon formulaire (dans la colonne de gauche de la page VBA, ils appellent ça "Feuille") fait aussi autre chose : j'ai besoin que ce soit bel et bien un formulaire. Je pourrais sûrement y mettre autre chose que des boutons, avec détection du clic, mais ça ferait certainement la même chose.

    En fait, pour poser mon problème en d'autres termes, "Quelle calculs faut-il faire sur la valeur "BackColor" d'un élément de formulaire pour obtenir la même couleur dans une cellule de feuille.

    Je tombe tellement des nues que ce soit même une question ! C'est vraiment des malades, chez µ$ !

    AMIcalement.

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    Me c'est l'UF, utiliser l'objet :
    Et comment est déclaré CoulM ? En tête du module et hors procédure ?
    eric

  7. #7
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par L'AMI Yves Voir le message
    En fait, pour poser mon problème en d'autres termes, "Quelle calculs faut-il faire sur la valeur "BackColor" d'un élément de formulaire pour obtenir la même couleur dans une cellule de feuille.
    Aucun.
    A ma connaissance, la codification RGB est la même pour tous les éléments d'Excel tant qu'on ne passe pas par des propriétés comme ColorIndex ou autre.

    Cela dit, es-tu sûr que c'est BackColor qu'il faut utiliser et non pas ForeColor ?

    Comme personne, dans notre discussion, ne parle de "feuilles", j'ai cru que je serai mieux compris si je parlais de "formulaire". Est-ce cela que toi, tu appelles "userform" ?
    Lorsqu'on parle de "feuilles", il s'agit généralement d'onglets du classeur Excel, de Feuilles de calcul, "Sheets" ou "Worksheets" en anglais.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 17/09/2014, 12h30
  2. Réponses: 4
    Dernier message: 08/08/2007, 14h57
  3. Réponses: 5
    Dernier message: 20/07/2007, 15h11
  4. formulaire dans une cellule excel
    Par amel95140 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 18/07/2006, 11h05
  5. peut on changer un bouton de formulaire par une image?
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 19/08/2005, 14h55

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