Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Adapter un code pour afficher les couleurs en RGB dans des textboxs

dindin

XLDnaute Occasionnel
Bonjour le Forum

Depuis toute à l'heure j'essaye d'adapter ce code qui fonctionne très bien sur des cellules.
le code d'un développeur qui s'appelle Sébastien :
VB:
Sub apercus_rgb() 'Sébastien - Forum Excel-Pratique
     ligne = 0
    For r = 0 To 256 Step 32
        For g = 0 To 256 Step 32
            ligne = ligne + 1
            For b = 0 To 256 Step 32
                col = b / 32 + 1
                If r = 256 Then r = 255
                If g = 256 Then g = 255
                If b = 256 Then b = 255
                Cells(ligne, col) = r & ", " & g & ", " & b
                Cells(ligne, col).Interior.Color = RGB(r, g, b)
                If (r + g + b) / 32 < 7 Then Cells(ligne, col).Font.ColorIndex = 15
            Next
        Next
    Next
End Sub

Mon objectif c'est colorier mes textboxs à l'aide d'une nouvelle boucle
Voici le mien qui ne m'affiche une erreur :
Code:
For i = 1 To 729
    For r = 0 To 256 Step 32
        For g = 0 To 256 Step 32
           Controls("TextBox" & i) = 1
            For b = 0 To 256 Step 32
                col = b / 32 + 1
                If r = 256 Then r = 255
                If g = 256 Then g = 255
                If b = 256 Then b = 255
                Controls("TextBox" & i) = r & ", " & g & ", " & b
                Controls("TextBox" & i).BackColor = RGB(r, g, b)
                If (r + g + b) / 32 < 7 Then Controls("TextBox" & i).Font.ColorIndex = 15
            Next
        Next
    Next
    Next i

mes textboxs sont numérotés de 1 à 729

Merci pour votre aide
 

fanch55

XLDnaute Barbatruc
Bonjour,

Pour modifier la couleur de la police d'un TextBox, c'est .Forecolor et non pas .Font.ColorIndex .
Sinon, telle que la boucle est conçue, tous les textbox au final auront systématiquement un rgb=255,255,255
 

dindin

XLDnaute Occasionnel
Merci pour votre réponse
voici mon objectif :

colorier les textbox suivants avec ces couleur afin de récupérer le code RGB se trouvant dans chaque cellule

Si vous pouvez m'aider
voici ma boucle qui ne fonctionne pas
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour DinDin,
Si j'ai bien compris ce que vous vouliez faire, ça ne peux pas marcher.
Une fois "i" initialisé vous faites entièrement les 3 boucles rgb, donc vous sortez avec r,g,b=255, et vous recommencez la même chose avec i+1, donc les textbox sont toujours avec rgb=0.

Si le but est de donner à chaque textbox une couleur, j'aurais tenté ceci :
VB:
' init des couleurs
r = 0: g = 0: b = 0
For i = 1 To 729
    r = r + 32
    If r = 256 Then         ' si dépassement r alors r=0 et incrément g
        r = 0
        g = g + 32
        If g = 256 Then     ' si dépassement g alors g=0 et incrément b
            g = 0
            b = b + 32
        End If
    End If
    Controls("TextBox" & i) = r & ", " & g & ", " & b
    Controls("TextBox" & i).BackColor = RGB(r, g, b)
    If (r + g + b) / 32 < 7 Then Controls("TextBox" & i).Font.ColorIndex = 15
Next i
 

dindin

XLDnaute Occasionnel
Merci pour ce code
par contre j'ai cette erreur :
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Oups! le test sur b a été oublié. Sorry.
VB:
' init des couleurs
r = 0: g = 0: b = 0
For i = 1 To 729
    r = r + 32
    If r = 256 Then         ' si dépassement r alors r=0 et incrément g
        r = 0
        g = g + 32
        If g = 256 Then     ' si dépassement g alors g=0 et incrément b
            g = 0
            b = b + 32
        End If
        If b = 256 Then     ' si dépassement b alors b=0
            b = 0
        End If
    End If
    Controls("TextBox" & i) = r & ", " & g & ", " & b
    Controls("TextBox" & i).BackColor = RGB(r, g, b)
    If (r + g + b) / 32 < 7 Then Controls("TextBox" & i).Font.ColorIndex = 15
Next i
 

dindin

XLDnaute Occasionnel

désolé toujours la même erreur
 

dindin

XLDnaute Occasionnel
Au pif, le texte d'une textbox c'est Forecolor et non Font.
On a les propriétés dans Propriétés de la textbox.
Sans fichier test difficile à dire, mais peut être que l'erreur est là.
Voici le fichier .
ce qui m'intéresse c'est le backcolor et non pas le foreColor du textbox
Merci encore une fois
 

Pièces jointes

  • couleurs.xlsm
    63.9 KB · Affichages: 12

sylvanu

XLDnaute Barbatruc
Supporter XLD
Qui plus est vous avez un bug dans le code :
Code:
        If g = 256 Then     ' si dépassement g alors g=0 et incrément b
            g = 0
            b = b + 32
        End If
        If b = 256 Then     ' si dépassement b alors b=0
            b = b + 32
        End If
C'est
Code:
        If g = 256 Then     ' si dépassement g alors g=0 et incrément b
            g = 0
            b = b + 32
        End If
        If b = 256 Then     ' si dépassement b alors b=0
            b = 0
        End If
Quand b=256 c'est b=0 et non b=b+32 sinon vous dépassez les 8 bits.
 

Discussions similaires

Réponses
2
Affichages
330
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…