[RESOLU]Afficher boite de dialogues : Autres couleurs

C

Compte Supprimé 979

Guest
Bonsoir à toutes et à tous ;)

Est-ce que quelqu'un connait la syntaxe à utiliser en VBA pour afficher
la boite de dialogue de l'outil : Couleur de remplissage -> Autres couleurs

Je souhaite récupérer la valeur de la couleur sélectionner pour l'appliquer à une cellule

Voir boite de dialogue ci-jointe

D'avance merci
 

Pièces jointes

  • ScreenShot153.jpg
    ScreenShot153.jpg
    23.1 KB · Affichages: 166
Dernière modification par un modérateur:
C

Compte Supprimé 979

Guest
Re : Afficher boite de dialogues : Autres couleurs

Bonsoir Fo_rum ;)

Merci à toi pour cette réponse, mais non cela ne me convient pas :eek:

De plus je souhaite pouvoir récupérer la valeur de la couleur sélectionnée

Edit : je viens de trouver sur l'excellent site de notre amie Misange
Ce lien n'existe plus

la syntaxe est :
Code:
a = Application.Dialogs(xlDialogEditColor).Show(1, 0, 0, 0)

Sauf que cela ne me retourne pas la valeur de la couleur ... :(

A+
 
Dernière modification par un modérateur:

Papou-net

XLDnaute Barbatruc
Re : [RESOLU]Afficher boite de dialogues : Autres couleurs

Bonsoir Bruno, Fo_rum,

@ Bruno,

La boîte de dialogue que tu mets en exemple s'affiche comme te l'a suggéré Fo_rum, à une nuance près :

Code:
c = Application.Dialogs(xlDialogEditColor).Show(1, 0, 0, 0)
Toutefois, tu auras beaucoup de mal à récupérer la valeur de la couleur choisie. Si tu y tiens vraiment, une recherche sur la toile te guidera sur des sites comme "Developpez.com" ou "Excelabo.net" pour ne citer que les plus connus.

Pour ma part, je me contenterais d'une boîte plus rudimentaire mais bien plus simple d'utilisation (comme tu pourras le constater sur le fichier ci-joint). Par contre, il faut au préalable charger le contrôle "Microsoft Common Dialog Control" et l'insérer soit sur la feuille de calcul, soit sur un UF.

Espérant t'avoir aidé.

Cordialement.
 

Pièces jointes

  • BrunoM45.xls
    32 KB · Affichages: 95
  • BrunoM45.xls
    32 KB · Affichages: 92
  • BrunoM45.xls
    32 KB · Affichages: 101

david84

XLDnaute Barbatruc
Re : [RESOLU]Afficher boite de dialogues : Autres couleurs

Bonsoir Bruno, Fo_rum,
j'ai trouvé sur le site Ce lien n'existe plus ce code :
Code:
Private Sub CmdPolice()
 Dim Y As Dialog
  Range("F1").Select
  Set Y = Application.Dialogs(xlDialogEditColor)
  Y.Show 51
 Selection.Font.ColorIndex = 51
 End Sub
A+
Edit : bonsoir papou-net
 
C

Compte Supprimé 979

Guest
Re : [RESOLU]Afficher boite de dialogues : Autres couleurs

Salut Papou-net

tu auras beaucoup de mal à récupérer la valeur de la couleur choisie. Si tu y tiens vraiment, une recherche sur la toile te guidera sur des sites comme "Developpez.com" ou "Excelabo.net" pour ne citer que les plus connus.
Effectivement je n'avais pas encore eu le temps de tester, mais "a" ne me retourne que -1
C'est bien la peine de mettre une variable devant ...

Pour ma part, je me contenterais d'une boîte plus rudimentaire mais bien plus simple d'utilisation (comme tu pourras le constater sur le fichier ci-joint). Par contre, il faut au préalable charger le contrôle "Microsoft Common Dialog Control" et l'insérer soit sur la feuille de calcul, soit sur un UsF
Désolé, mais j'ai un problème avec ton fichier
Message d'erreur : les informations de licences de ce composant sont introuvables ... Etc

Donc ça ne fonctionne absolument pas :(

a+
 
C

Compte Supprimé 979

Guest
Re : [RESOLU]Afficher boite de dialogues : Autres couleurs

Salut David84

j'ai trouvé sur le site Ce lien n'existe plus ce code :
Code:
Private Sub CmdPolice()
 Dim Y As Dialog
  Range("F1").Select
  Set Y = Application.Dialogs(xlDialogEditColor)
  Y.Show 51
 Selection.Font.ColorIndex = 51
 End Sub
Heuuu, ben non pas plus apparemment, d'ailleurs je ne comprends pas le code

Pourquoi affecter la couleur 51 alors que l'on demande d'en sélectionner une !?

A+
 

MJ13

XLDnaute Barbatruc
Re : Afficher boite de dialogues : Autres couleurs

Bonjour à tous

Tu peux tester cette macro:

Code:
Sub Couleur_XlDialogEditColor()
Application.Dialogs(xlDialogEditColor).Show True
End Sub

En effet, c'est pas très facile à récupérer la couleur :eek:.

Sinon, j'ai trouvé cela ici:
Display Color Palette To Choose From

Code:
Sub test3()
For i = 1 To 10
Range("a1").Interior.ColorIndex = i: Rem For demo purpose
Application.Dialogs(xlDialogEditColor).Show arg1:=i
Next
End Sub

J'ai aussi trouvé cela ici:
How to refer to Custom Colors' Palette - Microsoft Answers
Code:
Sub test4()
oldcolor = ActiveWorkbook.Colors(1)
If Application.Dialogs(xlDialogEditColor).Show(1) = True Then
For Each x In Selection
x.Font.Color = ActiveWorkbook.Colors(1)
Next
ActiveWorkbook.Colors(1) = oldcolor
End If
End Sub

Ou voir ce fichier (Attention, c'est technique :confused:):
 

Pièces jointes

  • PaletteCouleur.xls
    33 KB · Affichages: 123
  • PaletteCouleur.xls
    33 KB · Affichages: 112
  • PaletteCouleur.xls
    33 KB · Affichages: 113
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : [RESOLU]Afficher boite de dialogues : Autres couleurs

Désolé, mais j'ai un problème avec ton fichier
Message d'erreur : les informations de licences de ce composant sont introuvables ... Etc

RE Bruno,

As-tu, comme je te l'ai écrit, chargé le contrôle supplémentaire "Microsoft Common Dialog Control" dans les contrôles supplémentaires VBA ?

Parce que chez moi, ça fonctionne parfaitement comme tu peux le voir sur la copie écran ci-dessous.

Sinon, la solution du fichier proposé par Michel (que je salue au passage) répond exactement à ta demande initiale mais s'avère plus lourde.

Amicalement.
 

Pièces jointes

  • BoiteDialogCouleurs.jpg
    BoiteDialogCouleurs.jpg
    71.8 KB · Affichages: 146
Dernière édition:

david84

XLDnaute Barbatruc
Re : Afficher boite de dialogues : Autres couleurs

Re
Salut David84

Envoyé par david84
j'ai trouvé sur le site Excelabo ce code :
Code :
Private Sub CmdPolice()
Dim Y As Dialog
Range("F1").Select
Set Y = Application.Dialogs(xlDialogEditColor)
Y.Show 51
Selection.Font.ColorIndex = 51
End Sub
Heuuu, ben non pas plus apparemment, d'ailleurs je ne comprends pas le code

Pourquoi affecter la couleur 51 alors que l'on demande d'en sélectionner une !?
Ce n'est qu'un exemple récupéré tel quel Bruno. Il faut voir ensuite si l'on peut l'adapter à ce que tu veux faire.
Si tu appelles cette macro via une autre, je pense que tu peux placer la couleur à récupérer en argument.
Mais après, il faut voir ta demande dans le détail.
A+
 
C

Compte Supprimé 979

Guest
Re : Afficher boite de dialogues : Autres couleurs

Bonsoir le Fil ;)

Michel, merci infiniment Olivier13_merci.gif
Ton Test4 ou ton fichier répondent exactement à ce que je souhaitais notre350z_yahoo.gif

Papou-net :
As-tu, comme je te l'ai écrit, chargé le contrôle supplémentaire "Microsoft Common Dialog Control" dans les contrôles supplémentaires VBA ?

Oui, tout à fait, cela ne fonctionne ni sur XP Office 2003/2010, ni sur Seven Office 2003/2010
Toujours le même message ;) en tout cas merci quand mème

Merci également à David84 ;)

