[VBA]Gestion des heures

Signaler
Messages postés
10
Date d'inscription
jeudi 15 janvier 2009
Statut
Membre
Dernière intervention
6 juin 2012
-
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
-
Bjr à tous, 1ère question pour moi...
Je suis débutant en VB sous excel 2010.
Je dois créer un fichier de gestion des heures pour une équipe de 6 personnes avec plein de cas particuliers comme toujours et ce qui complique le tout.

J'ai réaliser un USF pour introduire les données:
ANNEE
Nombre d'heures par Jours à 100% (variable en fonction des personnes)
NOM
PRENOM
Solde Congés Payés de l'année précédente = SOLDCP
Solde d'heures supplémentaire de l'année précédente = SOLDH

Dans l'année, il y a des "jours fériés NON Officiel" (=JFNOFF) qui doivent être déduit soit des Heures soit des congés payés.

La personne à le choix de déduire les JFNOFF des heures ou des congés payés avec une case d'option puis elle valide.
Le problème c'est quand SOLDH < JFNOFF et que la personne choisi de retirer en heures alors qu'elle n'en a pas assez, je dois retirer le maximum d'heures possible par tranche de 1/2 jour et le reste en congés payés!

mon début de code est le suivant:

Option Explicit

Private Sub UserForm_Initialize()
If Range("SOLDH") = 0 Then
OptionButton1.Visible = False
OptionButton2.Left = 80
OptionButton2.Value = True
OptionButton2.Locked = True
Label1.Caption = _
"Vous avez droit à " & Range("NEWCP").Value & " jours de CP pour l'année." _
& Chr(10) & Chr(10) & " Comme il y a " & Range("JF_NOFF").Value _
& " jours fériés non officiel qui tombent en semaine, vous devez les retirer de vos congés en compensation."
Range("HDEDUC").Value = 0
Range("Type_Deduc") = "Retrait en CP"
Range("CUMULCP").Value = Range("NEWCP").Value - Range("JF_NOFF").Value + Range("SOLDCP").Value
Range("CUMULH").Value = 0

Else
If Range("SOLDH") >= Range("JF_NOFF") * Range("NBHJ") Then
OptionButton1.Visible = True
OptionButton2.Left = 162
OptionButton1.Value = True
Label1.Caption = _
"Vous avez droit à " & Range("NEWCP").Value _
& " jours de CP pour l'année." & Chr(10) & Chr(10) & "Il y a " & Range("JF_NOFF").Value _
& " jours fériés non officiel qui tombent en semaine et qui sont retirer de vos congés ou de vos heures." _
& Chr(10) & Chr(10) & Chr(10) & " A vous de choisir !"

Else
OptionButton1.Visible = True
OptionButton2.Left = 162
OptionButton1.Value = True
Label1.Caption = _
"Vous avez droit à " & Range("NEWCP").Value & " jours de CP pour l'année." _
& Chr(10) & "Il y a " & Range("JF_NOFF").Value _
& " jours fériés non officiel qui tombent en semaine et qui sont retirer de vos congés ou de vos heures." _
& Chr(10) & "Comme vous n'avez pas assez d'heures pour couvrir le nombre de jours vous pouvez retirer une partie de vos heures et le complément en congés, ou retirer uniquement de vos congés en gardant vos heures."
End If
End If

End Sub

Private Sub CommandButtonValider_Click()

If Range("SOLDH") = 0 Then
UserForm2.Hide
Unload UserForm2

Else

If Range("SOLDH") >Range("JF_NOFF") * Range("NBHJ") And OptionButton1.Value True Then
Range("Type_Deduc") = "Retrait en Heures"

Range("HDEDUC").Value = Range("JF_NOFF") * Range("NBHJ")
Range("CUMULCP").Value = Range("NEWCP").Value + Range("SOLDCP").Value
Range("CUMULH").Value = Range("SOLDH") - (Range("JF_NOFF") * Range("NBHJ"))
Range("CUMULH").NumberFormat = "[h]:mm:ss"
Range("HDEDUC").NumberFormat = "[h]:mm:ss"
Else

If Range("SOLDH") >Range("JF_NOFF") * Range("NBHJ") And OptionButton2.Value True Then
Range("Type_Deduc") = "Retrait en CP"
Range("HDEDUC").Value = 0
Range("CUMULCP").Value = Range("NEWCP").Value - Range("JF_NOFF").Value + Range("SOLDCP").Value
Range("CUMULH").Value = Range("SOLDH")
Range("CUMULH").NumberFormat = "[h]:mm:ss"
Else

If Range("SOLDH") < Range("JF_NOFF") * Range("NBHJ") And OptionButton1.Value = True Then

Range("Type_Deduc") = "Retrait en Heures + CP"

Range("HDEDUC").Value = " a faire"
Range("CUMULCP").Value = " a faire"
Range("CUMULH").Value = " a faire"


Else

If Range("SOLDH") < Range("JF_NOFF") * Range("NBHJ") And OptionButton2.Value = True Then
Range("Type_Deduc") = "Retrait en CP"
Range("HDEDUC").Value = 0
Range("CUMULCP").Value = Range("NEWCP").Value - Range("JF_NOFF").Value + Range("SOLDCP").Value
Range("CUMULH").Value = Range("SOLDH")
Range("CUMULH").NumberFormat = "[h]:mm:ss"

