Problème avec Selection.Interior.ColorIndex

Bonjour à tous,

Description de mon classeur :

C’est un planning de gestion de personnels. Sur ma première feuille"Accueil", les cellules B8 à B30 servent à inscrire un code texte qui via un bouton "appliquer les codes" va coller le texte dans 23 autres boutons se trouvant sur mes feuilles suivantes. Actuellement la macro fonctionne en copiant le texte de mes cellules dans mes boutons, mais j'aimerais également coller la couleur de fond de mes cellules B8:B30. voici la macro que j'ai essayée et qui ne fonctionne pas (ligne en rouge). pouvez-vous m'aider

D'avance merci.

Sub maj_boutons()

'Applique les codes de la page d'accueil sur la légende des boutons (bouton01 à bouton23)

Dim n As Byte, i As Byte

For n = 3 To 14

Sheets(n).Select

ActiveSheet.Unprotect (pwd)

For i = 1 To 23

ActiveSheet.Shapes("bouton" & Format(i, "00")).Select

Selection.Characters.Text = Sheets("Accueil").Cells(7 + i, 2).Value '1ère cellule : B8

Selection.Interior.ColorIndex = Sheets("Accueil").Cells(7 + i, 2).Value

Next i

ActiveSheet.Protect (pwd)

Next n

Sheets("Accueil").Select

End Sub

Bonjour,

Un petit fichier pour l'exemple?

Cdlt.

voici ....

bonjour,

Selection.Interior.ColorIndex = Sheets("Accueil").Cells(7 + i, 2).Interior.ColorIndex

devrait convenir.

A+

Bonjour,

Ce classeur est protégé

Adresses toi à l'auteur du classeur

Cdlt.

Jean-Eric a écrit :

Bonjour,

Ce classeur est protégé

Adresses toi à l'auteur du classeur

Cdlt.

j'ai contacté l'auteur , voir commentaire du fichier attahé

galopin01 a écrit :

bonjour,

Selection.Interior.ColorIndex = Sheets("Accueil").Cells(7 + i, 2).Interior.ColorIndex

devrait convenir.

A+

Bonsoir !! et merci pour votre réponse

Désolé, le débogueur refuse la ligne....j'ai peut-être oublié de renseigner autre chose , mais quoi !!!

Bonsoir,

Oui c'est vrai, je n'avais pas vérifié car ce classeur est bardé de mdp et je n'ai pas de temps à perdre à chercher à les casser...

Effectivement comme il s'agit de boutons

Selection.Interior.ColorIndex ne peut s'appliquer, il faut utiliser

Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255,0 0) '(pour le rouge)

ou encore :

Selection.ShapeRange.Fill.ForeColor.RGB = QBColor(12) '(toujours pour le rouge...)

Sauf que RGB pose des problème de compatibilité pour la rapprocher avec la propriété Interior.ColorIndex de tes cellules de référence. Là tu essaies de faire passer les couleurs de la robe d'une zèbre sur la palette de celle d'un caméléon et çà je crois que ça va pas être possible...

Donc je sais pas quoi te dire, perso j'aurai goupillé ça de manière plus simple en utilisant des proriétés d'objets analogue.

A+

Donc si j’ai bien compris en VBA, hormis les propriétés « texte » d’une cellule, on ne peut pas coller les propriétés couleur de cette même cellule vers un bouton ?

Donc ,s’il n’y a pas de solution je vais clôturer ce poste.

Encore merci à tous.

Bonjour,

ça devrait être possible, mais ce qui rend les choses désagréables et compliquées c'est de ne pas pouvoir tester sur ton classeur.

ça ne sert à rien de joindre un classeur auquel on ne peut pas avoir accès. Un classeur entièrement verrouillé par mdp est à peu près aussi inutile qu'une image...

Le principe d'un forum c'est de fournir aux intervenant un outil sur lequel on peut tester les questions et les réponses.

Si en plus il faut se donner la peine de "casser" les mdp pour pouvoir aider ou réaliser un classeur test analogue au tien... Faut pas pousser !

A+

Bonjour,

Désolé, je n’ai pas voulu être « désagréable » . Le mot de passe du classeur est « FATAL ». J’en ai fait allusion dans mon message précédant. J’ai simplement voulu être discret par rapport au travail de l’auteur.

Bonsoir,

Les mots de passe ne sont qu'une protection pour éviter une fausse manoeuvre de la part d'utilisateurs néophyte... En aucune façon une protection contre "la casse". Si tu viens sur un forum, inutile de transmettre un fichier avec mot de passe...

Une solution qui n'utilise pas ColorIndex mais Color.

Coller la macro suivante dans le module "Planning"

Function XL2RGB(xlclr As Long) As Variant
   Dim Red As Long, Green As Long, Blue As Long
   Blue = xlclr \ 65536
   Green = (xlclr - Blue * 65536) \ 256
   Red = xlclr - Blue * 65536 - Green * 256
   XL2RGB = Array(Red, Green, Blue)
End Function

ensuite modifier la macro de la manière suivante :

Sub maj_boutons()
'Applique les codes de la page d'accueil sur la légende des boutons (bouton01 à bouton23)
Dim n As Byte, i As Byte, k As Long '""""""ne pas oublier de déclarer k as Long
For n = 3 To 14
    Sheets(n).Select
    ActiveSheet.Unprotect (pwd)
    For i = 1 To 23
    ActiveSheet.Shapes("bouton" & Format(i, "00")).Select
    Selection.Characters.Text = Sheets("Accueil").Cells(7 + i, 2).Value '1ère cellule : B8
    k = Sheets("Accueil").Cells(7 + i, 4).Interior.Color  '"""""" ligne rajoutée: j'ai supposé que tu voulais utiliser les couleurs de la colonne 4
    Selection.ShapeRange.Fill.ForeColor.RGB = RGB(XL2RGB(k)(0), XL2RGB(k)(1), XL2RGB(k)(2)) '"""""" ligne rajoutée
    Next i
    ActiveSheet.Protect (pwd)
Next n
Sheets("Accueil").Select
End Sub

Avec mes remerciements pour l'aimable collaboration de DanielCo (MVP)

Bonne continuation

Mille mercis, ça fonctionne Nickel

Rechercher des sujets similaires à "probleme selection interior colorindex"