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 :

Création bouton couleur


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Femme Profil pro
    Urbaniste
    Inscrit en
    Octobre 2018
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Octobre 2018
    Messages : 19
    Par défaut Création bouton couleur
    Bonjour,

    Je viens vers vous car j'ai besoin de votre aide.
    Est-il possible de créer un bouton qui permet d'aller dans un autre onglet, j'ai essayé avec le mode création "controle de formulaire" mais je voudrais qu'il y ait un fond de couleur sur mon bouton mais c'est impossible, j'ai tout essayé, il est toujours gris. ça paraît simple mais c'est très compliqué pour moi qui suit une novice vbatienne.

    Avez-vous réussi à mettre un bouton en couleur.

    En vous remerciant pour votre aide.

    Bonne journée.

  2. #2
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour Audrey, bonjour le forum,


    Comme toi je pensais pouvoir le faire mais en effet je n'y arrive pas non plus. Essaie avec la barre d'outil Contrôle ActiveX puis la propriété Backcolor du bouton inséré...





  3. #3
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 178
    Par défaut
    hello,
    il faut utiliser un contrôle bouton activex et modifier la propriété backcolor :

    Nom : Excel_btn_color.png
Affichages : 5919
Taille : 42,6 Ko

    Edit : oops Thauthème nos messages se sont croisés mais même conclusion .

    Ami calmant, J.P

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 114
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Est-il possible de créer un bouton qui permet d'aller dans un autre onglet
    Un bouton n'est qu'un objet parmi d'autres et si nous parlons de bouton à insérer sur une feuille il y en a de deux types. Le bouton "formulaire" et le bouton "ActiveX". A l'aide du premier nous pouvons associer une procédure (appelée Macro) alors qu'avec le deuxième nous pouvons intercepter un ou plusieurs événements comme le Clic et modifier un ou plusieurs de ces propriétés comme sa couleur, sa police, etc.

    Donc pour répondre à votre question, oui, on peut modifier la couleur d'un bouton à condition que ce soit un bouton ActiveX et pour les boutons formulaire sauf erreur de ma part, on ne peut modifier que la police (couleur, type, taille, etc.)

    Petit exemple avec un ActiveX ToglleButton, bouton qui a deux valeurs TRUE ou FALSE
    Dans cet exemple on cache les colonnes A à D ou on les affiche et la couleur passe de vert à rouge
    Les événements sont interceptés dans le module de la feuille

    Procédure événementielle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub tglHide_UnHide_Click()
      Hide_UnHide
    End Sub
    Procédure qui masque ou affiche les colonnes A à D
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Hide_UnHide()
      Dim msg()
      msg = Array("Masquer", "Afficher")
      With Me.tglHide_UnHide
        Columns("A:D").EntireColumn.Hidden = .Value
        .Caption = msg(Abs(.Value))
        .BackColor = vbGreen / ((Abs(Not .Value) * 255) + 1)
        .ForeColor = vbWhite * (Abs(Not .Value))
        .Font.Bold = True
      End With
    End Sub
    Pour en savoir plus sur Les évènements dans la feuille de calcul Excel
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    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
    Je te conseille une solution beaucoup plus simple : utiliser une forme comme bouton (Ruban Insertion > Formes).

    Il est possible d'affecter une macro à une forme, elle peut donc servir de bouton.

    Et tu auras BEAUCOUP plus de possibilités d'un point de vu esthétique.
    Non seulement tu pourras changer la couleur mais tu pourras aussi changer la forme : bouton rond, triangle avec coins arrondis (mon préféré), étoile, soleil, smiley et même forme libre.
    Pour ce qui est de la couleur du fond, tu pourras faire des dégradés, jouer sur la transparence, faire des effets de relief, de texture, de halo, etc.

    Bref, faire un vrai beau bouton plus présentable que les boutons standards qui semble tout droit sortis des années 80 (ce qui est d'ailleurs le cas).

  6. #6
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 178
    Par défaut
    hello Menhir,
    avec une forme comment fais-tu de façon simple l'animation du bouton appuyé relaché ?
    Ami calmant, J.P

  7. #7
    Membre averti
    Femme Profil pro
    Urbaniste
    Inscrit en
    Octobre 2018
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Octobre 2018
    Messages : 19
    Par défaut
    Hello à tous,

    Ouaw, merci à tous pour votre réactivité, je viens à peine de terminer mon petit déjeuner et je vois toutes vos réponses. Ca fait plaisir

    Je vais tester vos différentes explications et je suis sûre que je trouverai mon bonheur.


    Merci à tous. Et vive ce forum !

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 114
    Billets dans le blog
    53
    Par défaut
    Bonjour J.P,
    avec une forme comment fais-tu de façon simple l'animation du bouton appuyé relaché ?
    Rien de plus simple
    Petit exemple
    On associe la forme à la procédure ToggleButton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub ToggleButton()
      Static Value As Boolean
      Value = Not Value
      ActiveSheet.Columns("G:K").EntireColumn.Hidden = Value
    End Sub
    On peut bien entendu sauver la dernière valeur de la variable Value dans une cellule ou référencer un nom ou même travailler directement avec cette référence
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  9. #9
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 178
    Par défaut
    hello Philippe,

    je me suis peut-être mal exprimé mais ma question concernée l'aspect de la forme quand on clique dessus : donner du "relief" au bouton pour avoir l'impression d'avoir appuyé dessus. Par exemple comme solution simple sans relief, inverser les couleurs.

    Ami calmant, J.P

  10. #10
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 114
    Billets dans le blog
    53
    Par défaut
    Bonjour JP
    J'avais bien compris que tu cherchais l'effet du bouton enfoncé mais je ne l'avais jamais fait

    Voici un exemple qui n'est pas du plus bel effet, il faut chercher la bonne forme. C'est ma première expérience VBA avec ces formes, il y a certainement mieux à faire.

    Il suffit de dessiner une forme et l'associer à la procédure ToggleButton

    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
    Sub ToggleButton()
      Static Value As Boolean
      Dim sh As Shape
      Dim msg()
      Set sh = ActiveSheet.Shapes(Application.Caller)
      msg = Array("Masquer", "Afficher")
      Value = Not Value
      With sh
        ' Effet 3 D
        With .ThreeD
        .BevelTopType = msoBevelCircle + Abs(Value)
        End With
        ' Alignement du texte
        With .TextFrame2
        .VerticalAnchor = msoAnchorMiddle                     ' Alignement vertical
        .TextRange.ParagraphFormat.Alignment = msoAlignCenter ' Alignement horizontal
         ' Traitement du texte
         With .TextRange
         .Characters.Text = msg(Abs(Value))
         .Font.Fill.ForeColor.RGB = vbWhite * (Abs(Not Value))
         End With
        End With
      .Fill.ForeColor.RGB = vbGreen / ((Abs(Not Value) * 255) + 1)
      End With
      ' Affiche ou masque les colonnes
      ' ActiveSheet.Columns("G:K").EntireColumn.Hidden = Value
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  11. #11
    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 jurassic pork Voir le message
    avec une forme comment fais-tu de façon simple l'animation du bouton appuyé relaché ?
    Etant donné que le bouton produit un effet de front (changement d'état) et non d'état (appuyé ou non) et donc ne peut pas avoir d'effet supplémentaire par son maintien, je ne vois pas trop l'intérêt de cette demande.

    Il est possible de récupérer l'information du "clic" lorsque l'utilisateur le déclenche, mais je doute qu'il soit possible de récupérer quelque par l'information "arrêt du clic" ou "relâche du bouton".
    Je ne pense donc qu'il n'est pas possible de faire ce que tu indiques, si tant est que ça puisse avoir un intérêt.

  12. #12
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 178
    Par défaut
    hello,

    en suivant l'idée à Philippe, j'ai trouvé un moyen d'animer un bouton créé à partir d'une forme :

    • On décale la forme de quelques pixels vers la droite et vers le bas.
    • On change la luminosité de la couleur de fond.
    • On fait une tempo de 400 millisecondes.
    • On remet la forme dans son état initial.


    voici le code :
    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
    #If VBA7 Then ' Excel 2010 or later
    Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal Milliseconds As LongPtr)
    #Else ' Excel 2007 or earlier
    Public Declare Sub Sleep Lib "kernel32" (ByVal Milliseconds As Long)
    #End If
    Private Sub AnimBoutonForme()
    Dim sh As Shape
    Dim lumin As Double
      Set sh = ActiveSheet.Shapes(Application.Caller)
      With sh
      lumin = .Fill.ForeColor.Brightness
      .Top = .Top + 2
      .Left = .Left + 2
      .Fill.ForeColor.Brightness = lumin - 0.2
      DoEvents
      Sleep 400
      .Top = .Top - 2
      .Left = .Left - 2
      .Fill.ForeColor.Brightness = lumin
      End With
      DoEvents
    End Sub
    voici un exemple d'utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub btn_GO_Cliquer()
    AnimBoutonForme
    ActiveSheet.Range("A1").Value = "Bouton GO cliqué !"
    End Sub
    Sub btn_OK_Cliquer()
    AnimBoutonForme
    ActiveSheet.Range("A1").Value = "Bouton OK cliqué !"
    End Sub
    et voici le résultat :

    Nom : anim_btn_excel.gif
Affichages : 5536
Taille : 65,6 Ko

    Ami calmant, J.P

  13. #13
    Membre averti
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2022
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Services de proximité

    Informations forums :
    Inscription : Novembre 2022
    Messages : 18
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    hello,

    en suivant l'idée à Philippe, j'ai trouvé un moyen d'animer un bouton créé à partir d'une forme :

    • On décale la forme de quelques pixels vers la droite et vers le bas.
    • On change la luminosité de la couleur de fond.
    • On fait une tempo de 400 millisecondes.
    • On remet la forme dans son état initial.


    voici le code :
    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
    #If VBA7 Then ' Excel 2010 or later
    Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal Milliseconds As LongPtr)
    #Else ' Excel 2007 or earlier
    Public Declare Sub Sleep Lib "kernel32" (ByVal Milliseconds As Long)
    #End If
    Private Sub AnimBoutonForme()
    Dim sh As Shape
    Dim lumin As Double
      Set sh = ActiveSheet.Shapes(Application.Caller)
      With sh
      lumin = .Fill.ForeColor.Brightness
      .Top = .Top + 2
      .Left = .Left + 2
      .Fill.ForeColor.Brightness = lumin - 0.2
      DoEvents
      Sleep 400
      .Top = .Top - 2
      .Left = .Left - 2
      .Fill.ForeColor.Brightness = lumin
      End With
      DoEvents
    End Sub
    voici un exemple d'utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub btn_GO_Cliquer()
    AnimBoutonForme
    ActiveSheet.Range("A1").Value = "Bouton GO cliqué !"
    End Sub
    Sub btn_OK_Cliquer()
    AnimBoutonForme
    ActiveSheet.Range("A1").Value = "Bouton OK cliqué !"
    End Sub
    et voici le résultat :

    Nom : anim_btn_excel.gif
