Colors et pattern dans variable

Bonjour,

Je travaille sur un fichier Xl qui a terme va me permettre de faire une cartographie de défauts de métallurgie sur un tube.

A ce jour, ce fichier ne fait que dessiner des formes sur une feuille excel. J'ai fixé arbitrairement des couleurs de d'avant plan, d'arrière plan et des textures (motifs?) dans une macro.

En fait je souhaiterai en cliquant sur un bouton, choisir les couleurs d'avant et d'arrière plan en les stockant dans des variables et de stocker les textures ou motifs dans une autre variable.

J'ai fait des essais avec un userform en changeant la couleur d'un textbox et en utilisant color2 = Application.Dialogs(xlDialogEditColor).Show(10). pour les textures, je tente d'utiliser la commande motif = Application.Dialogs(xlDialogPatterns).Show, mais impossible de stocker le type de hachure dans une variabel. Initialement je souhaitais faire un userform avec trois listbox une pour la couleur1, une seconde pour la couleur2 et la troisième pour les hachures, mais je n'y arrive pas.

Dans un second temps, je suis passé par un bouton, qui cré une forme, mais je n'y arrive pas.

Mes questions sont les suivantes:

1 / comment stocker une couleur RGB dans une variable ?

2 / comment stocker une hachure ou motif (pattern) dans une variable et surtout comment faire apparaître les motifs qui se trouvent dans le menu (format de forme).

Merci à tous.

Je joints mes essais en PJ

10essais.xlsm (29.35 Ko)

Bonjour,

Attention, la boite de dialogue xlDialogEditColor modifie la couleur prédéfinie de la palette ColorIndex.

Il faut donc la rétablir après avoir récupéré la couleur choisie.

Par exemple :

Sub GetColor()
' Boite de dialogue xlDialogEditColor.
'
' Syntaxe : intResult = Application.Dialogs(xlDialogEditColor).Show(intIndex, [intRed], [intGreen], [intBlue])
'   intResult: Zero si Annuler et -1 si une couleur est choisie.
'   intIndex: si les 3 derniers parametres sont omis, c'est le ColorIndex (de 0 à 56) initialement sélectionné.
'   si les 3 derniers parametres ne sont pas omis :
'   - intRed : quantité de rouge dans la couleur.
'   - intGreen: quantité de vert dans la couleur.
'   - IntBlue: quantité de bleue dans la couleur.
'
Dim oldColor As Long
Dim newColor As Long
Dim idxColor As Integer
Dim newRed As Integer
Dim newGreen As Integer
Dim newBlue As Integer
Dim hexColor As String

  idxColor = 1  ' couleur qui sera modifiée : le noir
  oldColor = ThisWorkbook.Colors(idxColor)
  If Application.Dialogs(xlDialogEditColor).Show(idxColor, 255, 255, 255) = -1 Then
    newColor = ThisWorkbook.Colors(idxColor)
    ThisWorkbook.Colors(idxColor) = oldColor

    hexColor = Right("000000" & Hex(newColor), 6)
    newRed = Val("&H" & Mid(hexColor, 5, 2))
    newGreen = Val("&H" & Mid(hexColor, 3, 2))
    newBlue = Val("&H" & Mid(hexColor, 1, 2))
    MsgBox "Couleur : " & newColor & vbCr & _
           "  Rouge : " & newRed & vbCr & _
           "   Vert : " & newGreen & vbCr & _
           "   Bleu : " & newBlue

  End If
End Sub

merci Patrice33740 33740 c'est pas loin, je suis sur Mios.

Une idée concernant les motifs de hachure?

Merci

A priori, pour les motifs de hachure, c'est cuit,.

Je vais juste les attribuer en arbitrairement avec un case

Chez moi, ça ne fonctionne pas bien, la boite de dialogue est bizarre et n'est pas identique selon les version Excel.

Mais on pourrait capter le pattern de façon similaire à celle utilisée pour la couleur :

  • ajouter une forme (shape) sur la feuille
  • sélectionner la forme (pour que la boite Patterns y applique le pattern choisi)
  • ouvrir la boite patterns et choisir le pattern
  • si la boite est = -1 :
  • lire le pattern appliqué à la forme.
  • supprimer la forme.

Si ça peut t'aider, j'ai toutes les images des patterns dans un formulaire (il n'y a plus qu'à développer le code pour le choix).

36patterns.zip (18.32 Ko)

Merci, j'ai testé avec des boutons : sur lesquels j'avais insérer les images. Cela va le faire.

Merci à tous.

Parcontre, j'ai beau cliquer sur résolu, cela ne passe pas en résolu.

Rechercher des sujets similaires à "colors pattern variable"