[Résolu][Calc] Code RVB & Couleurs

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur: Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !

[Résolu][Calc] Code RVB & Couleurs

Messagepar Loorant » 15 Oct 2012 22:47

Bonsoir,

En prenant en compte les cellules faisant référence au code R, V & B, j'aimerai connaître la fontion, si cela est possible, permettant d'obtenir la couleur correspondante dans la colonne ECHANTILLON, en partant du code RVB.

Loorant
Pièces jointes
RVB.ods
Données du code R, V & B // Nom de la couleur // Echantillon
(28.12 Kio) Téléchargé 310 fois
--- Loorant ---

OOo 3.1.1
XP
Loorant
Fraîchement OOthentifié
 
Message(s) : 3
Inscrit le : 12 Oct 2012 12:16

Re: [Calc] Code RVB & Couleurs

Messagepar luky-luke » 15 Oct 2012 23:24

Bonjour Loorant et bienvenu sur le forum,

Le code ci-dessous devrait convenir :
Code : Tout sélectionner   AgrandirRéduire
option explicit
Sub Main
Dim oDoc As Object, oFeuille As Object, oCellule As Object
Dim Rouge as String, Vert As String, Bleu As String, Echantillon as String
Dim nCoul As Long
Dim i As integer
oDoc = ThisComponent
oFeuille = oDoc.Sheets.GetByName("Couleur_RVB")
   For i = 3 to 414
      Rouge = oFeuille.GetCellRangeByName("A" & i).String
      Vert = oFeuille.GetCellRangeByName("B" & i).String
      Bleu = oFeuille.GetCellRangeByName("C" & i).String
      oCellule = oFeuille.GetCellRangeByName("E" & i)
      nCoul = oCellule.CellBackColor
      nCoul = RGB(Rouge,Vert,Bleu)
      oCellule.CellBackColor = nCoul
      Echantillon = oFeuille.GetCellRangeByName("D" & i).String
      Print Echantillon
   Next i
End Sub


Cordialement
Luke
Pièces jointes
RVB_1.ods
(27.67 Kio) Téléchargé 285 fois
AOO 4.1.3 et LibO 5.3.7.2 Ubuntu 16.04 LTS et Debian 9
Xray ne tient pas lieu de tout, mais une pratique sans Xray ne vaut pas grand chose
Avatar de l’utilisateur
luky-luke
InconditiOOnnel
InconditiOOnnel
 
Message(s) : 873
Inscrit le : 27 Nov 2010 01:17
Localisation : gâtine deux-sèvrienne

Re: [Calc] Code RVB & Couleurs

Messagepar alhazred » 16 Oct 2012 02:32

Bonsoir,

Bonne macro, luky-luke, mais les données du classeur sont de haute fantaisie :P Que penser d'un rouge primaire défini par 0.0.0 et tutti quanti ? ça sent le tri sur une seule colonne !!!

À toutes fins utiles, un dictionnaire des couleurs.
À bientôt

LibO 4.1.5.3 et AOO 4.0.1 sous Windows 7, MRI et SDK pour les macros.

Et la sauvegarde incrémentée, c'est sympa !
Avatar de l’utilisateur
alhazred
ManitOOu
ManitOOu
 
Message(s) : 3028
Inscrit le : 01 Mai 2011 00:08
Localisation : Casablanca (Maroc)

Re: [Calc] Code RVB & Couleurs

Messagepar Loorant » 16 Oct 2012 07:35

Génial !!!!!!! :bravo:

Merci beaucoup pour la macro ! :super:

:D
--- Loorant ---

OOo 3.1.1
XP
Loorant
Fraîchement OOthentifié
 
Message(s) : 3
Inscrit le : 12 Oct 2012 12:16

Re: [Calc] Code RVB & Couleurs

Messagepar bm92 » 16 Oct 2012 07:40

Bonjour,
Les noms et valeurs de couleurs ont probablement été mal recopiés de la page Liste de couleurs de Wikipedia.
Bernard

OpenOffice.org 1.1.5 fr / Apache OpenOffice 4.1.1 / LibreOffice 5.0.5.2 (X64)
MS-Windows 7 SP1 64bits Familial
bm92
ManitOOu
ManitOOu
 
Message(s) : 2562
Inscrit le : 26 Nov 2005 14:42

Re: [Calc] Code RVB & Couleurs

Messagepar gerard24 » 16 Oct 2012 09:02

Bonjour,

