Microsoft 365 Boite de dialogue suivant date et récupération de données

chnico80

XLDnaute Nouveau
Bonjour à tous,

nouveau sur le forum, je viens vous solliciter pour résoudre un problème.

J'aimerais pouvoir avoir une boite de dialogue qui s'affiche à l'ouverture du fichier quand la date de diffusion est égale à la date du jour.
Dans cette boite de dialogue, j'aimerais également récupérer le N° d'affaire ainsi que le nom d'affaire associé.
Dans le fichier ci joint, par exemple, le 30/03/2023 à l'ouverture du fichier, que j'ai un message me disant :

Diffusion du jour :
789123 test2
124582 test3


J'ai essayé via VBA mais je ne m'y connais pas assez.

Par avance merci
 

Pièces jointes

  • TEST-01.xlsm
    9.5 KB · Affichages: 5
Solution
VB:
Option Explicit
Private Sub Workbook_Open()
   Dim TD(), L As Long, TM() As String, LM As Long
   TD = Feuil1.ListObjects(1).DataBodyRange.Value
   ReDim TM(0 To 1): TM(0) = "Diffusion du jour :": TM(1) = "— (aucune)"
   For L = 1 To UBound(TD)
      If TD(L, 5) = Date Then
         LM = LM + 1: ReDim Preserve TM(0 To LM)
         TM(LM) = "— " & TD(L, 1) & " " & TD(L, 2): End If: Next L
   If LM > 0 Then MsgBox Join(TM, vbLf), vbInformation, Me.Name
   End Sub

Dranreb

XLDnaute Barbatruc
Bonjour.
Aussi possible dans ThisWorkbook :
VB:
Option Explicit
Private Sub Workbook_Open()
   Dim TD(), L As Long, TM() As String, LM As Long
   TD = Feuil1.ListObjects(1).DataBodyRange.Value
   ReDim TM(0 To 1): TM(0) = "Diffusion du jour :": TM(1) = "— (aucune)"
   For L = 1 To UBound(TD)
      If TD(L, 5) = Date Then
         LM = LM + 1: ReDim Preserve TM(0 To LM)
         TM(LM) = "— " & TD(L, 1) & " " & TD(L, 2): End If: Next L
   MsgBox Join(TM, vbLf), vbInformation, Me.Name
   End Sub
 

chnico80

XLDnaute Nouveau
Bonjour.
Aussi possible dans ThisWorkbook :
VB:
Option Explicit
Private Sub Workbook_Open()
   Dim TD(), L As Long, TM() As String, LM As Long
   TD = Feuil1.ListObjects(1).DataBodyRange.Value
   ReDim TM(0 To 1): TM(0) = "Diffusion du jour :": TM(1) = "— (aucune)"
   For L = 1 To UBound(TD)
      If TD(L, 5) = Date Then
         LM = LM + 1: ReDim Preserve TM(0 To LM)
         TM(LM) = "— " & TD(L, 1) & " " & TD(L, 2): End If: Next L
   MsgBox Join(TM, vbLf), vbInformation, Me.Name
   End Sub
Merci à tous pour vos retour, les 2 solutions sont intéressantes. Merci beaucoup.

@Dranreb , ton code me donne un message d'erreur
 

Dranreb

XLDnaute Barbatruc
VB:
Option Explicit
Private Sub Workbook_Open()
   Dim TD(), L As Long, TM() As String, LM As Long
   TD = Feuil1.ListObjects(1).DataBodyRange.Value
   ReDim TM(0 To 1): TM(0) = "Diffusion du jour :": TM(1) = "— (aucune)"
   For L = 1 To UBound(TD)
      If TD(L, 5) = Date Then
         LM = LM + 1: ReDim Preserve TM(0 To LM)
         TM(LM) = "— " & TD(L, 1) & " " & TD(L, 2): End If: Next L
   If LM > 0 Then MsgBox Join(TM, vbLf), vbInformation, Me.Name
   End Sub
 

Discussions similaires

Statistiques des forums

Discussions
313 282
Messages
2 096 789
Membres
106 748
dernier inscrit
Abdel93