Microsoft 365 Erreur 424 objet non défini Cell.Font.Color

IA69

XLDnaute Nouveau
Bonjour à tous,

Je suis face à un pb sur mon code , je souhaites modifié la couleur de la police des cellules contenant une date supérieur à la date d'aujourd'hui sur une plage de cellule.

Cependant il m'affiche une erreur d'objet non défini (424) au moment de la modification de la couleur de police de la cellule.

PS: je pense que c'est un pb de déclaration de variable mais je ne trouve pas de solutions

Voici le code :

Private Sub Worksheet_Activate()

Dim k As Long
Dim i As Long
Dim j As Long


Set onglet1 = ActiveSheet


i = onglet1.Cells(Rows.Count, 2).End(xlUp).Row
j = onglet1.Cells(Rows.Count, 2).End(xlUp).Row + 2
k = onglet1.Cells(3, Columns.Count).End(xlToLeft).Column + 1

myrange = Range(Cells(4, 3), Cells(j, k - 1))



For Each Cell In myrange

If IsDate(Format(Cell, "d/m/y")) = True Then

If Cell <= Date Then


MsgBox (Cell)

Cell.Font.Color = RGB(255, 0, 0)




End If

Else
End If


Next Cell


End Sub
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour IA, et bienvenu sur XLD,
Je pense que votre erreur vient d'autre part.
En PJ un essai avec ce qui se rapproche de votre code, et ça marche correctement.
Pouvez vous tester ?
VB:
Sub essai()
Set myrange = Range("D5:D17")

For Each Cell In myrange
    If IsDate(Format(Cell, "d/m/y")) = True Then
        If Cell <= Date Then
            MsgBox (Cell)
            Cell.Font.Color = RGB(255, 0, 0)
        End If
    End If
Next Cell
End Sub
Sinon fournissez un petit fichier test pour investigation.
 

Pièces jointes

  • Classeur2.xlsm
    15.5 KB · Affichages: 8
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
Il manque essentiellement dans votre code un Set MyRange = …

Je pense que j'écrirais ça différemment :
VB:
Option Explicit
Private Sub Worksheet_Activate()
   Dim Cel As Range, Dt As Date, RngUnion As Range
   For Each Cel In PlageÀPartirDe(Me.Cells(4, 3))
      If VarType(Cel.Value) = vbDate Then
         Dt = Cel.Value
         If Dt < Date Then
            Cel.Font.Color = &HFF&
            MsgBox Cel.Address(False, False) & " = " & Dt & ", vieux de " _
               & Date - Dt & " jours", vbInformation, Me.Name
            If RngUnion Is Nothing Then Set RngUnion = Cel Else Set RngUnion = Union(RngUnion, Cel)
            End If
         End If
      Next Cel
   Application.Goto RngUnion
   End Sub
Private Function PlageÀPartirDe(ByVal CelDéb As Range) As Range
Rem. ——— Plage utilisée à partir de CelDéb.
   Dim NbrLig As Long, NBrCol As Long
   With CelDéb.Worksheet.UsedRange:
      NbrLig = .Row + .Rows.Count - CelDéb.Row
      NBrCol = .Column + .Columns.Count - CelDéb.Column
      If NbrLig <= 0 Or NBrCol <= 0 Then Exit Function
      End With
   Set PlageÀPartirDe = CelDéb.Resize(NbrLig, NBrCol)
   End Function
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonjour le fil

[En passant]
Personnellement, je me dirais que le rouge d'une MFC est exactement le même que vbRed ou encore RGB(255,0,0)
(Avec l'avantage qu'une MFC n'affiche jamais "erreur d'objet non défini (424) "
;)
[/En passant]
PS: Mes amitiés à Jeanne Mas.
 

Statistiques des forums

Discussions
313 198
Messages
2 096 135
Membres
106 504
dernier inscrit
Kannankin Maxime