Calendrier: Incrémenter congé d'une semaine sur deux mois combobox

leakim

XLDnaute Occasionnel
Bonjour à vous,
Je cherche à incrémenter une valeur de congé sur une semaine via une Combo-box.que j'ai repris d'un post sur ce forum.
Dans le fichier joint, sur le second onglet il y a le résultat attendu, espéré...:rolleyes:

On sélectionne le jour et on choisi via une combo-box le type de congé puis on valide, jour après jour.
Je fais appelle à vous car j'aimerai ajouter une option "une semaine". Si la cellule de gauche est égale à lundi et que l'on coché la case "une semaine", le congé choisit s'applique jusqu'au samedi si c'est CP et jusqu'au vendredi si autre type de congés. Pour la suppression, si la cellule de gauche est égale à lundi et que l'on coché la case "une semaine", la suppression s'applique jusqu'au samedi.
J'ai déjà une solution pour l'affichage d'une semaine...Merci à Banzai... , mais il manque une astuce pour les semaines "à cheval" sur deux mois.

Merci d'avance

Cordialement,
Leakim
 

Pièces jointes

  • leakim Demande congés V001 Banzai.xlsm
    201.2 KB · Affichages: 60

CHALET53

XLDnaute Barbatruc
Re : Calendrier: Incrémenter congé d'une semaine sur deux mois combobox

Bonjour,

J'ai modifié la procédure CmbOk_click comme suit :
Je ne pense pas que cela résolve complètement ton problème. Toutefois, cela peut t'inspirer une solution.
Tu peux adapter la procédure de suppression de la même façon

Private Sub CmbOK_Click()
Dim Indice As Byte, Jour As Byte
Stop
If ComboBox1.Value = "" Then
MsgBox "Veuillez faire une saisie"
Else
ActiveCell.Value = ComboBox1
col = ActiveCell.Column
ligne = ActiveCell.Row

If Me.CheckBox1 = True And Weekday(ActiveCell.Offset(0, -1), vbMonday) = 1 Then
If Me.ComboBox1 = "CP" Then Jour = 6 Else Jour = 5

For i = 1 To Jour
If Cells(ligne, col - 1) <> "" Then
Cells(ligne, col) = Me.ComboBox1
ligne = ligne + 1
GoTo suite
End If
If Cells(ligne, col - 1) = "" Then
ligne = 17
col = col + 4
Cells(ligne, col) = Me.ComboBox1
ligne = ligne + 1
End If
suite:
Next i

End If
Do
ActiveCell.Offset(Indice) = Me.ComboBox1
Indice = Indice + 1
a = Weekday(ActiveCell.Offset(Indice, -1), vbMonday)
Loop Until Weekday(ActiveCell.Offset(Indice, -1), vbMonday) > Jour Or Not IsDate(ActiveCell.Offset(Indice, -1))

Unload UserForm1
End If
End Sub
 

leakim

XLDnaute Occasionnel
Re : Calendrier: Incrémenter congé d'une semaine sur deux mois combobox

Bonjour et merci pour cette réponse,
J'ai importé ce code dans mon fichier et cela à l'air de coller !!!
Je modifie pour "supprimer" et reviens vers vous.

Cordialement,
Leakim
 

leakim

XLDnaute Occasionnel
Re : Calendrier: Incrémenter congé d'une semaine sur deux mois combobox

Bonjour, j'ai fait le code suivant pour "supprimer" Mais cela ne colle pas

Private Sub CmbSupprimer_Click()
Dim Indice As Byte

ActiveCell.ClearContents
col = ActiveCell.Column
ligne = ActiveCell.Row

If Me.CheckBox1 = True And Weekday(ActiveCell.Offset(0, -1), vbMonday) = 1 Then
For i = 1 To Jour
If Cells(ligne, col - 1) <> "" Then
Cells(ligne, col) = Me.ComboBox1
ligne = ligne + 1
GoTo suite
End If
If Cells(ligne, col - 1) = "" Then
ligne = 17
col = col + 4
Cells(ligne, col) = Me.ComboBox1
ligne = ligne + 1
End If
suite
Next i
End If

Do
ActiveCell.Offset(Indice) = Me.ComboBox1
Indice = Indice + 1
Loop Until Weekday(ActiveCell.Offset(Indice, -1), vbMonday) > 6 Or Not IsDate(ActiveCell.Offset(Indice, -1))
End If
Unload UserForm1

End Sub

Merci de m'accompagner dans la correction

Cordialement,
Leakim
 

CHALET53

XLDnaute Barbatruc
Re : Calendrier: Incrémenter congé d'une semaine sur deux mois combobox

A voir

Private Sub CmbSupprimer_Click()
Dim Indice As Byte

ActiveCell.ClearContents
col = ActiveCell.Column
ligne = ActiveCell.Row
If Me.CheckBox1 = True And Weekday(ActiveCell.Offset(0, -1), vbMonday) = 1 Then
For i = 1 To 6
If Cells(ligne, col - 1) <> "" Then
Cells(ligne, col) = ""
ligne = ligne + 1
GoTo suite
End If
If Cells(ligne, col - 1) = "" Then
ligne = 17
col = col + 4
Cells(ligne, col) = ""
ligne = ligne + 1
End If
suite:
Next i
End If
Do
ActiveCell.Offset(Indice) = Me.ComboBox1
Indice = Indice + 1
Loop Until Weekday(ActiveCell.Offset(Indice, -1), vbMonday) > 6 Or Not IsDate(ActiveCell.Offset(Indice, -1))

Unload UserForm1
End Sub
 

leakim

XLDnaute Occasionnel
Re : Calendrier: Incrémenter congé d'une semaine sur deux mois combobox

Merci beaucoup c'est nickel, un peu lent mais cela fonctionne.

Je réfléchis à un autre post sur l'affichage des jours non travaillés, que l'on choisi via une combo-box et le ou les jour(s) choisi(s)
l'abréviation "JNT" s'affiche.

Merci pour cette étape, je reviens vers vous prochainement.

Cordialement,
Leakim
 

Discussions similaires

Réponses
4
Affichages
763

Statistiques des forums

Discussions
312 070
Messages
2 085 043
Membres
102 766
dernier inscrit
Awiix