Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA: liste de nom selon date dans une messageBox

  • Initiateur de la discussion Initiateur de la discussion Deabon
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

D

Deabon

Guest
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

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+
 
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.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Z
Réponses
3
Affichages
528
Z
Réponses
12
Affichages
1 K
S
Réponses
29
Affichages
2 K
StanislasC
S
T
Réponses
12
Affichages
1 K
S
Réponses
6
Affichages
2 K
SPELTIER
S
B
  • Question Question
Réponses
1
Affichages
827
M
Réponses
4
Affichages
2 K
ManOfCatz
M
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…