Macro alerte à échéance

Bonjour à tous,

Je sollicite votre aide concernant une macro que je n'arrive pas à finaliser totalement.

Je m'explique => je souhaite, lors de l'ouverture du fichier, un msgbox respectant 3 conditions:

  • si nb de jours avant date échéance (colonne I) = 1 to 240 = msg etc...
  • si nb de jours avant date échéance = 0 = msg etc..;
  • si valeur cellule = "Sans" ou "" = aucun message

Voila mon code qui fonctionne nickel. Cependant, je n'arrive pas à y intégrer la condition lorsque la cellule = "Sans", je veux qu'il l'accepte sans alerte (actuellement, quand je mets "Sans" ou "", cela m'envoie au message de débogage).

Pouvez-vous m'aider svp à ce sujet ? Merci d'avance

Private Sub Workbook_Open()

Dim Cel As Range

Dim Ecart As Long

Dim Msg As String

With Worksheets("Feuil1")

For Each Cel In .Range("I2:I" & .Range("A" & Rows.Count).End(xlUp).Row)

If DateDiff("d", Now, Cel.Value) < 0 Then

Ecart = 0

Else

Ecart = DateDiff("d", Now, Cel.Value)

End If

Select Case Ecart

Case 1 To 240

Msg = Msg & "La référence " & Cel.Offset(0, -8) & " arrive à échéance dans " & Cel.Offset(0, 1) & " jours. " & Chr(10)

Case 0

Msg = Msg & "La référence " & Cel.Offset(0, -8) & " a atteint ou dépassé l'échéance. " & Chr(10)

End Select

Next Cel

MsgBox Msg

End With

End Sub

Salut,

Pas de fichier = pas de réponse

Cordialement.

Bonjour à toi Yvouille,

Voici un fichier exemple dans lequel le 1er code se trouve déjà et à améliorer en fonction des besoins que j'ai exprimé si possible.

Merci par avance.

EnGo

202alerte-date.xlsm (106.35 Ko)

Salut,

Je ne comprends pas vraiment ce que tu veux dire par « Sans » ou « ». Sans ou avec quoi ???????

Dans ta macro, tu as deux conditions : 1) si la colonne I est comprise entre 1 et 240 et 2) si la colonne I est 0 (par contre tu ne désires rien du tout si la valeur de la colonne I est plus élevée que 240, donc il est normal que la ligne du code CCC n’est pas listée dans ton MsgBox). Selon l'image ci-dessous, cette partie fonctionne parfaitement.

Que désires-tu exactement ? Qu’une autre ligne soit listée dans le MsgBox en fonction d’une autre valeur dans la colonne I ?

Sinon, tu pourrais aussi nous fournir le fichier avec la macro qui bloque afin que l’on voie pourquoi ça bloque.

A te relire.

capture 23 04

Bonsoir,

En fait, je peux avoir une valeur égale à "sans" dans la colonne durée (qui signifie sans durée), ce qui par conséquent me donnera une valeur nulle (c'est à dire "") dans la colonne I prochaine échéance. Du coup, ce que je voudrais c'est que ce cas de figure soit également traité car quand je teste avec ce cas la macro ne fonctionne pas du tout.

J'espère avoir été plus clair. En tout cas, n'hésite pas si tu as des questions.

Merci vraiment de ton aide précieuse en tout cas.

EnGo

Re-bonjour,

Voici un code qui semble répondre à ton besoin :

Option Explicit
Private Sub Workbook_Open()
Dim Cel As Range
Dim Ecart As Long
Dim Msg As String
    With Worksheets("DJC")
        For Each Cel In .Range("I2:I" & .Range("A" & Rows.Count).End(xlUp).Row)

        On Error Resume Next
        Ecart = DateDiff("d", Now, Cel.Value)

            Select Case Ecart
                Case 1 To 240
                    Msg = Msg & "Le code " & Cel.Offset(0, -8) & " arrive à échéance dans " & Cel.Offset(0, 1) & " jours. " & Chr(10)
                Case Is < 0
                    Msg = Msg & "Le  code " & Cel.Offset(0, -8) & " a atteint ou dépassé l'échéance. " & Chr(10)
            End Select

            Ecart = 0

        Next Cel
        MsgBox Msg
    End With
End Sub

Si tu avais placé un fichier immédiatement avec ton premier message et avec des lignes créant problème - à l'instar du fichier ci-joint - on aurait gagné trois jours

270alerte-date-v1.xlsm (109.52 Ko)

Merci Yvouille, merci beaucoup, ça marche nickel chrome.

EnGo

Rechercher des sujets similaires à "macro alerte echeance"