Affichages : 5536
Taille : 65,6 Ko

    Ami calmant, J.P

    Bonjour à tous,

    Bonsoir JP, Bonsoir Phillipe,

    @JP : Mois ce qui m'intéresse c'est de pouvoir créer un bouton commandboutton (ActiveX) modifiable, je pense bien qu'avec insertions>Formes on pourra faire des beaux boutons à condition que la page soit protégée pour qu'on ne les modifie pas (déplacer, agrandir etc..) ce qui n'est pas mon cas. D'où ma question est-il possible de fixer le bouton(formes) sur la page là on souhaite sans verrouiller et sans protection de la feuille.

    Merci d'avance

  14. #14
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 178
    Par défaut
    Hello,
    on peut très bien protéger que certaines choses sur une feuille protégée.
    Exemple pour qu'à l'ouverture du classeur sur la feuille qui s'ouvre, on verrouille les formes mais qu'on autorise la modification de cellules :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Workbook_Open()
      ActiveSheet.Protect Password:="test", contents:=False, userinterfaceonly:=True
      Dim shape As shape
      For Each shape In ActiveSheet.Shapes
        shape.Locked = True
      Next
    End Sub
    Ami calmant, J.P

  15. #15
    Membre averti
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2022
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : Services de proximité

    Informations forums :
    Inscription : Novembre 2022
    Messages : 18
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    Hello,
    on peut très bien protéger que certaines choses sur une feuille protégée.
    Exemple pour qu'à l'ouverture du classeur sur la feuille qui s'ouvre, on verrouille les formes mais qu'on autorise la modification de cellules :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Workbook_Open()
      ActiveSheet.Protect Password:="test", contents:=False, userinterfaceonly:=True
      Dim shape As shape
      For Each shape In ActiveSheet.Shapes
        shape.Locked = True
      Next
    End Sub
    Ami calmant, J.P
    Bonjour JP,

    Merci pour ta réponse mais j'ai trouvé un fichier et vu le dernier bouton (ActiveX)
    Comment en créer ?

    tuto_boutons_avances.xlsm

    Merci
    @+

Discussions similaires

  1. création bouton en sdl
    Par sam30 dans le forum SDL
    Réponses: 6
    Dernier message: 18/04/2011, 11h27
  2. Réponses: 2
    Dernier message: 14/05/2007, 09h13
  3. Création Bouton rechercher dans formulaire
    Par Boubas1 dans le forum IHM
    Réponses: 1
    Dernier message: 06/05/2007, 14h49
  4. [istools] Création bouton personnel excel.
    Par chessman2212 dans le forum Installation, Déploiement et Sécurité
    Réponses: 2
    Dernier message: 18/01/2007, 17h06

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