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

  • Initiateur de la discussion Initiateur de la discussion dindin
  • Date de début Date de début

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 !

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
 
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
 
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
 
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
 
Merci pour ce code
par contre j'ai cette erreur :
 
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
 

désolé toujours la même erreur
 
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à.
 
Oui mais si vous mettez la ligne :
VB:
If (r + g + b) / 32 < 7 Then Controls("TextBox" & i).Font.ColorIndex = 15
en commentaire ça marche.
D'où ma qusetion sur Font.ColorIndex.
 
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.
 
- 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
2
Affichages
123
Réponses
5
Affichages
235
Réponses
4
Affichages
177
Réponses
8
Affichages
466
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…