Pas directement lié à la question, mais le fichier joint contient :
  1. La macro du livre "Programmation OpenOffice.org 3" de B. Marcelly (AKA bm92, bonjour bernard) et L. Godard. (à laquelle je n'ai pas touché une virgule)
  2. Une macro "coloriage" qui colorie la cellule en fonction des valeurs RGB contenues dans la cellule. (modifiée par mes soins -par un sagouin ?-)
  • La macro d'origine ne pouvait être lancée depuis un bouton. Il fallait la lancer depuis l'EDI ou un raccourci clavier, et comme les raccourcis clavier ne sont pas "transportable"...
  • En plus j'ai eu la bonne idée de calculer les valeurs RGB avec des fonctions volatiles (DECALER, LIGNE, COLONNE) en feuille 2. J'ai donc désactivé le calcul automatique durant l'exécution.
    Sinon on a la temps d'aller boire une bière... :)

couleurs.ods
(65.32 Kio) Téléchargé 299 fois

Aussi pour signaler la très pratique extension RGB de C. Hervé.

A+
OOodidacte
LibreOffice 6.1.4 sous Windows 10.
pour télécharger LibreOffice
Avatar de l’utilisateur
gerard24
ManitOOu
ManitOOu
 
Message(s) : 3109
Inscrit le : 06 Juil 2008 18:08
Localisation : dans le Périgord

Re: [Calc] Code RVB & Couleurs

Messagepar Churay » 16 Oct 2012 10:24

Bonjour

Merci Gérard, comme j'ai besoin en ce moment de ce genre d'infos, en décimal et/ou hexa, j'ai modifié ton tableur en rajoutant quelques colonnes et les formules qui vont bien (comme quoi, j'utilise parfois un tableur comme un tableur et non comme un conteneur de macros :lol: )

couleurs_2.ods
(62.73 Kio) Téléchargé 412 fois
cOOordialement
---
AOO 4.0.1 W7-PRO & LO 5.1.6.2 Debian 7.8 & Ubuntu 16.04 LTS
---
F1 : ça aide...
XRay + SDK :super:
---
Quand le NOT CONFIRMED sera corrigé (OOo et LO) , je serai heureux...
Avatar de l’utilisateur
Churay
ManitOOu
ManitOOu
 
Message(s) : 2668
Inscrit le : 30 Avr 2009 05:54
Localisation : CATALUNYA

Re: [Calc] Code RVB & Couleurs

Messagepar gerard24 » 16 Oct 2012 13:29

Bonjour,

On peut faire l'inverse et calculer le long puis l'hexadécimal, cela fait moins de colonnes.
long =65536*D2+256*E2+F2
décimal =DECHEX(long;6)

Puisque tu te mets aux formules, je me vois obligé de me mettre au basic. :)

Rajoutons au code :

Code : Tout sélectionner   AgrandirRéduire
maFeuille.getCellByPosition(6,0).string="long"
maFeuille.getCellByPosition(7,0).string="hexa"
....
maFeuille.getCellByPosition(6,x+1).value=c
maFeuille.getCellByPosition(7,x+1).string="&H" & Hex(c)

et on obtiens les valeurs 'long' et 'hexa'.

Petit problème : Je ne sais pas comment avoir les 0 non significatifs. Il n'y a pas de 2ème argument pour Hex() en basic ?

 Ajout : Bon. J'ai trouvé ça :
Code : Tout sélectionner   AgrandirRéduire
h = Hex(c)
While len(h)<6 h="0" & h
Wend
maFeuille.getCellByPosition(7,x+1).string = Ucase("&H" & h)

J'en ai profité pour mettre en majuscules.

Il y a peut-être mieux comme codage, mais cela m'a l'air de fonctionner. 


A+
OOodidacte
LibreOffice 6.1.4 sous Windows 10.
pour télécharger LibreOffice
Avatar de l’utilisateur
gerard24
ManitOOu
ManitOOu
 
Message(s) : 3109
Inscrit le : 06 Juil 2008 18:08
Localisation : dans le Périgord

Re: [Calc] Code RVB & Couleurs

Messagepar Loorant » 17 Oct 2012 11:36

Merci à toute la communauté pour vos réponses.
--- Loorant ---

OOo 3.1.1
XP
Loorant
Fraîchement OOthentifié
 
Message(s) : 3
Inscrit le : 12 Oct 2012 12:16


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Benzouye et 4 invité(s)