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 :

[XL-2007/2010] Récupérer la couleur de fond et la déclarer en couleur par défaut avec VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 33
    Points : 22
    Points
    22
    Par défaut [XL-2007/2010] Récupérer la couleur de fond et la déclarer en couleur par défaut avec VBA
    Bonjour à Tou(te)s,

    En fait, j'ai lu pas mal de choses sur le Web mais n'ai pas trouvé la solution (ou alors je n'ai pas cherché assez longtemps )

    Le problème n'est pas la récupération de la couleur de fond d'une cellule en VBA (par interior) mais bien de déclarer cette couleur comme celle par défaut (vous savez celle qui est en dessous du pot de peinture dans la toolbox qui apparait après un clic droit)

    Je voudrais "simplement" cliquer sur une cellule ayant une couleur x et retrouver cette couleur comme défaut pour d'autres cellules (plutôt que de devoir cliquer droit sur une cellule, cliquer sur la flèche du pot de peinture, cliquer sur "Autres couleurs", et valider par "OK" alors qu'Excel "sait" déjà la couleur que j'ai voulu retrouver)
    Et je sèche complétement...

    Si quelqu' un a une idée (ou s'est déjà confronté à ce problème)

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 936
    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 : 12 936
    Points : 28 932
    Points
    28 932
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    A lire Les couleurs en VBA Excel: Les équivalences Hex-Long-RGB
    Il faut appliquer la propriété Interior.Color de l'objet Range de la cellule sélectionnée vers la plage de cellules souhaitées.
    Une des possibilités serait de prévoir dans une feuille nommée [Paramètre] une cellule prévue pour placer le fond de couleur par défaut et pour que ce soit complètement dynamique l'associer à la procédure événementielle Worksheet.SelectionChange
    Exemple d'un code placé dans la procédure événementielle de la feuille nommée [Paramètre] de mise en forme du fond de cellule des cellules de la feuille dont le CodeName est Feuil2. La cellule paramètre est nommée ColorDefault et est de portabilité Feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     If Target.Address = Me.Range("ColorDefault").Address Then
      Feuil2.Cells.Interior.Color = Target.Interior.Color
     End If
    End Sub

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    Merci.

    Il n'y a vraiment pas moyen d'accéder à la valeur par défaut de la couleur de fond du toolbox Excel ?

    La pratique que j'ai indiquée dans mon message est lourde (très) quand on doit changer assez souvent cette couleur par défaut (encore plus quand les couleurs existantes sont celles d'Excel 97 et ne sont plus les couleurs 'standards' de 2007/2010 (on se demande d'ailleurs pourquoi elles ont changé

  4. #4
    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
    Points : 3 666
    Points
    3 666
    Par défaut
    Bonjour,

    Je ne pense pas que ce soit possible, mais bon, on a parfois de bonnes surprises.
    En attendant mieux :
    - un double-clic mémorise la couleur
    - un clic-droit l'applique sur la sélection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Option Explicit
     
    Dim couleur As Long
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        Cancel = True
        couleur = Target.Interior.Color
    End Sub
     
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
        Cancel = True
        Target.Interior.Color = couleur
    End Sub
    eric

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 33
    Points : 22
    Points
    22
    Par défaut AU (presque) FINAL
    Merci eriiic

    En fait j'ai modifié un peu ta réponse pour obtenir ce que je (presque) désirais:

    J'ai créé une UserForm qui indique dans un TextBox les couleurs fond et texte obtenues par ta procédure double-clic
    Je confirme, si besoin est, pour le texte et le fond par les checkbox correspondantes et valide
    Dans le cas (par défaut) où les checkbox sont validées les couleurs s'appliquent au clic-droit (j'ai enlevé le Cancel car je veux pouvoir changer d'autres caractéristiques)
    Dans le cas contraire on revient aux valeurs "Aucun remplissage" et texte noir

    voici le code pour la feuille:
    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
    _______________________________________________________________________________
    Public nIColor As Long
    Public nTColor As Long
    _______________________________________________________________________________
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        Cancel = True
        nTColor = Target.Font.Color
        nIColor = Target.Interior.Color
     
        With New UserForm1
            .TextBox1.ForeColor = nTColor
            .TextBox1.BackColor = nIColor
            .Show
            If .CheckBox1 = False Then nTColor = 0
            If .CheckBox2 = False Then nIColor = xlColorIndexNone
        End With
        If nIColor = 16777215 Then nIColor = xlColorIndexNone   ' rendu du "Aucun Remplissage" ne fonctionant pas avec la valeur 'Interior.Color' 
    End Sub
    _______________________________________________________________________________
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
        Target.Font.Color = nTColor
        Target.Interior.Color = nIColor
    End Sub
    _______________________________________________________________________________
    A noter que la valeur 16777215 pour la couleur "Aucun Remplissage" ne fonctionne pas en rendu (elle donne un fond blanc)
    La valeur xlColorIndexNone permet de contourner cette anomalie (est-ce dû à ma propre configuration où le fond est bleu ciel très pale ?)

    code de la UserForm:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    _______________________________________________________________________________
    Private Sub UserForm_Initialize()
        Me.TextBox1.Text = "**TEST***"
    End Sub
    _______________________________________________________________________________
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
        Me.Hide         ' Masque le UserForm
        Cancel = True   ' Annule la fermeture
    End Sub
    _______________________________________________________________________________
    Private Sub CommandButton1_Click()
        Me.Hide
    End Sub
    _______________________________________________________________________________
    Bon, ça marche plus ou moins comme je voulais... pour mon Excel en tout cas ;-)

    J'espère toujours que quelqu'un me donnera la possibilité de changer les valeurs par défaut dans la toolbox mais bon.... Bill n'y a peut-être pas pensé lol

  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
    Points : 3 666
    Points
    3 666
    Par défaut
    Merci pour le retour.
    Pour les lecteurs suivants tu as une icone # pour mettre en forme le code.
    Tant que tu y étais tu aurais pu mettre une case à cocher pour (dé)activer la fonctionnalité sur le clic-droit. Pour pouvoir l'utiliser sans modifier la mise en forme ;-)

    eric

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 06/11/2014, 15h14
  2. Lancer Excel 2007 par défaut avec DAO
    Par beegees dans le forum VBA Access
    Réponses: 2
    Dernier message: 16/09/2008, 20h04
  3. Réponses: 4
    Dernier message: 17/03/2008, 11h03
  4. Réponses: 2
    Dernier message: 20/12/2007, 15h43
  5. une couleur de txt lisible à partir de la couleur de fond
    Par XecTech dans le forum Composants VCL
    Réponses: 11
    Dernier message: 06/06/2005, 16h02

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