Microsoft 365 Erreur code Vba

Irina1009

XLDnaute Nouveau
Bonjour à tous,

J'ai commencé à créer ce tableau afin de faciliter le pointage d'heures. Lorsque je clique sur les flèche bleues pour changer le mois, la formule =DATE(B2;1;1) située en D6 disparait.
Pouvez-vous m'aider à ce sujet svp ? Idem lorsque par exemple je remplis les heures dans les colonnes de G à J, celles-ci restent même si je change de mois... Il faudrait qu'elles s'effacent lorsqu'on change de mois et qu'elles reviennent pour pouvoir inscrire celles qui correspondent au mois choisi et revenir dessus lorsqu'on recherche.

Comme je débute en Vba je ne sais pas encore bien utiliser les codes.
Je voudrait aussi dans l'onglet Synthèse annuelle les éléments du premier onglet puissent apparaitre.

Merci d'avance pour vos conseils et explications.
 

Pièces jointes

  • Dernier test point.xlsm
    71.8 KB · Affichages: 7
Dernière édition:

Irina1009

XLDnaute Nouveau
En effet c'est comme apprendre une langue étrangère...

Code:
Option Explicit
Private Sub Worksheet_Activate()
   Dim TSvg(), LS As Long, TRés(), LR As Long, M As Long 'Ligne de déclaration
   Sauvegarde
   TSvg = [TabSvg].Value: LS = 1 ' Attribue une valeur dans le tableau TabSvg dan sla feuille Sauvegarde Le LS je ne comprends pas
   ReDim TRés(1 To UBound(TSvg, 1) \ 28, 1 To 4) 'ici on recupère les valeurs du tableau  enfin je pense le Trés je ne sais pas trop à quoi cela correspond
   Do ' Début mois
      LR = LR + 1: TRés(LR, 1) = Year(TSvg(LS, 1)): TRés(LR, 2) = TSvg(LS, 1)
      M = Year(TSvg(LS, 1)) * 12 + Month(TSvg(LS, 1))
      Do ' Détail jour
         TRés(LR, 3) = TRés(LR, 3) + TSvg(LS, 3) - TSvg(LS, 2) + TSvg(LS, 5) - TSvg(LS, 4)
         TRés(LR, 4) = TRés(LR, 4) + TSvg(LS, 6)
         LS = LS + 1: If LS > UBound(TSvg, 1) Then Exit Do ' Incrément ligne et sortie si dépasse dim tableau
         Loop Until Year(TSvg(LS, 1)) * 12 + Month(TSvg(LS, 1)) > M ' Fin mois
      Loop Until LS > UBound(TSvg, 1) ' Fin tableau
   Me.ListObjects(1).DataBodyRange.Resize(LR).Value = TRés 'Cela doit être ce à quoi correspond Trés. Je pense que cela sert à ajouter une ligne au tableau
   End Sub
 

Dranreb

XLDnaute Barbatruc
Non, la dernière instruction c'est :
VB:
   Me.ListObjects(1).DataBodyRange.Resize(LR).Value = TRés ' Verse la totalité du tableau dynamique dans le tableau Excel.
Et je n'avais pas vu les autres, alors :
VB:
Option Explicit
Private Sub Worksheet_Activate()
   Dim TSvg(), LS As Long, TRés(), LR As Long, M As Long
   Sauvegarde ' Pour prendre en compte les données actuelles de la feuille Pointage
   TSvg = [TabSvg].Value 'Charge la totalité du tableau Excel de sauvegarde dans le tableau dynamique TSvg
   ReDim TRés(1 To UBound(TSvg, 1) \ 28, 1 To 4) ' Redimensionne le tableau dynamique résultant à remplir.
   LS = 1 ' Démarrage sur le numéro de ligne courant de sauvegarde à 1
   Do ' Début mois
      LR = LR + 1: TRés(LR, 1) = Year(TSvg(LS, 1)): TRés(LR, 2) = TSvg(LS, 1)
      M = Year(TSvg(LS, 1)) * 12 + Month(TSvg(LS, 1))
      Do ' Détail jour
         TRés(LR, 3) = TRés(LR, 3) + TSvg(LS, 3) - TSvg(LS, 2) + TSvg(LS, 5) - TSvg(LS, 4)
         TRés(LR, 4) = TRés(LR, 4) + TSvg(LS, 6)
         LS = LS + 1: If LS > UBound(TSvg, 1) Then Exit Do ' Incrément ligne et sortie si dépasse dim tableau
         Loop Until Year(TSvg(LS, 1)) * 12 + Month(TSvg(LS, 1)) > M ' Fin mois
      Loop Until LS > UBound(TSvg, 1) ' Fin tableau
   Me.ListObjects(1).DataBodyRange.Resize(LR).Value = TRés ' Verse la totalité du tableau dynamique dans le tableau Excel.
   End Sub
 
Dernière édition:

Irina1009

XLDnaute Nouveau
Une dernière question
Lorsqu'un jour n'est pas travaillé le calcul de la somme par semaine ne se fait pas et le resultat de la synthèse est alors faussé.


Capture112.JPG
 

Irina1009

XLDnaute Nouveau
Que voudriez vous y faire ? Pour l'instant lorsqu'un jour n'est pas travaillé il manque dans le cumul le nombre d'heures contractuel de ce jour.
Il faut que le temps supplémentaire effectué chaque jour par rapport au nombre d'heure prévu au contrat (à savoir 7h30 du lundi au jeudi et 7 h le vendredi) soit indiqué et comptabilisé.

Il doit apparaitre dans la feuille synthèse annuelle mois par mois.

Hors ici pour le mois de janvier 9h30 heures supplémentaires ont été effectuées mais dans la feuille Synthèse annuelle en janvier il est indiqué 2:00.

Comme le 2 janvier n'a pas été travaillé, les heures ne sont pas prisent en compte et le calcul est donc faussé.
 

Pièces jointes

  • DatesIrina1009.xlsm
    76.2 KB · Affichages: 3

Irina1009

XLDnaute Nouveau
il y est comptabilisé, mais il y manque toujours les 7:30 contractuels du jour non travaillé de sorte que tout est négatif. Est-ce que les heures contractuelles du jour non travaillé doivent être à 0 ?
Non c'est parfait je n'avais pas compris. Désolée. Dans ce cas je suppose que si un jour n'est pas travaillé je dois l'indiquer comme travaillé en indiquant les heures mais par un autre biais je noterais quelque part qu'il s'agit d'un congé.

Merci pour tout.
 

Discussions similaires

Statistiques des forums

Discussions
313 287
Messages
2 096 833
Membres
106 758
dernier inscrit
JM9