cs_schnouck
Messages postés10Date d'inscriptionjeudi 15 janvier 2009StatutMembreDernière intervention 6 juin 2012
-
29 mai 2012 à 13:37
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 2013
-
29 mai 2012 à 17:09
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"
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201313 29 mai 2012 à 17:09
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.