Au plaisir
 

Pièces jointes

  • notre350z_yahoo.gif
    notre350z_yahoo.gif
    7.4 KB · Affichages: 196
  • notre350z_yahoo.gif
    notre350z_yahoo.gif
    7.4 KB · Affichages: 190

Fo_rum

XLDnaute Accro
Re : Afficher boite de dialogues : Autres couleurs

Bonsoir,

étant donné que tu avais inscrit "Résolu", je n'ai plus cherché;).
Je plaisante bien-sûr car je suis fort aise de voir de plus en plus souvent ce mot et comme je le disais à certains détracteurs, il ne force pas à arrêter la discussion (la preuve) et je pense que tu aurais pu le laisser. Mais après tout chacun dispose de son bon vouloir à sa guise !
 
C

Compte Supprimé 979

Guest
Re : [RESOLU]Afficher boite de dialogues : Autres couleurs

Salut Fo_rum ;)

En fait le problème est que je pensais avoir trouvé la solution, en fait ce n'était pas le cas.
Du coup j'ai retiré le [RESOLU]

Et maintenant que la solution est réellement trouvée, je le remet ;)

Au plaisir
 

Papou-net

XLDnaute Barbatruc
Re : [RESOLU]Afficher boite de dialogues : Autres couleurs

Bonjour à tous,
Salut Bruno,

