Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Bonjour,
N'étant pas expert, je vous soumet mon problème.
J'ai créé une zone de texte dont le contenu est égale à la valeur d'une cellule.
Mais je souhaiterais que lorsque la valeur est nulle la zone de texte soit verte et lorsque la valeur est différent de zéro, la zone de texte soit rouge.
Pour info, je crée une petite application pour mes réservations de tables de mon restaurant. Donc table rouge >> table occupée et table verte >> table libre.
La mise en forme conditionnelle n'est pas activable sur des zones de texte qui sont crées sous la forme d'un bouton. C'est uniquement utilisable sur des cellules or c'est les zones de texte que je veux mettre en forme.
Phyvon61
Re : Mise en forme d'une zone de texte sous condition
Bonjour Phyvon61, tous,
Pour la mise en forme conditionnelle, il faut avouer que l'aide en ligne n'aide pas beaucoup
Alors je t'ai fait ça
Code:
Sub MiseEnFormeConditionnelle()
'Saisie des deux conditions dans des cellules hors "salle de restaurant"
Range("E3").FormulaR1C1 = "Occupée"
Range("H3").FormulaR1C1 = "Libre"
'La salle de restaurant comprend 36 tables E4:H12 (Cellules E3->H3 réservées)
With Range("E3:H12")
'on supprime l'éventuelle mise en forme conditionnelle existante (à conserver)
.FormatConditions.Delete
'Mise en forme par défaut - Bordures de cellules
.Borders(xlEdgeLeft).LineStyle = xlContinuous
.Borders(xlEdgeTop).LineStyle = xlContinuous
.Borders(xlEdgeBottom).LineStyle = xlContinuous
.Borders(xlEdgeRight).LineStyle = xlContinuous
.Borders(xlInsideVertical).LineStyle = xlContinuous
.Borders(xlInsideHorizontal).LineStyle = xlContinuous
'Au départ, on n'a pas mis la table, on les peint en jaune
.Interior.ColorIndex = 6
.Interior.Pattern = xlSolid
End With
'On renseigne la première conditions de mise en forme : E3 = "Occupée"
'si le contenu d'une cellule de la plage "E4:H12" est = à "E3"
'... on la peint en rouge
With Range("E3:H12")
.FormatConditions.Add Type:=xlCellValue, _
Operator:=xlEqual, Formula1:="=$E$3"
.FormatConditions(1).Interior.ColorIndex = 3
End With
'On renseigne la seconde conditions de mise en forme : H3 = "Libre"
'si le contenu d'une cellule de la plage "E4:H12" est = à "H3"
'... on la peint en vert
With Range("E3:H12")
.FormatConditions.Add Type:=xlCellValue, _
Operator:=xlEqual, Formula1:="=$H$3"
.FormatConditions(2).Interior.ColorIndex = 4
End With
'On met les couverts sur toutes les tables
Range("E4") = "Libre"
Range("E4").Copy Range("E4:H12")
'La table F8 a été renversée par le vent
Range("F8") = "Renversée par le vent"
'Une table est réservée
Range("G10") = "Réservée"
End Sub
Reste à adapter les plages mais tu peux tester la macro sans rien changer pour voir ce que ça donne.
Je n'ai mis que deux conditions mais il peut y en avoir trois.
De même,j'ai utiliser les termes Libre et Occupée mais tu peux mettre 1 et 0, c'est plus rapide à remplir quand c'est le coup de feu
Bonjour Phyvon61, tous,
Pour la mise en forme conditionnelle, il faut avouer que l'aide en ligne n'aide pas beaucoup
Alors je t'ai fait ça
Code:
Sub MiseEnFormeConditionnelle()
'Saisie des deux conditions dans des cellules hors "salle de restaurant"
Range("E3").FormulaR1C1 = "Occupée"
Range("H3").FormulaR1C1 = "Libre"
'La salle de restaurant comprend 36 tables E4:H12 (Cellules E3->H3 réservées)
With Range("E3:H12")
'on supprime l'éventuelle mise en forme conditionnelle existante (à conserver)
.FormatConditions.Delete
'Mise en forme par défaut - Bordures de cellules
.Borders(xlEdgeLeft).LineStyle = xlContinuous
.Borders(xlEdgeTop).LineStyle = xlContinuous
.Borders(xlEdgeBottom).LineStyle = xlContinuous
.Borders(xlEdgeRight).LineStyle = xlContinuous
.Borders(xlInsideVertical).LineStyle = xlContinuous
.Borders(xlInsideHorizontal).LineStyle = xlContinuous
'Au départ, on n'a pas mis la table, on les peint en jaune
.Interior.ColorIndex = 6
.Interior.Pattern = xlSolid
End With
'On renseigne la première conditions de mise en forme : E3 = "Occupée"
'si le contenu d'une cellule de la plage "E4:H12" est = à "E3"
'... on la peint en rouge
With Range("E3:H12")
.FormatConditions.Add Type:=xlCellValue, _
Operator:=xlEqual, Formula1:="=$E$3"
.FormatConditions(1).Interior.ColorIndex = 3
End With
'On renseigne la seconde conditions de mise en forme : H3 = "Libre"
'si le contenu d'une cellule de la plage "E4:H12" est = à "H3"
'... on la peint en vert
With Range("E3:H12")
.FormatConditions.Add Type:=xlCellValue, _
Operator:=xlEqual, Formula1:="=$H$3"
.FormatConditions(2).Interior.ColorIndex = 4
End With
'On met les couverts sur toutes les tables
Range("E4") = "Libre"
Range("E4").Copy Range("E4:H12")
'La table F8 a été renversée par le vent
Range("F8") = "Renversée par le vent"
'Une table est réservée
Range("G10") = "Réservée"
End Sub
Reste à adapter les plages mais tu peux tester la macro sans rien changer pour voir ce que ça donne.
Je n'ai mis que deux conditions mais il peut y en avoir trois.
De même,j'ai utiliser les termes Libre et Occupée mais tu peux mettre 1 et 0, c'est plus rapide à remplir quand c'est le coup de feu
Cela me semble parfaitement correspondre mais je précise que c'est les zones de texte (sous forme de bouton) et non pas les cellules que je veux mettre en forme. Je vais tester et adapter cet après midi car à cette heure ci je prépare le service de ce midi. Il me semble que tu as déjà planché sur une application de réservation de table. As tu développé ou trouver une application de ce type sous excel car je serais éventuellement intéressé.
J'ai créé une zone de texte dont le contenu est égale à la valeur d'une cellule.
Mais je souhaiterais que lorsque la valeur est nulle la zone de texte soit verte et lorsque la valeur est différent de zéro, la zone de texte soit rouge.
Re,
bonjour a tous,
Je n'avais pas vu que tu parler de texte de bouton mais chez moi avec la mise en forme conditionnelle je peut selon le texte dans une cellules mettre ce texte en vert ou en rouge selon condition voici un fichier joint qui j'espère fonctionnera chez toi pour te montrer que cela est possible sur le texte (petit rappel pas spécifier au départ qu'il s'agissait de bouton.)
Je suis en office07 je ne sais pas si la conversion en 97/2003 gardera cette mise en forme conditionnelle pour te le prouver,
Mais bref je pense que les solution qui te sont proposer autre que la mienne qui a mes yeux n'as que d'importance de prouver que la mise en forme conditionnelle est possible sur du texte.
Bonne journée
Re : Mise en forme d'une zone de texte sous condition
Hello,
Avec des boutons ce serait différent car tu ne peux plus utiliser la mise en forme conditionnelle (j'ai office 2003) où alors je ne sais pas faire.
Par contre, si j'avais à faire ça, j'utiliserais un userform où l'on peut traiter une collection de boutons à l'aide d'une macro unique dans un module de classe.
Ce qui veut dire que chaque fois qu'un bouton est activé (sélectionné) une seule macro est nécessaire pour traiter l'événement, quelque soit le bouton.
Le procédé est infiniment plus simple à mettre en oeuvre mais le concept d'objet est parfois plus aride à comprendre.
On peut bien sûr te faire ça mais tu risques d'avoir du mal à adapter.
As-tu une idée de quoi je cause ?
As-tu déjà utilisé des userforms ?
Dis-nous tout
Re,
C'est très bien ce que tu as fait. Je dois pouvoir l'adapter à mon fichier.
Connaissant Excel à l'exception des macros et du VBA, j'ai l'impression que je me suis embetté comme c'est pas possible avec ce que j'ai fait. Je met mon fichier en pièce jointe. Etant donné que tu as l'air expert en la matière, pourrais tu jeter un coup d'oeil pour voir ce que tu en penses? Cela serait trés sympa.
PS: je n'arrive pas à envoyer le fichier car il fait 120k une fois compressé. Comment faire???
Re : Mise en forme d'une zone de texte sous condition
Re,
Simplifie au maximum ton fichier (juste un exemple avec moins de données , le minimum de feuilles, de formules etc., juste le minimum pour que ce soit compréhensible)
Au pire des cas tu peux le rendre disponible sur un site genre Accueil de Cjoint.com
Cordialement,
Guiv
Re,
C'est très bien ce que tu as fait. Je dois pouvoir l'adapter à mon fichier.
Connaissant Excel à l'exception des macros et du VBA, j'ai l'impression que je me suis embetté comme c'est pas possible avec ce que j'ai fait. Je met mon fichier en pièce jointe. Etant donné que tu as l'air expert en la matière, pourrais tu jeter un coup d'oeil pour voir ce que tu en penses? Cela serait trés sympa.
PS: je n'arrive pas à envoyer le fichier car il fait 120k une fois compressé. Comment faire???
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.