Erreur 1004 (La variable de contrôle For Each doit être de type Variant)

bonsoir tout le monde voici mon code que j'effectuer mais tout le temps j ai l'erreur 1004

(La variable de contrôle For Each doit être de type Variant ou Object) vous trouvez ci dessous mon code effectuer

veuillez m'aider svp

merci cher colleagues

Private Sub Workbook_open()

Dim Rng As Date

For Each Rng In Range("F2;F10") ' Définir la plage (exemple)

If Rng.Value = "" Then GoTo SuiteRng

If Rng.Value < Date + 3 And Rng.Value <> "" Then

Rng.Interior.ColorIndex = 6

Rng.Font.Bold = True

MsgBox (" L'Alert Va bientot s'expirer ")

ElseIf Rng.Value = Date Or Rng.Value > Date Then

Rng.Interior.ColorIndex = 3

Rng.Font.Bold = True

MsgBox ("L'Alert Est expirée")

Else
Rng.Interior.ColorIndex = 10
End If
' Suite de la boucle
SuiteRng:
Next
End Sub

Edit modo : merci d'utiliser le bouton </> pour mettre le code entre balises

Bonjour,

Essaie de déclarer Rng as range, et non pas as date. Sinon tu ne peux effectivement pas parcourir les valeurs de ta range.

D'ailleurs, en l'état actuel ça va parcourir F2 ET F10, et non pas de F2 à F10. Je ne sais pas si c'est ce que tu souhaitais ?

bonsoir,

bonsoir JoyeuxNoel,

comme l'indique le message d'erreur, la variable utilisée dans une instruction for each doit être de type variant donc

remplace le dim rng as date par dim rng as variant (ou par dim rng ' tout court ou ne pas la définir)

Private Sub Workbook_open()
    Dim Rng As Variant
    For Each Rng In Range("F2:F10") ' Définir la plage (exemple)
        If Rng.Value <> "" Then
            If Rng.Value < Date + 3 And Rng.Value <> "" Then
                Rng.Interior.ColorIndex = 6
                Rng.Font.Bold = True
                MsgBox (" L'Alert Va bientot s'expirer ")
            ElseIf Rng.Value = Date Or Rng.Value > Date Then
                Rng.Interior.ColorIndex = 3
                Rng.Font.Bold = True
                MsgBox ("L'Alert Est expirée")
            Else
                Rng.Interior.ColorIndex = 10
            End If
        End If
    Next
End Sub

Bonsoir h2so4,

Ça ne fonctionnerait pas ici de déclarer en range ? J'aurais pensé que si
Mais oui, le plus simple est peut-être de ne rien déclarer.

Bonjour à toutes et tous,
Ma petite contribution matinale.
Cdlt.

Private Sub Workbook_open()
Dim Cell As Range
    For Each Cell In Range("F2:F10")
        If Not IsEmpty(Cell) And IsDate(Cell) Then
            Cell.Font.Bold = True
            Select Case True
                Case Cell.Value < DateAdd("d", -3, Date):
                    Cell.Interior.Color = 65535
                    MsgBox ("L'alerte va bientot expirée.")
                Case Cell.Value >= Date
                    Cell.Interior.Color = 255
                    MsgBox ("L'alerte est expirée.")
                Case Else
                    Cell.Interior.Color = 32768
            End Select
        End If
    Next
End Sub

bonjour à tous,

@ JoyeuxNoel,

Ça ne fonctionnerait pas ici de déclarer en range ? J'aurais pensé que si

tu as tout à fait raison, je devais être fatigué. Je me suis basé sur le message d'erreur trouvé dans le titre et non sur le message d'erreur indiqué dans le corps du post "La variable de contrôle For Each doit être de type Variant ou Object"

merci chère collaborateur.

Rechercher des sujets similaires à "erreur 1004 variable controle each doit etre type variant"