XL 2019 Boucle / Userform / Planning d'absences

Barbe_Rousse

XLDnaute Nouveau
Bonjour à tous,

Je ne maîtrise pas vraiment VBA et voilà, je crée un planning d’absences et j’aurai bien besoin d’aide… Je ne touche pas ma bille en boucle et je pense que c’est ce dont j’ai besoin ici…

En fait, mon objectif est de renseigner, via le userform qui se trouve sur le fichier que je vous joins, des absences de différents types. Je m’explique :

En fonction des données remplies dans le formulaire à savoir :

  • Un code (matricule du salarié) : ex le 400
  • Un début : ex le 3
  • Une fin : ex le 8
  • Une raison : ex : Repos
J’ai quatre types d’absence à ce jour (j’en ajouterai peut-être d’autres) mais l’objectif est, via le formulaire, de renseigner une valeur égale à 1 si c’est un Repos, 2 si c’est un congé payé, 3 pour un arrêt maladie, 4 pour un accident de travail etc… Et ce dans chaque case concernée et associée au matricule concerné puisque par la suite, j’applique une MFC pour avoir un indicateur visuel sur le type de congé (un exemple est sur le fichier si ça n’est pas assez clair ^^’)

Pour l’exemple ci-dessus, il serait question d’un repos entre le 3 et le 8 pour le salarié ayant le matricule 400.

Tout en sachant que j’ai une fonction qui ajoute/supprimer des lignes matricules. J’utilise aussi un List index et un range avec sélection de la ligne active si cela peut aider. En sachant enfin que plusieurs absences peuvent être inscrites sur le fichier.

Hâte d’avoir des retours parce que je sèche… En tout cas je remercie par avance les personnes qui s'intéresseront à ma situation.

Bonne après-midi à vous !

Ps : Je suis peu disponible ce week-end donc je reviendrai checker les éventuelles réponses lundi 😊
 

Pièces jointes

  • TEST_BOUCLE.xlsm
    26 KB · Affichages: 20

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Sans boucle. Dans le fichier joint j'ai juste nommé votre plage des motifs et codes absence 'Codes_Absences'.
Dans le code du bouton de validation, les valeurs des textbox sont testées éventuellement permutée si Du est spérieur à Au, le code d'absence retrouvé en fonction du motif (CP, Repos etc.) et enfin ce code est inscrit dans les cellules sans boucle.

VB:
Private Sub CommandButton1_Click()
    Dim Du As Integer, Au As Integer
    Dim V As Variant
    '
    ' Si pas de choix en combobox sortir
    If ComboBox1.ListIndex = -1 Then Exit Sub
    '
    ' si textbox 1 ou textbox 2 ne sont pas numérique sortir
    If Not IsNumeric(TextBox1.Text) Then Exit Sub ' Peut-être prévenir l'utilisateur avant ?
    If Not IsNumeric(TextBox2.Text) Then Exit Sub ' Idem 
    '
    ' si rien dans textbox3 sortir
    If  trim(TextBox3.Text )= "" Then Exit Sub ' Idem

   'Conversion en entier des valeurs des textbox
    Du = CInt(TextBox1.Text)
    Au = CInt(TextBox2.Text)
    '
    ' si Au est inférieur à Du, intervertir les valeur
    If Au < Du Then
        V = Au
        Au = Du
        Du = V
    End If
    '
    ' Travailler sur la feuille BDD
    With Sheets("BDD").Range("Codes_Absences")
        '
        ' position du text de TextBox3 dans la colonne 1 de la plage Codes_Absences
        V = Application.Match(TextBox3.Text, .Columns(1), 0)
        '
        ' Si non trouvé avertir et sortir
        If IsError(V) Then
            MsgBox "Motif d' absence non trouvé!", vbExclamation, "Saisie absences"
            Exit Sub
        End If
        '
        ' Sinon récupérer le code dans la deuxième colonne, même ligne
        V = .Cells(V, 2)
    End With
    '
    ' Inscrire les données dans la ligne idoine
    With Sheets("Planning_ABS").Range("C4").CurrentRegion
        If Du = 0 Then Du = 1
        If Au = 0 Then Au = Application.Max(.Rows(1))
        .Cells(ComboBox1.ListIndex + 1, Du + 1).Resize(, Au - Du + 1) = V
    End With
End Sub

Cordialement
 

Pièces jointes

  • TEST_BOUCLE.xlsm
    34.4 KB · Affichages: 5

Barbe_Rousse

XLDnaute Nouveau
Bonjour

Avec Pic Date de Pierre Jean
Bonjour JM27,

Tout d'abord, merci pour ton aide.

Avec Pic Date, j'imagine qu'il serait donc possible de lisser ce tableau sur l'année (incluant les années bissextiles pour février). Mais si c'est le cas, je ne sais pas comment il faudrait faire :/

Je pensais différencier tous les mois mais finalement le problèmes c'est que si j'ai une absence du 27 mars au 4 avril, je dois renseigner 2 absences…

Concernant le Pic Date et les jours fériés, je découvre totalement ! Merci encore pour ton aide :D

Cdlt,
 

Discussions similaires

Réponses
4
Affichages
283

Statistiques des forums

Discussions
315 146
Messages
2 116 756
Membres
112 851
dernier inscrit
nicolas418568488