Couleur forme en fonction cellule
bonjour,
j'ai un petit problème, j'ai deux feuille sur un même classeur une qui s'appelle "numéro" et une couleur_associé.
sur ma feuulle "numéro" j'aimerais qu'en fonction de ce qui est marqué sur la cellule G32 par exemple, affecter une couleur à ma forme qui ce nome "rectangle 20" sur la feuille couleur_associé
code couleur 3 niveau
- si la cellule G32 de ma feuille numéro contient "vide"=couleur vert pour ma forme "rectangle 32" de la feuille couleur_associé
- si la cellule G32 de ma feuille numéro contient "1,2,3,4,5"= couleur blanc pour la forme "rectangle 32" de la feuille couleur_associé
- si la cellule G32 de ma feuille numéro contient autre chose que "vide" et "1,2,3,4,5"=couleur rouge pour la forme "rectangle 32" de la feuille couleur_associé.
bonne journée et merci d'avance.
Bonjour,
Tout cela n'est pas très clair et tu ne joins aucun fichier... !
Outre joindre un fichier, je conseille d'être plus précis dans tes explications et demandes :
- évite ...par exemple... qui nous dirige toujours vers de l'à peu près... dis ce qu'il en est , et ce qu'il n'en est pas !
- précise s'il y a un forme ou plusieurs !
- renomme tes formes d'un nom un peu plus convivial, (sans mettre un nom à rallonge)
- ne mets entre guillemets que les expressions que l'on doit expressément trouver
- si tu mets "1,2,3,4,5" c'est qu'on trouver la chaîne de texte : 1,2,3,4,5 dans la cellule
- "vide", il toujours bon de préciser si c'est bien vide ou si l'on ne voit rien car une formule renvoie une chaîne vide ("")
Cordialement.
C'est vrai que des fois c'est difficile de ce faire comprendre. J'ai joint le fichier, j'ai essayer un code qui ne marche pas dans le woorkbook.
Voila ce que j'aimerais faire lorsque sur ma feuille config linéaire sur la colonne G à partir de la ligne 6 si dans la cellule par exemple:
- G6 la chaîne de caractère est " lot 1,2,3,4,5" mettre la forme du rectangle AA de la feuille couleur associe en rouge
- si dans G6 chaîne de caractère est "vide" mettre la forme du rectangle AA en vert
- si dans G6 chaîne de caractère est autre chose que "lot 1,2,3,4,4" et "vide" mettre du blanc sur le rectangle AA
Je sais pas si je me suis fais comprendre
Bonjour,
Quelques remarques :
- Tu n'as pas dû lire complètement mon premier post
1) Quand on écrit du code on l'indente (sans sauter de lignes) ! Cela permet de voir pratiquement d'un seul coup d'oeil comment il est structuré et les blocs d'instructions qu'il comporte, et cela permet de le lire beaucoup plus rapidement en sachant ce qu'on lit !
2) Je pense pour ma part que si l'enregistreur peut être un outil de recherche de syntaxe, on peut (et on doit) s'en passer pour produire du code à utiliser, par définitition quasiment toujours mauvais tant qu'on ne l'a pas intégralement réécrit. A cet égard, un indice de code VBA correctement écrit est qu'il ne comporte plus de Select, Selection ou autre Activate... instructions toujours parasites lors de l'exécution d'une action et qu'il soit expurgé des autres éléments superflus que prodigue l'enregistreur (énumération de propriétés à leur valeur par défaut...). Un autre indice est de ne pas procéder par copier-coller lorsque l'on n'a que des valeurs à affecter (VBA dispose d'autres moyens).
3) Les modules dédiés aux feuilles et le module dédié au classeur (ThisWorkbook) sont à réserver aux procédures évènementielles susceptibles d'être programmées pour se lancer automatiquement lors d'un évènement affectant l'objet concerné. Les autres procédures sont à placer dans un module standard à insérer.
4) Autres éléments annexes : je dois avouer que Couleru_associé n'est pas spécialement élégant et me perturbe. Je l'ai donc rectifié.
Si Excel fait des comparaison généralement en mode texte, assimilant ainsi VIDE et Vide, ce n'est pas le cas de VBA qui compare par défaut en mode binaire : VIDE n'est donc pas Vide !
Tu n'avais pas suivi ma recommandation de renommer tes rectangles, j'y ai donc procédé !
Dans la mesure où les couleurs de tes rectangles dépendent des mentions portées sur l'autre feuille la mise à jour de ces couleurs pouvait donc intervenir sur un évènement : la procédure ci-dessous l'opère à l'activation de la feuille Couleur_associée.
Private Sub Worksheet_Activate()
Dim pln As Range, c As Range, rect$, clr&
With Worksheets("Config linéaire")
Set pln = .Range("D6").Resize(.Range("D" & .Rows.Count).End(xlUp).Row - 5)
End With
For Each c In pln
rect = c.Value
Select Case c.Offset(, 3)
Case "lot 1,2,3,4,5"
clr = vbGreen
Case "VIDE"
clr = vbBlack
Case Else
clr = vbYellow
End Select
On Error Resume Next
Me.Shapes(rect).Fill.ForeColor.RGB = clr
On Error GoTo 0
Next c
End SubTu la trouveras dans le module de la feuille concernée. Je t'encourage à l'analyser pour voir comment elle est construite. N'hésite pas à utiliser l'aide pour identifier correctement les objets, leurs propriétés et méthodes, et les autres instructions.
Cordialement.