XL 2013 où me trompais-je?

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

patricktoulon

XLDnaute Barbatruc
Bonjour a tous
je voudrais comprendre ou je me trompe dans le raisonnement et par consequent dans le code
je veux faire un degradé de couleur de la couleur 1 à la couleur 2
j'ai un nombre de pas ici en l'ocurence 20
pour cela je récupère le (R,G,B) des deux couleurs
je calcule le pas de difference pour r g et b en negatif ou positif
et dans une boucle pour les test je colori les celulles de la ligne 1 a nb
en colonne 2 en ligne 1 et nb je met la couleur initiale
j'ai bien compris que si je veux garder mes deux couleurs initiales en ligne 1 et nb le pas je divise par nb-2
et bien j'ai pas mes couleurs tout du moins mon dégradé ne correspond pas à l'intention

heu je souhaiterais garder encore un momment mes cheveux
merci pour les retours

1702312962753.png

VB:
Sub test()
    Dim nb&, C1&, C2&, Cx1, Cx2, Px1&, Px2&, Px3&
   nb = 20
    Cells(1, 1).Resize(nb, 2).Clear
   C1 = vbRed: Cx1 = longToRGB(C1)
    C2 = vbGreen: Cx2 = longToRGB(C2)

    Px1 = Round(-(Cx1(1) - Cx2(1)) / (nb - 2))
    Px2 = Round(-(Cx1(2) - Cx2(2)) / (nb - 2))
    Px3 = Round(-(Cx1(3) - Cx2(3)) / (nb - 2))
   
    For i = 1 To nb
       rp = Cx1(1) + (Px1 * (i))
        gp = Cx1(2) + (Px2 * (i))
        bp = Cx1(3) + (Px3 * (i))
     
      Cells(i, 1).Interior.Color = RGB(Cx1(1) + rp, Cx1(2) + gp, Cx1(3) + bp)
    Next
Cells(1, 2).Interior.Color = C1
Cells(nb, 2).Interior.Color = C2
 

End Sub
Function longToRGB(c)
    Dim t(1 To 3)
    t(1) = c Mod 256
    t(2) = ((c - t(1)) / 256) Mod 256
    t(3) = ((c - t(1) - (t(2) * 256)) / 256 / 256) Mod 256
    longToRGB = t
End Function
 
Solution
par contre là encore une enigme
avec les même calculs tu obtiens un dégradé différent puisque moi au millieur je passe par un jaune
Pourtant j'utilise ton code, simplement corrigé au niveau de la définition des variables, du calcul des Px, et du calcul des rp, gp et bp.



ilo n'y a pas quelque chose qui vous gêne là
C'est la première des trois erreurs que j'ai expliquées en #4. 😉
Personnellement je privilégie le calcul mathématique portant sur les énergies lumineuses résultant d'une application du stupide gamma d'écran constaté au valeurs de composantes RGB.
Je convertis les valeurs RGB en énergies de 0 à 1000 :
VB:
Private Function EnrgG(ByVal Gris As Double) As Double
   If Gris > GLimite Then EnrgG = (Gris * kEG1 + kEG2) ^ ExGamma Else EnrgG = Gris * FLinéaire
   End Function
Je fais mes calcul et je reconvertis à la fin en valeurs RGB :
Code:
Private Function GrisE(ByVal Enrg As Double) As Double
   If Enrg > ELimite Then GrisE = (Enrg ^ (1 / ExGamma) - kEG2) / kEG1 Else GrisE = Enrg / FLinéaire
   End Function
Avec :
Code:
Const ExGamma = 222841 / 96323, GLimite = 1307 / 151  ' E500: 186,04   E250: 134,93   E125: 97,05   E62,5:68,98
Const kEG1 = 1000 ^ (1 / ExGamma) / (GLimite * (ExGamma - 1) + 255), kEG2 = 1000 ^ (1 / ExGamma) - 255 * kEG1
Const ELimite = (GLimite * kEG1 + kEG2) ^ ExGamma, FLinéaire = ELimite / GLimite
 
bon perso
j'ai reussi mon intention
qui etait a savoir faire une fonction gradient lisse sans fusionner les cellules

le principe
une plage de cellule(nimporte la quelle
choix horizontal (rng.columns) ou vertical(rng.rows)
2 couleurs

la fonction devait calculer le nombre de couleurs(pas) selon le sens et donc le nombre de colonne ou de ligne
pour un gradient dur même nombre de couleur(pas) que les colonnes ou lignes
pour un gradient lisse nombre couleurs(pas) même de colonne ou ligne +1

chaque colonne ou ligne sera coloré avec un gradient couleur et couleur suivante
demonstration
Pour afficher ce contenu, nous aurons besoin de votre consentement pour définir des cookies tiers.
Pour plus d'informations, consultez notre page sur les cookies.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
235
Réponses
2
Affichages
1 K
Réponses
8
Affichages
1 K
Réponses
1
Affichages
1 K
Réponses
1
Affichages
2 K
Réponses
5
Affichages
1 K
Retour