Bonsoir , dans mon tableau j'ai fait une macros pour que lors que dans le tableau le texte "zone 1"figure dans une cellule , celle ci se met en rouge .
qui peux me dire pourquoi cela ne fonctionne pas
merci pour votre aide dimitri
Plus intelligent ....
En fait le problème vient de Planning.
Pour les horaires vous faites +"1:00"*1.
Pour XL cela vient à rajouter 0.041666666666666..... qu'il arrondit à 0.0416666666666667. En commetant une légère erreur. Et ces erreurs sont cumulatives.
Au début ça marche ( jusqu'à 13::00) mais ensuite le cumul des erreurs font qu'il ne trouve plus d'égalité.
Solution : dans Planning mettre les heures "en dur", par exemple :
VB:
=SI($C$7<>"";"17:00"*1;"")
Ainsi il ne trouve plus d'erreurs, et on peut supprimer les Round. Voir PJ.
Merci mapomme mais le pb est sur la macros qui a pour but de mettre en rouge une cellule si texte zone 1.
Private Sub Worksheet1_Change(ByVal Target As Range)
' Spécifie la plage de la zone 1
Dim zone1 As Range
Set zone1 = Range("A1:A100") ' Changez cela en fonction de votre plage réelle
' Spécifie la couleur que vous souhaitez attribuer
Dim couleur As Long
couleur = RGB(255, 0, 0) ' Rouge, vous pouvez changer ces valeurs pour d'autres couleurs
' Vérifie si la cellule modifiée est dans la zone1
If Not Intersect(Target, zone1) Is Nothing Then
' Vérifie le texte dans la cellule modifiée
If Target.Value = "VotreTexteRecherché" Then ' Remplacez "VotreTexteRecherché" par le texte souhaité
' Applique la couleur à la cellule modifiée
Target.Interior.Color = couleur
Bonsoir Dimitri, mapomme,
La seule macro qui a un ".Interior.Color = couleur est Worksheet1_Change(ByVal Target As Range)
Mais la présence du "1" fait qu'elle ne s'exécute jamais ( au profit de Worksheet_Change qui est au début de vos macros )
D'autre part, même si elle était active, elle ne s'exécuterait que dans la plage Range("A1:A100"), plage qui est vide dans votre feuille.
Pourquoi ne pas mettre une simple MFC comme :
VB:
=CHERCHE("zone 1";C8)
( Attention, dans le fichier il est écrit "zone 1" et non "zone 1" comme dans la demande. ( 2 espaces et non 1 )
Sub ExempleFormatageConditionnelErreur()
'Création de l'objet Range
Dim MaPlage As Range: Set MaPlage = Range("C8:G18")
'Ajouter une règle d'erreur
MaPlage.FormatConditions.Add Type:=xlExpression, Formula1:="=CHERCHE(""zone 1"";C8)"
'Défini la couleur intérieure en rouge
MaPlage.FormatConditions(1).Interior.Color = RGB(255, 0, 0)
End Sub
Je vous laisse le soin du déclenchement ou de l'exécution. ( va dépendre de vos macros )
Mais pourquoi mettre une macro au lieu d'une MFC puisque dans ce tableau vous avez déjà 5 MFC en place ?
Merci en faite la finalité de mon projet et que exemple si dans le tableau :
zone 1 cellule en rouge
zone 2 cellule en vert
zone 3 cellule jaune
zone 4 cellule violet
re désolé de tourner en rond ,ok pour le planning ci dessus mais quand je change de la semaine 1 vers 2 et reviens sur 1 je retrouve pas tous mes attribution dans le planning C 9-10-11 disparaît .
Re,
Les horaires, gérés par XL, sont des décimaux, et peuvent être des nombres rationnels, comme 16:00 qui vaut 0.6666666666666666.... il arrive donc pour certaines heures que la différence entre l'heure de Archives et l'heure de Planning soit de 1e-16 donc pas égal à 0, et donc pas égalité, d'où le bug.
En utilisant un arrondi on résout le problème, voir PJ, avec :
VB:
If (Round(Cells(ligne, 2).Value, 6) = Round(feuille.Cells(ligne_ext, 5).Value, 6) And ....
Plus intelligent ....
En fait le problème vient de Planning.
Pour les horaires vous faites +"1:00"*1.
Pour XL cela vient à rajouter 0.041666666666666..... qu'il arrondit à 0.0416666666666667. En commetant une légère erreur. Et ces erreurs sont cumulatives.
Au début ça marche ( jusqu'à 13::00) mais ensuite le cumul des erreurs font qu'il ne trouve plus d'égalité.
Solution : dans Planning mettre les heures "en dur", par exemple :
VB:
=SI($C$7<>"";"17:00"*1;"")
Ainsi il ne trouve plus d'erreurs, et on peut supprimer les Round. Voir PJ.