End If
End If
End If
End If
End If


UserForm2.Hide
Unload UserForm2

End Sub



Comment faire la suite?


Merci de votre aide

1 réponse

Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
re,

Autre info, il existe dans l’éditeur de cette page une liste de nom de langage de programmation qui permet d'avoir une coloration syntaxique du code posté. L'icone ce trouve à droite du menu et plus précisément à droite du petit bonhomme avec une bulle. Pour le VBA selectionne le code et choisi "VB".
D'autre part la coloration syntaxique à l'avantage d'obliger l'editeur à conserver l'indentation du code posté.

Une fois utilisé cela donne ce qui suit et c'est beaucoup plus facile pour les gens qui voudront t'aider.

Option Explicit

Private Sub UserForm_Initialize()
If Range("SOLDH") = 0 Then
OptionButton1.Visible = False
OptionButton2.Left = 80
OptionButton2.Value = True
OptionButton2.Locked = True
Label1.Caption = _
"Vous avez droit à " & Range("NEWCP").Value & " jours de CP pour l'année." _
& Chr(10) & Chr(10) & " Comme il y a " & Range("JF_NOFF").Value _
& " jours fériés non officiel qui tombent en semaine, vous devez les retirer de vos congés en compensation."
Range("HDEDUC").Value = 0
Range("Type_Deduc") = "Retrait en CP"
Range("CUMULCP").Value = Range("NEWCP").Value - Range("JF_NOFF").Value + Range("SOLDCP").Value
Range("CUMULH").Value = 0

Else
If Range("SOLDH") >= Range("JF_NOFF") * Range("NBHJ") Then
OptionButton1.Visible = True
OptionButton2.Left = 162
OptionButton1.Value = True
Label1.Caption = _
"Vous avez droit à " & Range("NEWCP").Value _
& " jours de CP pour l'année." & Chr(10) & Chr(10) & "Il y a " & Range("JF_NOFF").Value _
& " jours fériés non officiel qui tombent en semaine et qui sont retirer de vos congés ou de vos heures." _
& Chr(10) & Chr(10) & Chr(10) & " A vous de choisir !"

Else
OptionButton1.Visible = True
OptionButton2.Left = 162
OptionButton1.Value = True
Label1.Caption = _
"Vous avez droit à " & Range("NEWCP").Value & " jours de CP pour l'année." _
& Chr(10) & "Il y a " & Range("JF_NOFF").Value _
& " jours fériés non officiel qui tombent en semaine et qui sont retirer de vos congés ou de vos heures." _
& Chr(10) & "Comme vous n'avez pas assez d'heures pour couvrir le nombre de jours vous pouvez retirer une partie de vos heures et le complément en congés, ou retirer uniquement de vos congés en gardant vos heures."
End If
End If

End Sub

Private Sub CommandButtonValider_Click()

If Range("SOLDH") = 0 Then
UserForm2.Hide
Unload UserForm2

Else

If Range("SOLDH") >Range("JF_NOFF") * Range("NBHJ") And OptionButton1.Value True Then
Range("Type_Deduc") = "Retrait en Heures"

Range("HDEDUC").Value = Range("JF_NOFF") * Range("NBHJ")
Range("CUMULCP").Value = Range("NEWCP").Value + Range("SOLDCP").Value
Range("CUMULH").Value = Range("SOLDH") - (Range("JF_NOFF") * Range("NBHJ"))
Range("CUMULH").NumberFormat = "[h]:mm:ss"
Range("HDEDUC").NumberFormat = "[h]:mm:ss"
Else

If Range("SOLDH") >Range("JF_NOFF") * Range("NBHJ") And OptionButton2.Value True Then
Range("Type_Deduc") = "Retrait en CP"
Range("HDEDUC").Value = 0
Range("CUMULCP").Value = Range("NEWCP").Value - Range("JF_NOFF").Value + Range("SOLDCP").Value
Range("CUMULH").Value = Range("SOLDH")
Range("CUMULH").NumberFormat = "[h]:mm:ss"
Else

If Range("SOLDH") < Range("JF_NOFF") * Range("NBHJ") And OptionButton1.Value = True Then

Range("Type_Deduc") = "Retrait en Heures + CP"

Range("HDEDUC").Value = " a faire"
Range("CUMULCP").Value = " a faire"
Range("CUMULH").Value = " a faire"


Else

If Range("SOLDH") < Range("JF_NOFF") * Range("NBHJ") And OptionButton2.Value = True Then
Range("Type_Deduc") = "Retrait en CP"
Range("HDEDUC").Value = 0
Range("CUMULCP").Value = Range("NEWCP").Value - Range("JF_NOFF").Value + Range("SOLDCP").Value
Range("CUMULH").Value = Range("SOLDH")
Range("CUMULH").NumberFormat = "[h]:mm:ss"

End If
End If
End If
End If
End If


UserForm2.Hide
Unload UserForm2

End Sub 


Par contre pour l'indentation je ne l'ai pas refaite.

A+