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 !

MASSJIPE

XLDnaute Impliqué
Bonjour le forum
est il possible de faire changer de couleur une forme en fonction d'un N° par rapport à une liste déroulante
Ex Sur la photo il y à plusieurs forme avec un N° de couleur jaune quant je sélectionne le N° à partir de la liste déroulante la couleur de la forme qui correspond au N° passe du jaune au vert.
Si c'est réalisable à savoir il y aura plusieurs onglet
D'avance merci
 

Pièces jointes

Re,
A tester
Pour que le bon fonctionnement
la liste des N° doit toujours se trouver en colonne L, à partir de la ligne 2 jusqu'à .....
les NOMS des formes doivent être nommées avec le N° correspondant (Voir sur les deux onglets déjà présents)
 

Pièces jointes

Bonjour à MASSJIPE, M12 😉,

Un double-clique sur la cellule C1 repasse toutes les étiquettes en vert.

Le code principal est dans module1:
VB:
Sub DuVertAuJaune()
Dim xsp As Shape, xt

  On Error Resume Next
  With ActiveSheet
    On Error Resume Next
    For Each xsp In .Shapes
      xt = "": xt = xsp.TextFrame2.TextRange.Text
      If xt <> "" And CInt(xt) = .Range("d1") Then xsp.Fill.ForeColor.RGB = RGB(255, 255, 0)
    Next xsp
    On Error GoTo 0
  End With
End Sub

Sub ReInit()
Dim xsp As Shape, xt

  On Error Resume Next
  With ActiveSheet
    On Error Resume Next
    For Each xsp In .Shapes
      xt = "": xt = xsp.TextFrame2.TextRange.Text
      If IsNumeric(xt) Then xsp.Fill.ForeColor.RGB = RGB(127, 255, 0)
    Next xsp
    On Error GoTo 0
  End With
End Sub

Pour chaque feuille concernée, coller le code suivant dans le module de code de la feuille (on peut aussi dupliquer une feuille existante):
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Range("d1")) Is Nothing Then DuVertAuJaune
End Sub

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  If Not Intersect(Target, Range("c1")) Is Nothing Then
    Cancel = True: ReInit
  End If
End Sub
 

Pièces jointes

Dernière édition:
- 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
12
Affichages
546
Réponses
3
Affichages
415
Retour