Bonjour,
Vous avez une bonne base, mais vous utilisez une variable LDate, destinée à recevoir une date, mais qui n'est pas initialisée (aucune valeur ne lui est affectée). Du coup, elle garde la valeur 0 par défaut, et toutes les dates sont comparées à 0 + 30 (correspond au 31/01/1900)...
Autre remarque, ActiveSheet est à mon avis inutile, car votre plage nommée correspond déjà à une plage particulière sur une feuille particulière (qu'il n'y a pas lieu de re-préciser).
Enfin, la seconde MsgBox risque de s'afficher à de nombreuses reprises pour tous les cas sans relance. Je pense donc qu'il faudrait modifier cette partie pour ne l'afficher qu'une seule fois, s'il n'y a effectivement aucune relance à effectuer.
Une proposition :
Private Sub Workbook_Open()
'Relance facture à la date d'échéance + 30 jours
Dim Date_échéance As Range, AuMoinsUneRelance As Boolean
For Each Date_échéance In Range("DateEcheance")
If (Date + 30) > DateEcheance Then 'PS : "Date" équivaut à la fonction Excel =AUJOURDHUI()
MsgBox "La facture " & Cells(Date_échéance.Row, 2) & " doit être relancée", vbExclamation, "Facture à relancer"
AuMoinsUneRelance = True
End If
Next
If Not AuMoinsUneRelance Then MsgBox "Rien à relancer"
End Sub
Selon le contenu de votre fichier, il faudrait peut être ajouter des conditions supplémentaires pour ne pas demander de relance sur une facture déjà relancée, etc...