En fait le problème est que je pensais avoir trouvé la solution, en fait ce n'était pas le cas.
Du coup j'ai retiré le [RESOLU]

Et maintenant que la solution est réellement trouvée, je le remet ;)

Ta réponse me rassure car je pensais que l'avancée en âge accélérait la progression de ma sénilité.
Du coup, j'avais eu un doute concernant l'opportunité du MP que je t"avais adressé.

Amicalement.
 

patricktoulon

XLDnaute Barbatruc
re
Bonjour juste en passant
la discussion est ancienne mais toujours pas résolu visiblement
si tu a la possibilité par vba de rediriger l’exécution du bouton remplissage
ou alors en ajoutant un bouton couleur dans le menu contextuel dans le menu contextuel "Cell"
je peux te donner la solution
1675776890510.png


exemple dans le menu "Cell"
VB:
'palette coleur perso  dans le menu contextuel "Cell"
'auteur patricktoulon
'***************************************************************
'Dans le module de la feuille

'Option Explicit
    'Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
      'addBtcouleurMenuCell
    'End Sub


'!!!!!  ou le right click dans le module thisworkbook avec une classe event intra module thisworkbook!!!!!

'Option Explicit
'Public WithEvents feuille As Worksheet

   'Private Sub Workbook_Open()
     'Set feuille = ThisWorkbook.Sheets(1)
   'End Sub

   'Private Sub Workbook_SheetActivate(ByVal Sh As Object)
     'Set feuille = Sh
   'End Sub

   'Private Sub feuille_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
     'addBtcouleurMenuCell
   'End Sub

'***************************************************************

'dans un module standard

Sub addBtcouleurMenuCell()
    Dim bt As Object
    With CommandBars("Cell")
       .Reset
       Set bt = .Controls.Add(msoControlButton, , , 1, True)
        With bt
            .Caption = "Couleur +"
            .FaceId = 962
            .OnAction = "autreCouleur"
        End With
     End With

End Sub
Sub autrecouleur()
    Dim OldCoul&
    OldCoul = ThisWorkbook.Colors(1)
    If Application.Dialogs(xlDialogEditColor).Show(1, 0, 0, 0) = True Then
        ActiveCell.Interior.Color = ActiveWorkbook.Colors(1)
        
        'si ta palette est d'origine(n'a pas déjà été modifiée )
        ThisWorkbook.ResetColors
        
        'si la palette  a déjà été modifiée (que les 56 couleurs ne sont pas celles d'origine)
        'ThisWorkbook.Colors(1) = OldCoul
    End If
Application.CommandBars("Cell").Reset ' le bouton s'auto detruit
End Sub
 

Discussions similaires

Réponses
12
Affichages
568

Statistiques des forums

Discussions
312 205
Messages
2 086 199
Membres
103 156
dernier inscrit
Ludo94130