VBA: liste de nom selon date dans une messageBox

Deabon

XLDnaute Nouveau
Bonjour à tous,
Je commence à peine à comprendre le VBA mais j'ai un souci sur ce fichier-là:

J'ai un planning avec un nom (N°G) et une tâche répétitive tous les 5 ans à faire (Date 1, Date 2...).
Je souhaite qu'Excel m'indique dans une message box les noms (séparés par des virgules) qui doivent être fait durant l'année en cours (ici 2015, soit du 01 Janv au 31 Dec).

J'ai essayé de mettre des conditions et même de faire mon code colonne par colonne (actuellement 16 dates), mais rien n'y convient.

Merci de votre aide
 

Pièces jointes

  • Planning Forum.xlsx
    12.5 KB · Affichages: 27

job75

XLDnaute Barbatruc
Re : VBA: liste de nom selon date dans une messageBox

Bonjour Deabon,bienvenue sur XLD,

Placez cette macro où vous voulez dans VBA (Alt+F11) et exécutez-la :

Code:
Sub Liste()
Dim P As Range, ncol%, an%, i&, j%, mes$, n&
Set P = Feuil1.UsedRange 'CodeName de la feuille
ncol = P.Columns.Count
an = Year(Date)
For i = 2 To P.Rows.Count
  For j = 2 To ncol
    If IsDate(P(i, j)) Then If Year(P(i, j)) = an Then _
      mes = mes & ", " & P(i, 1).Text: n = n + 1: Exit For
  Next j
Next i
MsgBox n & " noms en " & an & " :" & vbLf & Mid(mes, 3)
End Sub
A+
 

job75

XLDnaute Barbatruc
Re : VBA: liste de nom selon date dans une messageBox

Bonjour Deabon,

Dans la mesure où les dates se décalent toujours de la même manière vers la droite :

Code:
Sub Liste()
Dim an%, decal As Byte, r As Range, dat, mes$, n&
an = Year(Date)
decal = 5
For Each r In Feuil1.UsedRange.Offset(, 1).Rows
  dat = r.Cells(1)
  If IsDate(dat) Then If (an - Year(dat)) Mod decal = 0 _
    Then If an >= Year(dat) And an <= Year(Application.Max(r)) _
      Then mes = mes & ", " & r.Cells(, 0).Text: n = n + 1
Next r
MsgBox n & " nom(s) en " & an & " :" & vbLf & Mid(mes, 3)
End Sub
Sur un grand tableau c'est nettement plus rapide.

Bonne journée.
 

Discussions similaires

Statistiques des forums

Discussions
312 185
Messages
2 086 009
Membres
103 089
dernier inscrit
johnjohn1969