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:

Phil69970

XLDnaute Barbatruc
Bonjour @Irina1009

Je te propose ceci qui correspond à ta demande originale ! o_O
Tu as modifié ta demande originale ..... et c'est pas bien .... 🤣

1701269614306.png


Comme j'ai fait un fichier sur ta 1ere demande je le poste

1701270354012.png


Merci de ton retour
 

Pièces jointes

  • Modif jour dans calendrier V1.xlsm
    85.8 KB · Affichages: 2

Irina1009

XLDnaute Nouveau
Bonjour @Irina1009

Je te propose ceci qui correspond à ta demande originale ! o_O
Tu as modifié ta demande originale ..... et c'est pas bien .... 🤣

Regarde la pièce jointe 1184991

Comme j'ai fait un fichier sur ta 1ere demande je le poste

Regarde la pièce jointe 1184993

Merci de ton retour
Merci Phil69970 !
Je vais essayer de comprendre le code Vba que tu m'as gentiment fourni histoire de ne pas copier sans savoir à quoi cela correspond.

Ensuite oui j'avoue j'ai modifié mon post initial ...;)
Il faudrait que lorsque je remplis les heures dans les colonnes de G à J que celles-ci s'effacent lorsqu'on change de mois et qu'elles reviennent si on revient en arrière.

Merci d'avance.
 

Irina1009

XLDnaute Nouveau
Bonjour,

Je voudrais savoir si on peut ou même si on DOIT mettre les formules situées Dans les colonnes K - L -M dans le code VBA ?
Car elles disparaissent quand on change de mois.

Les formules sont les suivantes :
Colonne K
Nb heures =[@[M. Fin]]-[@[M. Début]]+[@[AM. Fin]]-[@[AM. Début]]
Colonne L
Heures Contrat =SI(JOURSEM([@Date])=1; "00:00"; SI(JOURSEM([@Date])<=5; "07:30"; SI(JOURSEM([@Date])=6; "07:00"; "00:00")))
Colonne M
Heures. Supp =SI(ET(NON(ESTVIDE([@[M. Début]])); NON(ESTVIDE([@[M. Fin]])); NON(ESTVIDE([@[AM. Début]])); NON(ESTVIDE([@[AM. Fin]])); [@[Nb heures]]<>[@[Heures Norm]]; [@[Nb heures]] - [@[Heures Norm]]<>0); [@[Nb heures]] - [@[Heures Norm]]; "")

Est-ce qu'on pourrais écrire un truc du genre :

With ThisWorkbook.Worksheets("Pointage")
.Range("K6").Formula = "=[@[M. Fin]]-[@[M. Début]]+[@[AM. Fin]]-[@[AM. Début]]
End With

Et ceci pour chaque formule...

Désolée si je dis des inepties mais je débute et essaye de comprendre.

Merci d'avance.
 

Pièces jointes

  • Pointage.xlsm
    92.3 KB · Affichages: 2
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour
J'avais bien pensé que ces colonnes allaient comporter des formules et ne devaient donc pas être sauvegardées.
J'avais mis en attendant des formules qui me semblaient appropriées, et je m'étais aussi occupé de la feuille synthèse qui a disparu ?
Je le joins dans cet état, puis vérifie si j'avais les bonnes formules.
 

Pièces jointes

  • DatesIrina1009.xlsm
    55.6 KB · Affichages: 2

Irina1009

XLDnaute Nouveau
Cela commence à être super bien. J'ai mis mes formules car il faut qu'en fonction du jour en colonne C, Le nombre d'heure dans la colonne L change. Du lundi au jeudi c'est 7,30 / jour et le vendredi 7H. Du coup les Heures supplémentaires également si il y a lieu.
Cependant en mettant mes formules j'obtiens une erreur dans le code pour la Synthèse annuelle.

Merci.

Captur.JPG
 

Pièces jointes

  • DatesIrina1009.xlsm
    69.2 KB · Affichages: 0

Dranreb

XLDnaute Barbatruc
Comprendrez-vous mes commentaires si vous ne comprenez pas le code ?
Mettez des commentaire sur les instructions à commenter tel que vous croyez les comprendre, et je corrigerai …
Je vous propose juste ça : comme base de départ importante :
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: LS = 1
   ReDim TRés(1 To UBound(TSvg, 1) \ 28, 1 To 4)
   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
   End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 182
dernier inscrit
moutassim.amine