Calendrier : Choisir et afficher les jours non travaillés

leakim

XLDnaute Occasionnel
Bonjour,
Je viens vers vous pour une demande pour du VBA. Je commence à comprendre mais pas capable d'écrire, j'avance dans la formation, mais pas à ce point...
Je joins un fichier qui avance...merci Banzai et CHALET53... auquel j'aimerai ajouter une option afin que les personnes renseignent les jours non travaillés.
Je parviens à le faire avec des formules et des cases à cocher, je suis content, mais dès que je touche à une case la formule est écrasée et la MFC se barre en courant... C'est pourquoi le VBA

Merci à qui voudra bien se pencher sur mon projet.

Cordialement,
Leakim
 

Pièces jointes

  • affiche Jours non travaillés (3) avec les semaines à cheval.xlsm
    72.8 KB · Affichages: 61

eriiic

XLDnaute Barbatruc
Re : Calendrier : Choisir et afficher les jours non travaillés

Bonjour,

J'aimerai obtenir le même résultat sans la mise en forme que je fais avec les MFC
Sans les formules tu veux dire je suppose ?
Si tu enlèves les MFC ça va être le bazar à l'affichage. Si une modif est faite, les couleurs ne suivront plus...
Code:
Private Sub Cmb_valide_Click()
    Dim c As Range, j As Long
    If CheckBox1.Value = False And CheckBox2.Value = False And CheckBox3.Value = False And CheckBox4.Value = False And CheckBox5.Value = False Then
        MsgBox "Merci de choisir un ou des jour(s)"
    Else
        Application.ScreenUpdating = False
        For Each c In [CHOIX]
            If c.Offset(, -1) <> "" Then
                j = Weekday(c.Offset(, -1), vbMonday)
                If j < 6 Then
                    c = IIf(UserForm2.Controls("CheckBox" & j), "JNT", "")
                End If
            End If
        Next c
        Application.ScreenUpdating = True
        Unload UserForm2
    End If
End Sub

eric
 

leakim

XLDnaute Occasionnel
Re : Calendrier : Choisir et afficher les jours non travaillés

Bonjour Eric,
Oui je ne veux plus des formules et un affichage avec les MFC.
J'ai copier coller ton code et NICKEL !!!

Milles Merci.
Le résultat est top.

Leakim
 

leakim

XLDnaute Occasionnel
Re : Calendrier : Choisir et afficher les jours non travaillés

Bonjour, avant d'aller au boulot !!!

Je souhaite ajouter une confirmation, car lorsque je choisis un jour non travaillé toutes les cellules sont remises à blanc.
Donc j'ai fait un essai.
L'idée c'est que si la personne sélectionne "Non" alors le choix dans les checkbox soient remis à zéro et qu'il n'y est pas de changement.

Private Sub Cmb_valide_Click()
Dim c As Range, j As Long
If CheckBox1.Value = False And CheckBox2.Value = False And CheckBox3.Value = False And CheckBox4.Value = False And CheckBox5.Value = False Then
MsgBox "Merci de choisir un ou des jour(s)"
Else
Application.ScreenUpdating = False
For Each c In [CHOIX]
If c.Offset(, -1) <> "" Then
j = Weekday(c.Offset(, -1), vbMonday)
If j < 6 Then
c = IIf(UserForm2.Controls("CheckBox" & j), "JNT", "")
End If
End If
Next c
MsgBox "etes vous sûr?", vbYesNo
If vbYesNo = "no" Then ou If vbYesNo = false Then
CheckBox1.Value = False
CheckBox2.Value = False
CheckBox3.Value = False
CheckBox4.Value = False
CheckBox5.Value = False
End If

Application.ScreenUpdating = True
Unload UserForm2
End If
End Sub

Merci de me redire,

Cordialement,
Leakim
 

eriiic

XLDnaute Barbatruc
Re : Calendrier : Choisir et afficher les jours non travaillés

Bonjour,

Je ne comprend pas trop...
Déjà il y a le bouton Annule, ensuite si la personne voit qu'elle s'est trompée elle peut y retourner pour cocher les bonnes valeurs. Elle se trompera une ou deux fois, après elle prendra le pli.

De plus, là où tu l'as ajouté, le travail est déjà fait (?)
Quoi qu'il en soit c'est plutôt comme ça qu'il faut l'écrire :
Code:
If MsgBox("etes vous sûr?", vbYesNo) = vbNo Then
    CheckBox1.Value = False
    CheckBox2.Value = False
    CheckBox3.Value = False
    CheckBox4.Value = False
    CheckBox5.Value = False
End If
Ou plutôt :
Code:
If MsgBox("etes vous sûr?", vbYesNo) = vbYes Then
    ' faire le traitement
    ....
Endif

Mais à mon avis c'est une confirmation de confirmation totalement inutile ou alors je n'ai pas bien compris le pb.

eric
 

leakim

XLDnaute Occasionnel
Re : Calendrier : Choisir et afficher les jours non travaillés

Merci de ta réponse, mais cela ne fait pas ce que je voudrais.
Lorsque je commence à renseigner le calendrier avec mes jours de congés, si je manipule à nouveau les JNT... l'ensemble de la plage [CHOIX] et remise à blanc...
Les congés déjà posés ont disparu.
Je cherche un garde fou !!!
C'est pour cela que je me disais qu'une confirmation ne serait pas de trop. Le cas échéant, lorsque je choisis "non" le changement s’opère qu'en même.
Ou il faudrait un code pour limiter le nombre de fois que je peux appeler cette macro ? ( peut-être l'objet d'un nouveau post ?)

Merci de ton accompagnement

Leakim
 

eriiic

