Macro pour détecter journée manquante

anasimo

XLDnaute Occasionnel
Bonjour

je cherche 1 macro pour me détecter une journée manquante (journée non saisie par omission)... bien sur sauf samedi et dimanche (journée non comptabilisée) . la date de la journée se trouve dans la colonne B

je vous met en PJ à quoi ressemble le fichier (par confidentialité, j'ai supprimé les autres colonnes et le contenu de autres cellules)...la date de la journée se trouve dans la colonne B de la feuille "Compta".

Un msgbox m’indiquant s'il y a une journée manquante ou à vous d'imaginer ...ou peut être un msgbox m'indiquant nbr de journées matérialisées....etc

Il s'agit de noter que je dois chaque mois faire cette vérif

Merci de votre aide.
 

Pièces jointes

  • journée.xlsx
    25.7 KB · Affichages: 9

patricktoulon

XLDnaute Barbatruc
bonjour
dans le debug tu a la liste des jours manquants
VB:
Sub test()
   Dim c As Range, plage As Range
    firstdate = CDate("31/12/" & Year(Date) - 1)
    Set plage = Range("B1:B" & Cells(Rows.Count, "B").End(xlUp).Row)
    For j = 1 To 360
        Set c = plage.Find(CDate(firstdate + j), LookIn:=xlValues)
        If c Is Nothing Then Debug.Print CDate(firstdate + j)
    Next
End Sub
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour le fil, bonjour le forum,

Pas la classe de Patrick mais une autre approche :

VB:
Sub Macro1()
Dim OC As Worksheet 'déclare la variable OC (Onglet Compta)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim TMP As Variant 'déclare la variable TMP (tableau TeMPoraire)
Dim MSG As String 'déclare la variable MSG (MeSsaGe)
Dim JS As String 'déclare la variable JS (Jour de la Semaine)

Set OC = Worksheets("compta") 'définit l'onglet OC
TV = OC.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
For I = 2 To UBound(TV, 1) 'boucle sur toutes les ligne I du tableau des valeurs TV (en partant de la seconde)
    D(TV(I, 2)) = "" 'alimente le dictionaire D avec les données en colonne 2
Next I 'prochaine ligne de la boucle
TMP = D.Keys 'récupère dans le tableau temporaire TMP la liste des éléments du dictionnaire D sans doublon
For I = 0 To UBound(TMP) - 1 'boucle sur tous les élément du tabeau temporaire TMP (sauf le dernier)
    If TMP(I + 1) <> TMP(I) + 1 Then 'condition : si l'élément suivant est différent de l'élément de la boucle plus un jour
         If Weekday(TMP(I), vbMonday) <> 5 Then 'condition 2: si le jour de la semaine n'est pas un vendredi
            'définit le jour de la semaine JS
            JS = Choose(Weekday(TMP(I), vbMonday), "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche")
            'définit le message MSG
            MSG = MSG & JS & " " & TMP(I) + 1 & Chr(13)
        End If 'fin de la condition 2
    End If 'fin de la condition 1
Next I 'prochaine ligne de la boucle
MsgBox "Manque le :" & Chr(13) & MSG 'message
End Sub
 

patricktoulon

XLDnaute Barbatruc
re
je viens de retester avec ma macro
j'ai enlevé les weekend
VB:
Sub test()
   Dim c As Range, plage As Range
    firstdate = CDate("31/12/" & Year(Date) - 1)
    Set plage = Range("B1:B" & Cells(Rows.Count, "B").End(xlUp).Row)
    For j = 1 To 360
        Set c = plage.Find(CDate(firstdate + j), LookIn:=xlValues)
         If c Is Nothing Then If Weekday(firstdate + j, vbUseSystemDayOfWeek) < 6 Then Debug.Print "Manquants!!: " & CDate(firstdate + j) & Format(CDate(firstdate + j), " dddd dd mm yyyy")
       Next
End Sub


j'obtiens cette liste dans le debug et après examen c'est exact !!
Manquants!!: 01/01/2019 mardi 01 01 2019
Manquants!!: 11/01/2019 vendredi 11 01 2019
Manquants!!: 01/05/2019 mercredi 01 05 2019
Manquants!!: 05/06/2019 mercredi 05 06 2019
Manquants!!: 06/06/2019 jeudi 06 06 2019
Manquants!!: 07/06/2019 vendredi 07 06 2019
Manquants!!: 30/07/2019 mardi 30 07 2019
Manquants!!: 12/08/2019 lundi 12 08 2019
Manquants!!: 13/08/2019 mardi 13 08 2019
Manquants!!: 14/08/2019 mercredi 14 08 2019
Manquants!!: 15/08/2019 jeudi 15 08 2019
Manquants!!: 20/08/2019 mardi 20 08 2019
Manquants!!: 21/08/2019 mercredi 21 08 2019
Manquants!!: 02/09/2019 lundi 02 09 2019
Manquants!!: 03/09/2019 mardi 03 09 2019
Manquants!!: 04/09/2019 mercredi 04 09 2019
Manquants!!: 05/09/2019 jeudi 05 09 2019
Manquants!!: 06/09/2019 vendredi 06 09 2019
Manquants!!: 09/09/2019 lundi 09 09 2019
Manquants!!: 10/09/2019 mardi 10 09 2019
Manquants!!: 11/09/2019 mercredi 11 09 2019
Manquants!!: 12/09/2019 jeudi 12 09 2019
Manquants!!: 13/09/2019 vendredi 13 09 2019
Manquants!!: 16/09/2019 lundi 16 09 2019
Manquants!!: 17/09/2019 mardi 17 09 2019
Manquants!!: 18/09/2019 mercredi 18 09 2019
Manquants!!: 19/09/2019 jeudi 19 09 2019
Manquants!!: 20/09/2019 vendredi 20 09 2019
Manquants!!: 23/09/2019 lundi 23 09 2019
Manquants!!: 24/09/2019 mardi 24 09 2019
Manquants!!: 25/09/2019 mercredi 25 09 2019
Manquants!!: 26/09/2019 jeudi 26 09 2019
Manquants!!: 27/09/2019 vendredi 27 09 2019
Manquants!!: 30/09/2019 lundi 30 09 2019
Manquants!!: 01/10/2019 mardi 01 10 2019
Manquants!!: 02/10/2019 mercredi 02 10 2019
Manquants!!: 03/10/2019 jeudi 03 10 2019
Manquants!!: 04/10/2019 vendredi 04 10 2019
Manquants!!: 07/10/2019 lundi 07 10 2019
Manquants!!: 08/10/2019 mardi 08 10 2019
Manquants!!: 09/10/2019 mercredi 09 10 2019
Manquants!!: 10/10/2019 jeudi 10 10 2019
Manquants!!: 11/10/2019 vendredi 11 10 2019
Manquants!!: 14/10/2019 lundi 14 10 2019
Manquants!!: 15/10/2019 mardi 15 10 2019
Manquants!!: 16/10/2019 mercredi 16 10 2019
Manquants!!: 17/10/2019 jeudi 17 10 2019
Manquants!!: 18/10/2019 vendredi 18 10 2019
Manquants!!: 21/10/2019 lundi 21 10 2019
Manquants!!: 22/10/2019 mardi 22 10 2019
Manquants!!: 23/10/2019 mercredi 23 10 2019
Manquants!!: 24/10/2019 jeudi 24 10 2019
Manquants!!: 25/10/2019 vendredi 25 10 2019
Manquants!!: 28/10/2019 lundi 28 10 2019
Manquants!!: 29/10/2019 mardi 29 10 2019
Manquants!!: 30/10/2019 mercredi 30 10 2019
Manquants!!: 31/10/2019 jeudi 31 10 2019
Manquants!!: 01/11/2019 vendredi 01 11 2019
Manquants!!: 04/11/2019 lundi 04 11 2019
Manquants!!: 05/11/2019 mardi 05 11 2019
Manquants!!: 06/11/2019 mercredi 06 11 2019
Manquants!!: 07/11/2019 jeudi 07 11 2019
Manquants!!: 08/11/2019 vendredi 08 11 2019
Manquants!!: 11/11/2019 lundi 11 11 2019
Manquants!!: 12/11/2019 mardi 12 11 2019
Manquants!!: 13/11/2019 mercredi 13 11 2019
Manquants!!: 14/11/2019 jeudi 14 11 2019
Manquants!!: 15/11/2019 vendredi 15 11 2019
Manquants!!: 18/11/2019 lundi 18 11 2019
Manquants!!: 19/11/2019 mardi 19 11 2019
Manquants!!: 20/11/2019 mercredi 20 11 2019
Manquants!!: 21/11/2019 jeudi 21 11 2019
Manquants!!: 22/11/2019 vendredi 22 11 2019
Manquants!!: 25/11/2019 lundi 25 11 2019
Manquants!!: 26/11/2019 mardi 26 11 2019
Manquants!!: 27/11/2019 mercredi 27 11 2019
Manquants!!: 28/11/2019 jeudi 28 11 2019
Manquants!!: 29/11/2019 vendredi 29 11 2019
Manquants!!: 02/12/2019 lundi 02 12 2019
Manquants!!: 03/12/2019 mardi 03 12 2019
Manquants!!: 04/12/2019 mercredi 04 12 2019
Manquants!!: 05/12/2019 jeudi 05 12 2019
Manquants!!: 06/12/2019 vendredi 06 12 2019
Manquants!!: 09/12/2019 lundi 09 12 2019
Manquants!!: 10/12/2019 mardi 10 12 2019
Manquants!!: 11/12/2019 mercredi 11 12 2019
Manquants!!: 12/12/2019 jeudi 12 12 2019
Manquants!!: 13/12/2019 vendredi 13 12 2019
Manquants!!: 16/12/2019 lundi 16 12 2019
Manquants!!: 17/12/2019 mardi 17 12 2019
Manquants!!: 18/12/2019 mercredi 18 12 2019
Manquants!!: 19/12/2019 jeudi 19 12 2019
Manquants!!: 20/12/2019 vendredi 20 12 2019
Manquants!!: 23/12/2019 lundi 23 12 2019
Manquants!!: 24/12/2019 mardi 24 12 2019
Manquants!!: 25/12/2019 mercredi 25 12 2019
Manquants!!: 26/12/2019 jeudi 26 12 2019
 

patricktoulon

XLDnaute Barbatruc
re
aha!!!! ben voila dis moi ca au lieu de me dire que ca fait rien ;)
le debug c'est la console pour vbe (la ou tu code ) la fenêtre d’exécution
regarde
demo3.gif
 

Discussions similaires

Statistiques des forums

Discussions
312 025
Messages
2 084 735
Membres
102 648
dernier inscrit
radhwane taibi