XL 2016 [Résolu] VBA pour mise en forme conditionnelle

Hynnuh

XLDnaute Junior
Bonjour à vous,

je souhaite mettre en place une mise en forme conditionnelle via VBA
voici le cheminement:
on rentre des informations de date via des input boxes, et on voit apparaitre sur le calendrier les dates correspondantes.



là ou je bloque c'est que je voudrais qu'a chaque ajout de ligne la visualisation se complète
pour le moment la mise en forme conditionnelle ne prend pas en compte le remplissage de la cellule et me modifie ou supprime les mises en formes conditionnelles existantes.
voici le fichier et le code en question.
VB:
Sub etuves()
Dim jour As String
Dim heure As String
Dim fin As String
Dim fin2 As String


jour = Application.InputBox(prompt:="jour", Type:=1)
heure = Application.InputBox(prompt:="Heure", Type:=1)
fin = Range("AJ65536").End(xlUp).Row + 1
fin2 = fin - 1
Feuil1.Range("AJ" & fin) = jour
Feuil1.Range("AK" & fin) = heure
Feuil1.Range("AJ" & fin).NumberFormat = "m/d/yyyy"
Feuil1.Range("AK" & fin).NumberFormat = "h:mm;@"
Feuil1.Range("AL" & fin2, "AP" & fin2).Copy Destination:=Range("AL" & fin, "AP" & fin)


'Création de l'objet Range
Dim MaPlage As Range
Set MaPlage = Feuil1.Range("B10:H15,J10:P15,R10:X15,Z10:AF15,B19:H24,J19:P24,R19:X24,Z19:AF24,B28:H33,J28:P33,R28:X33,Z28:AF33")



With MaPlage        'Sélection des plages où doit s'appliquer la MeF
    'Supprime les MFC existantes


    'Ajoute une condition (Vrai lorsque la cellule est non vide)
    MaPlage.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
        Formula1:="=$AJ$" & fin, Formula2:="=$AN$" & fin
    MaPlage.FormatConditions(1).StopIfTrue = False
    MaPlage.FormatConditions(1).Interior.Color = RGB(255, 150, 139)

End With


End Sub

en vous remerciant d'avance pour votre aide.
 

Pièces jointes

  • Etuves new.xlsm
    36.3 KB · Affichages: 5
Solution
Bonjour,

Le problème, c'est que vous pointez sur la première MFC à chaque fois, alors que vous voulez en réalité pointer sur la dernière MFC. Changez ça :
VB:
MaPlage.FormatConditions(1).StopIfTrue = False
MaPlage.FormatConditions(1).Interior.Color = RGB(255, 150, 139)

Par ça :
VB:
MaPlage.FormatConditions(MaPlage.FormatConditions.Count).StopIfTrue = False
MaPlage.FormatConditions(MaPlage.FormatConditions.Count).Interior.Color = RGB(255, 150, 139)

Bonne journée,

xUpsilon

XLDnaute Accro
Bonjour,

Le problème, c'est que vous pointez sur la première MFC à chaque fois, alors que vous voulez en réalité pointer sur la dernière MFC. Changez ça :
VB:
MaPlage.FormatConditions(1).StopIfTrue = False
MaPlage.FormatConditions(1).Interior.Color = RGB(255, 150, 139)

Par ça :
VB:
MaPlage.FormatConditions(MaPlage.FormatConditions.Count).StopIfTrue = False
MaPlage.FormatConditions(MaPlage.FormatConditions.Count).Interior.Color = RGB(255, 150, 139)

Bonne journée,
 

Discussions similaires

Réponses
2
Affichages
98
Réponses
3
Affichages
547

Statistiques des forums

Discussions
311 710
Messages
2 081 781
Membres
101 817
dernier inscrit
carvajal