XLDnaute Barbatruc
Re : Calendrier : Choisir et afficher les jours non travaillés

Et bien teste la cellule et ne la modifie que si elle est vide :
If c.Offset(, -1) <> "" and c = "" Then

Mais Les congés déjà posés ont disparu : poser un congé un jour non travaillé est normal ?

eric
 

leakim

XLDnaute Occasionnel
Re : Calendrier : Choisir et afficher les jours non travaillés

Re et merci une fois encore, c'est presque cela.
Au vue de cette modif qui me va super je cherche à réinitialiser la table choix des JNT déjà posé sans que les autres congés soient concernés.
J'ai repris ton code et j'en ai fait ça... Tel quel il remet à blanc l'ensemble sans distinction de contenu.
Code:
Private Sub CommandButton1_Click()

'réinitialise
        Application.Goto Reference:="CHOIX"
        For Each c In [choix]
            If c = "JNT" Then
            Selection.ClearContents
            End If
        Next c
        Unload UserForm2
End Sub

Encore un coup de pouce !!!

Cordialement,
Leakim
 

leakim

XLDnaute Occasionnel
Re : Calendrier : Choisir et afficher les jours non travaillés

Mais Les congés déjà posés ont disparu : poser un congé un jour non travaillé est normal ?

Oui tu as raison hormis les congés annuels qui se posent du lundi au samedi les autres ne doivent pas ce poser sur des jours où il y a déjà JNT... Je t'avoue que la perspective de pouvoir cochez une semaine de rtt qui va du lundi au vendredi sans modifier le JNT du mercredi ...

Si tu vois comment faire !?!

Merci de ton aide et de ton intérêt à ce post.

Cordialement,
Leakim
 

eriiic

XLDnaute Barbatruc
Re : Calendrier : Choisir et afficher les jours non travaillés

Re,

J'ai repris ton code et j'en ai fait ça... Tel quel il remet à blanc l'ensemble sans distinction de contenu.
Ce n'est pas du tout ce que j'avais écrit. Tu modifies tout et après tu dis ça marche plus... Ben remet ce qui fonctionnait...
Et si c'est une nouvelle demande soit plus clair et plus complet dans les explications. Et dépose un fichier exemple avec les manip à effectuer et ce que ça doit donner, dans le détail.
eric
 

leakim

XLDnaute Occasionnel
Re : Calendrier : Choisir et afficher les jours non travaillés

Bonsoir, je sent bien que cela n'est pas construit...:confused:

Je repose le contexte est le projet.

Le contexte:
Le calendrier existe avec des listes déroulantes jour par jour. Au regard du temps de validation il a été décidé de ne pas faire apparaitre les jours non travaillés.
Ce qui donne sur le récap des "trous" dans les semaines ex semaine 36
Diapositive.JPG

Le projet:
Simplifier le remplissage.
L'idée est de faire choisir les jours non travaillés en premier. Lorsque ces jours sont définis on peux poser les congés.
Un congé annuel posé un lundi avec une option "une semaine" va donc jusqu'au samedi inclut. Ça sa marche, le jours non travaillé est effacé c'est normal.
Si le lundi je pose une semaine de RTT et que j'ai mon mercredi de jour non travaillé, il faudrait que la valeur RTT ce report le mardi, jeudi et vendredi sans incidence pour le mercredi.

En espérant etre clair,
Je joins ma dernier mouture,
Cordialement,
Leakim
 

Pièces jointes

  • Gestion temps 2014 - Copie.xlsm
    54.8 KB · Affichages: 60
Dernière édition:

eriiic

XLDnaute Barbatruc
Re : Calendrier : Choisir et afficher les jours non travaillés

J'ai changé un peu l'ergonomie que je trouvais limitée.
Je ne sais pas si va va t'aller, j'ai laissé l'ancien code en commentaire.

Maintenant tu sélectionnes la plage où tu veux mettre les congés et fais un clic-droit dessus.
Tu peux sélectionner ce que tu veux : 1 jour, 3 semaines 1/2 ou sur plusieurs mois.
Tu peux faire une sélection multiple de plage en gardant Ctrl appuyé entre chaque sélection (sauf sur la 1ère)
Les anciens congés sont remplacés, on peut modifier pour qu'ils soient préservés comme les JNT.
Les colonnes dates ne sont jamais touchées même si dans sélection.
Le nombre de jours posés valides est annoncé à la fin.

Pour les suppressions si aucune sélection n'est faite dans la combobox, tous les type de congé sont supprimés (sauf JNT).
Si une sélection est faite (RTT par exemple), seul ce type de congé est supprimé sur la plage sélectionnée.

Je ne sais pas ce que tu bricolais avec Indice, je n'ai pas remis. A rajouter éventuellement.
J'ai dû déclarer Public plageCongé As Range dans le Module3, à conserver.
Regarde si ça te va ou si tu préfères revenir à l'ancien système.

eric
 

Pièces jointes

  • classeur6.xlsm
    59.5 KB · Affichages: 61
  • classeur6.xlsm
    59.5 KB · Affichages: 70
  • classeur6.xlsm
    59.5 KB · Affichages: 82

leakim

XLDnaute Occasionnel
Re : Calendrier : Choisir et afficher les jours non travaillés

Bonjour, c'est très astucieux !!!
C'est plutôt pas mal, hormis le fait que pour le congé "CP" et "CT" si je choisis une semaine le JNT est conservé... Pour tout les autres types de congés c'est ce qu'il faut. Pour le CP ET CT la pose ce fait du lundi au samedi quelque soit les jnt dans la semaine.

Si c'est possible, ce serait nickel.

Merci encore pour cette proposition.

Cordialement,
Leakim
 

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 151
Membres
103 133
dernier inscrit
mtq