Boucle FOR EACH

bonjour le forum,

J'aurais besoin d'aide s.v.p..

a l'ouverture de mon classeur j'ai deux alerte par date, dont une date périmée pour télématique et

l'autre pour maintenance périmée aussi.

seulement la premiere (télématique) me donne les messages, pour ce qui est des maintenances je n'ai rien

aucun messages.

je voudrais avoir les messages d'alertes du télématique et ensuite ceux des maintenances.

je bloque la, quelle est mon erreur?

Merci!

Private Sub workbook_open()

    Dim Dt As Range

    Dim Ws As Worksheet

    Set Ws = Worksheets("feuil6")

    For Each Dt In Ws.Range("F2:E4000")
              If Dt = Date And Dt <> "" Then _
            MsgBox "Le TÉLÉMATIQUE est arriver a EXPIRATION pour " & Dt.Offset(0, -3) & " " & " , " & _
Dt & " ", _
            vbExclamation, " EXPIRATION du TÉLÉMATIC "

  Next
    For Each Dt In Ws.Range("J2:I4000")
              If Dt = Date And Dt <> "" Then _
            MsgBox "La MAINTENANCE est arriver a EXPIRATION pour " & Dt.Offset(0, -6) & " " & " , " & _
Dt & " ", _
            vbExclamation, " EXPIRATION des MAINTENANCES "

  Next Dt

Worksheets("feuil1").Activate

 End Sub

Bonjour,

Pas d'erreur de syntaxe dans le code... Le problème est ailleurs !

Tu devrais peut-être mettre : If Dt <= Date...

Bonjour le fil, bonjour le forum,

je ne vois pas non plus pourquoi ton code ne fonctionne pas. Je te propose, plutôt que de travailler sur les cellules, d'utiliser une variable tableau de type Variant qui s'exécute beaucoup plus vite :

Code non testé :

Private Sub workbook_open()
Dim TV As Variant
Dim Ws As Worksheet

Set Ws = Worksheets("feuil6")
TV = Ws.Range("A2:J4000")
On Error Resume Next
For I = 2 To 4000
    If CDate(TV(I, 5)) = Date Then
        MsgBox "Le TÉLÉMATIQUE est arriver a EXPIRATION pour " & TV(I, 2) & " " & " , " & _
               TV(I, 5) & " ", vbExclamation, " EXPIRATION du TÉLÉMATIC "
    End If
    If CDate(TV(I, 6)) = Date Then
        MsgBox "Le TÉLÉMATIQUE est arriver a EXPIRATION pour " & TV(I, 3) & " " & " , " & _
               TV(I, 6) & " ", vbExclamation, " EXPIRATION du TÉLÉMATIC "
    End If
    If CDate(TV(I, 9)) = Date Then
        MsgBox "La MAINTENANCE est arriver a EXPIRATION pour " & TV(I, 3) & " " & " , " & _
               TV(I, 9) & " ", vbExclamation, " EXPIRATION du TÉLÉMATIC "
    End If
    If CDate(TV(I, 10)) = Date Then
        MsgBox "La MAINTENANCE est arriver a EXPIRATION pour " & TV(I, 4) & " " & " , " & _
               TV(I, 10) & " ", vbExclamation, " EXPIRATION du TÉLÉMATIC "
    End If
Next I
Worksheets("Feuil1").Activate
End Sub

Salut Plutot,

Bonjour MFerrand, ThauThème,

Plutôt que de nous prendre pour des devins, envoie un fichier!

A+

69classeur2.xlsm (71.95 Ko)

Bonjour MFerrand, ThauThème, Curulis57,

les cellules vide en serait'il la cause?

pour les cellules sans date la cellule voisine devrait etre vide aussi.ceci est un autre de mes problèmes.

je vous met une pati du fichier.

merci ,

Bonjour,

Tout simplement parce qu'il n'y a aucune date de ce jour (17/01/2017) dans la colonne I

Bonjour Theze, MFerrand, ThauThème, Curulis57,

Il y a des jours comme ça

je crois que l'important c'est de participer...

Re,

À Sète, on appelle ça un imbeut ou une trume épaisse. Ça pourrait se traduire par tâche ou boulet, voire pire...

Rechercher des sujets similaires à "boucle each"