[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 !
Loorant
Fraîchement OOthentifié
Messages : 3
Inscription : 12 oct. 2012 11:16

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

Message par Loorant »

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
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
--- Loorant ---

OOo 3.1.1
XP
Avatar de l’utilisateur
luky-luke
InconditiOOnnel
InconditiOOnnel
Messages : 936
Inscription : 27 nov. 2010 00:17
Localisation : gâtine deux-sèvrienne

Re: [Calc] Code RVB & Couleurs

Message par luky-luke »

Bonjour Loorant et bienvenu sur le forum,

Le code ci-dessous devrait convenir :

Code : Tout sélectionner

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
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
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
alhazred
ManitOOu
ManitOOu
Messages : 3028
Inscription : 30 avr. 2011 23:08
Localisation : Casablanca (Maroc)

Re: [Calc] Code RVB & Couleurs

Message par alhazred »

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 !
Loorant
Fraîchement OOthentifié
Messages : 3
Inscription : 12 oct. 2012 11:16

Re: [Calc] Code RVB & Couleurs

Message par Loorant »

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

Merci beaucoup pour la macro ! :super:

:D
--- Loorant ---

OOo 3.1.1
XP
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 13:42

Re: [Calc] Code RVB & Couleurs

Message par bm92 »

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
Avatar de l’utilisateur
gerard24
ManitOOu
ManitOOu
Messages : 3160
Inscription : 06 juil. 2008 17:08
Localisation : dans le Périgord

Re: [Calc] Code RVB & Couleurs

Message par gerard24 »

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
Aussi pour signaler la très pratique extension RGB de C. Hervé.

A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
OOodidacte
LibreOffice 6.4.5 sous Windows 10.
pour télécharger LibreOffice
Avatar de l’utilisateur
Churay
ManitOOu
ManitOOu
Messages : 2668
Inscription : 30 avr. 2009 04:54
Localisation : CATALUNYA

Re: [Calc] Code RVB & Couleurs

Message par Churay »

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
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
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
gerard24
ManitOOu
ManitOOu
Messages : 3160
Inscription : 06 juil. 2008 17:08
Localisation : dans le Périgord

Re: [Calc] Code RVB & Couleurs

Message par gerard24 »

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

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

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.4.5 sous Windows 10.
pour télécharger LibreOffice
Loorant
Fraîchement OOthentifié
Messages : 3
Inscription : 12 oct. 2012 11:16

Re: [Calc] Code RVB & Couleurs

Message par Loorant »

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

OOo 3.1.1
XP