Gestion du personnel, absence et temps de travail.

39
27334

Dans cette nouvelle série de vidéo nous allons voir comment crée un gestionnaire du personnel afin de traquer les jours d’absence mais aussi les heures prestées.


1. Creation du tableau employée. 

placer les information des employées dans un tableau puis sélectionner le champs des nom et nommer la NOM. ceci va nous servir par la suite dans la validation des données.

2. Création de la base de donnée.

accrocher vous bien car dans cette partie nous allons calculer les temps de travaille et surtout nous allons utiliser énormément la fonction SI.

nous allons :

– calcule le temps de travailler.
– Nous allons calculer si il y a des heures supplémentaire ou négatif
– Nous allons aussi vérifier s’il s’agit d’un jours férié ou d’un weekend afin de ne pas décompter plus tard nos vacances et récup quand il s’agit d’un de ces jours

créant notre base de donnée sur une nouvelle feuille. et nous allons introduire les titre suivant.

Id
Date
Nom
Type
Temps Start
Temps Stop
Pause Start
Pause Stop
Résultat
Solde
Négatif
Weekend
Fériés
Mois
Année

ID

pour l’id nous voulons un chiffre unique et celui-ci nous le cherchons avec la fonction suivante

=LIGNE(B4)-3.

Les Nom

dans le nom nous allons placer une validation de donnée en cherchant les nom qui ce trouve dans le tableau Emply. grâce au nom de plage que nous avons nommer « NOM ».

le Résultat première partie

dans résultat nous allons afficher dans un premier temps le code suivant

=SI(E4<> »t »;E4;H4-F4)+(G4-I4))

ici nous allons d’abord contrôler si dans la cellule E4 il n’est pas afficher la Lettre T. si elle n’est pas présente nous afficher ce qui ce trouve dans la cellule E4.
par contre s’il y a la lettre T alors nous allons calculer le temps de début de pause – le temps de début, cela nous allons l’additionner à la fin du shift – la fin de pause.

si tout fonctionne le temps de travaille devrais s’afficher.

controler s’il y a un temps de pause. 

ici nous allons modifier un peut le résultat en ajoutent un contrôle s’il y a un temps de pause ou pas.

=SI(E4<> »t »;E4;SI(OU(H4= » »;I4= » »);G4-F4;(H4-F4)+(G4-I4)))

La solde des heures supérieure ou inférieure

pour le solde nous voulons voir combien de temps supérieure ou inférieure est prester sur une duré de 8H de travaille. mais avant de commencer nous allons changer la mise en forme de cette cellule –> spéciale –> + [h]:mm

et nous affichons la formule suivante.

=SI(E4<> »t »; » »;SI(J4>(8/24);J4-(8/24);TEXTE((8/24)-J4; »- [h]:mm »)))

alors is la même chose si dans la cellule E4 il n’est pas indiquer la lettre T alors nous affichons rien.
par contre s’il y a la lettre T alors on vérifie que si le résultat qui ce trouve en J4 est supérieure à 8H. alors on fais J4-8H; si ce n’est pas le cas on fais 8H-J4 mais ici nous allons le placer dans une fonction TEXTE afin de pouvoir afficher le résultat avec le signe négatif devant la solde.

Texte –> le calcule puis le format ici c’est – [H]:mm

afficher la solde négatif

alors plus tard nous avons besoin de calculer la somme des heures négatif. vû qu’il est en format text ce n’est pas possible donc nous allons devoir trouver une parade.

pour cela nous ajoutons dans négatif la formule suivante.

=SI(ET(E4= »t »;J4<(8/24));(8/24)-J4; » »)

et voila ceci va seulement indiquer le résultat quand la solde est négatif.

vérifier s’il s’agit d’un weekend.

pour indiquer s’il s’agit d’un weekend ou pas nous allons utiliser la date introduite dans C4 avec la formule suivante.

=SI(OU(JOURSEM(C4)=1;JOURSEM(C4)=7);1; » »)

Vérifier s’il s’agit d’un jour férié. 

avant de nous lancer dans le contrôle nous allons crée une nouvelle page que nous allons nommer Config.

et nous allons crée un nouveau tableau qui nous servira de référence pour les jours fériés.
une petite astuce ici c’est d’indiquer dans la cellule A1 l’année. puis de place les date des jours férier dans le tableau grâce a la formule suivante.

pour le 1/11/2017 –> =DATE(A1;11;1)

avec cette formule quand nous allons changer l’année dans la cellule A1 hé ben l’année des jours fériés changent aussi.

désormais nous avons nos jour fériés donc dans fériés nous plaçons la formule suivante.

=SIERREUR(SI(EQUIV(C4;fériés;0);1; » »); » »)

ici nous allons vérifier si la date que nous avons introduit dans C4 correspond a une date dans notre tableau jour fériés.
si c’est le cas la formule affiche un 1 par contre si ce n’est pas le cas nous aurons une erreur. donc ici nous allons utiliser la fonction sierreur pour masquer l’erreur.

le résultat final.

donc désormais nous pouvons afficher le résultat final. qui ce lis comme suite.

si E4 n’est pas la lettre T alors nous allons contrôler s’il ne s’agit pas d’un jour fériés ou d’un weekend. si ce n’est pas le cas alors on affiche la valeur qui ce trouve dans la cellule E4.
par contre s’il y a la lettre T et qu’il y a un début et une fin de pause alors on afficher le résultat.

=SI(E4<> »t »;SI(OU(N4=1;M4=1); » »;E4);SI(OU(H4= » »;I4= » »);G4-F4;(H4-F4)+(G4-I4)))

indiquer le mois et l’année.

ici rien de spéciale nous allons chercher le numéro du mois et l’année de la date.

=ANNEE(C4)
=MOIS(C4)

3. Le Formulaire de saisie.

Désormais dans cette troisième partie de notre gestion du personnel des absence et temps de travaille nous allons crée un formulaire afin que nous puissions registrer nos informations.

Création du formulaire de base. 

Dans notre formulaire nous allons ajouter un combobox pour indiquer nos nom.
Dans notre formulaire nous allons ajouter 4 boutons d’option.
Le but avec les bouton d’option est que quand nous allons sélectionner une option he bien les autre ce désactive.
Temps de travaille
Vacances
Maladie
Réduction temps de travaille
Nous allons ajouter 5 textbox une pour la date le temps de début, le temps de fin, le début de pause la fin de pause.

Masquer les partie au chargement du formulaire. 

sélectionner les zone de text avec les étiquette. puis dans la partie propriété chercher l’option « Visible » et changer le de TRUE en FALSE

Configurer la zone de texte Date.

Private Sub TextBox1_AfterUpdate()
On Error GoTo alert:
Me.TextBox1 = CDate(Me.TextBox1)
Exit Sub
alert:
MsgBox (« le format de date n’est pas bonne »)
Me.TextBox1 = «  »
End Sub

Ce code va nous obliger de placer une date dans cette partie. Si ce n’est pas le cas alors un message d’erreur va apparaître et nous dire que nous avons fais une erreur et par la suite supprimer les donner qui ce trouve dans la partie date.

Configurer la zone de texte début. 

Private Sub txttempsdebut_AfterUpdate()
If Me.OptionButton1 <> True Then
Me.txttempsdebut = CDate(Me.txttempsdebut)
Else
Me.txttempsdebut = Format(Me.txttempsdebut, « hh:mm »)
End If
End Sub

Ici nous allons vérifier si l’option 1 est sélectionner alors nous allons uniquement autoriser un format temps. Si l’option 1 n’est pas sélectionner alors nous autorisons uniquement un format date.
Et ca nous le fessons aussi pour le temps de fin.

la mémoire.

Avant de continuer nous allons crée une variable public qui nous permettra de mémoriser une donnée.
C’set pourquoi nous allons l’appeler mémoire

Public mémoire as string

le Bouton d’option temps de travaille.

Private Sub OptionButton1_Click()
mémoire = « t »
Me.Breakstart.Visible = True
Me.txtbreakstart.Visible = True
Me.Breakstop.Visible = True
Me.txtbreakstop.Visible = True
Me.txttempsdebut.Visible = True
Me.txttempsfin.Visible = True
Me.tempsfin.Visible = True
Me.startT.Visible = True
Me.Label1.Visible = True
Me.TextBox1.Visible = True
End Sub

Ici nous allons faire les chose suivante.
Nous allons changer le texte du textbox début en temps début. Ainsi que celui du temps de fin.
puis nous allons placer en mémoire la lettre T qui nous servira plus tard afin de registre le touts comme temps de travaille.
Puis nous allons rendre les textbox visible.

les 3 autres boutons d’option 

pour les 3 Autres boutons nous allons changer le code comme suite.

Private Sub OptionButton2_Click()
memoir = « v » ‘–> v pour les vacance , m pour maladie et RTT pour les Récup
Me.Breakstart.Visible = False
Me.txtbreakstart.Visible = False
Me.Breakstop.Visible = False
Me.txtbreakstop.Visible = False
Me.Label1.Visible = False
Me.TextBox1.Visible = False
Me.txtbreakstop.Visible = False
Me.txttempsdebut.Visible = True
Me.txttempsfin.Visible = True
Me.tempsfin.Visible = True
Me.startT.Visible = True
End Sub

Ici nous allons faire la même chose que pour le temps de travaille, sauf que nous allons masquer les temps de pause et nous allons changer les text début et fin en début vacance et fin vacance.

De plus en mémoire nous allons placer la lettre V, M ou RTT celons le bouton d’option qui est sélectionner.

le bouton valider. 

Désormais que nous avons tout paramétré nous allons registrer le tout.
mais nous allons d’abord vérifier si toute les information sont présent et qu’il s’agit d’un temps de travaille.

If Me.OptionButton1 = True Then
  If Me.txttempsdebut = «  » Or Me.txttempsfin = «  » Or Me.TextBox1 = «  » Then
    MsgBox (« il manque des informations »)

Si tout est présent alors nous ajoutons toute nos information dans notre tableau.

Else
Sheets(« bd »).ListObjects(1).ListRows.Add
dlt = Sheets(« bd »).Range(« C1000 »).End(xlUp).Row

Sheets(« bd »).Range(« c » & dlt) = CDate(Me.TextBox1)
Sheets(« bd »).Range(« D » & dlt) = Me.ComboBox1
Sheets(« bd »).Range(« E » & dlt) = memoir
Sheets(« bd »).Range(« G » & dlt) = Format(Me.txttempsdebut, « hh:mm »)
Sheets(« bd »).Range(« h » & dlt) = Format(Me.txtbreakstart, « hh:mm »)
Sheets(« bd »).Range(« i » & dlt) = Format(Me.txtbreakstop, « hh:mm »)
Sheets(« bd »).Range(« j » & dlt) = Format(Me.txttempsfin, « hh:mm »)

MsgBox (« le temps de travail pour  » & Me.ComboBox1 &  » est planifier »)
Me.txtbreakstart = «  »
Me.txtbreakstop = «  »
Me.txttempsdebut = «  »
Me.txttempsfin = «  »
Me.TextBox1 = «  »
Me.ComboBox1 = «  »
Me.OptionButton1 = False
Me.Breakstart.Visible = False
Me.txtbreakstart.Visible = False
Me.Breakstop.Visible = False
Me.txtbreakstop.Visible = False
Me.txttempsdebut.Visible = False
Me.txttempsfin.Visible = False
Me.tempsfin.Visible = False
Me.startT.Visible = False
Me.Label1.Visible = False
Me.TextBox1.Visible = False

End If

Si ce n’est pas un temps de travaille alors nous allons calculer la différance entre la date de début et la date de fin et puis ajouter le nombre de fois nécessaire la lettre besoin.

Else
If Me.txttempsdebut = «  » Or Me.txttempsfin = «  » Or Me.ComboBox1 = «  » Then
MsgBox (« tout les champs ne sont pas rempli »)
Else
Dim x As Integer
Dim y As Date

x = DateDiff(« d », Me.txttempsdebut, Me.txttempsfin) + 1
y = Me.txttempsdebut
Do Until x = 0

Sheets(« bd »).ListObjects(1).ListRows.Add
dlt = Sheets(« bd »).Range(« C1000 »).End(xlUp).Row

Sheets(« bd »).Range(« c » & dlt) = y
Sheets(« bd »).Range(« D » & dlt) = Me.ComboBox1
Sheets(« bd »).Range(« E » & dlt) = memoir

x = x – 1
y = DateAdd(« d », 1, y)
Loop

A la fin nous allons afficher un message pour dire que tous est registré et puis remettre notre formulaire à 0.

MsgBox (« l’absence de  » & Me.ComboBox1 &  » est planifier »)
Me.txttempsdebut = «  »
    Me.txttempsfin = «  »
    Me.ComboBox1 = «  »
    Me.OptionButton2 = False
    Me.OptionButton3 = False
    Me.OptionButton4 = False
    End If
End If
ThisWorkbook.Save
ThisWorkbook.RefreshAll
End Sub

c’est bon je n’ais perdu personne jusque là ?

ouvrir le formulaire. 

Sur notre page « BD » nous allons crée un bouton pour afficher notre formulaire.

avec un double clic sur le bouton nous arrivons sur la page de code et nous allons afficher le code suivant.

Userform1.show

Attention il est important que vous indiquer le nom de votre formulaire dans le code sinon ça ne marche pas.

4. l’aperçu global


Dans cette quatrième partie nous allons voir comment crée un aperçu des heures de travail ainsi que les jours d’absence de tous nos collaborateurs.
Tout d’abord nous allons crée notre nouvelle page que nous allons nommé aperçu.

Nous allons ajouter dans la cellule H2 une date de début de mois.
dans la cellule à coter nous allons ajouter la formule suivante.

=SIERREUR(SI(H2>=FIN.MOIS(H2;0); » »;H2+1); » »)

Ici ce que nous allons faire c’est contrôler si la date qui ce trouve dans la cellule précédente est plus grande ou égal a la fin du mois de cette cellule. Si c’est le cas alors nous affichons rien.

Par contre si ce n’est pas le cas alors nous ajoutons 1 jour de plus.

Dans la cellule H3 nous allons afficher le nom du jour au format texte avec la formule suivant

=SIERREUR(TEXTE(JOURSEM(H2); »jjj »); » »)

le Tableau Croisé dynamique

Désormais nous allons ajouter les nom avec un tableau croisé dynamique.

Filtre = mois et année

Ligne = nom

Puis nous allons changer le format en rien.
Afin d’afficher les bonnes date nous allons placer la formule suivante dans H2

=SIERREUR(DATE(B2;B1;1); » »)

Rechercher les information de travail ou d’absence.

Sélectionner tout la zone ou nous voulons afficher le résultat et nous allons placer la formule suivante.

=SI(OU(H$3= »dim »;H$3= »sam »); » »;SIERREUR(INDEX(Tableau2[[Total ]];EQUIV(1;(Tableau2[Date]=Apperçu!H$2)*(Apperçu!$A6=Tableau2[Nom]);0)); » »))

avec cette formule nous allons d’abord vérifier s’il s’agit d’un samedi ou d’un dimanche. si c’est le cas alors nous affichons rien. par contre si se n’est pas un samedi ou un dimanche alors nous allons chercher le résultat. celons 2 critère, le premier est la date doit être = à la date de notre aperçu et la seconde critère le nom.

Le résumé du mois. 

Désormais nous allons pouvoir calculer les heurs de travaille ainsi que les jours d’absence. donc nous allons crée 4 titre avec V, RTT, M et temps et en dessous nous allons calculer le résultat pour chaque personne avec la formule suivante.

V : =SI(A4<> » »;NB.SI(H4:AK4;$C$3); » »)

RTT : =SI(A4<> » »;NB.SI(H4:AK4;$D$3); » »)

M : =SI(A4<> » »;NB.SI(H4:AK4;$E$3); » »)

Temps : =SI(A4<> » »;SOMME(H4:AK4); » »)

Afficher les weekend.

Sélectionner la zone d’information et placer la mise en forme conditionnel.

=OU(H$3= »dim »;H$3= »sam ») couleur grise.

Afficher automatiqument une bordure

= valeur de la cellule différetne de = » » une bordure.

changer la mise en forme pour les valeur trouver. 

Valeur de la cellule = V en vert

Valeur de la cellule = M alors rouge

Valeur de la cellule = Rtt alros gaune.

Afficher une bourdure dans la somme

=A4<> » »

5 l’aperçu individuelle.

dans cette 5eme partie nous allons donc crée le premier morceau de puzzle de notre détaille individuelle.

La page des vacances 

–          Nous allons crée une nouvelle page pour les vacances et récup des employer
–          Crée le tableau avec le nom, année, RTT, V
–          Nous allons créer une nouvelle page que nous allons nommer Individuelle.
–          Nous allons changer la couleur de fond en bleu.

Dans employer nous allons placer une liste avec les noms des employées

la page individuelle. 

Titre total : = « Total « &C3
Titre Reste : = « Reste « &C3
Titre Octobre : = si(c4= «  » ; «  » ; » Total « &TEXTE (1&  » / « &c4 ; « mmmm « ))

Dans V :

Désormais nous allons rechercher le nombre de fois qu’une personne est partie en vacances durant l’année de 2017.

Nous allons pour cela utiliser la fonction nb.si.ens. Qui nous permettra d’utiliser plusieurs critères de recherche. Dans notre cas se serra 3. Donc une fois nos 3 critère définit la fonction vas compter le nombre de fois que ces critères sont remplis et nous donner le résultat.

=NB.SI.ENS(Tableau2[Nom];Individual!$C$2;Tableau2[année];Individual!$C$3;Tableau2[Type];Individual!$B7)

Désormais que nous savons combien de fois nous somme partie en 2017 nous allons pouvoir chercher combien de jour nous sont octroyer pour l’année sélectionner.

Je vais vous montrer 2 façon de rechercher ces informations

Reste 2017 méthode 1

=SIERREUR(INDEX(Tableau3[V];EQUIV(1;(Tableau3[nom]=Individual!C2)*(Tableau3[année]=Individual!C3);0))-Individual!C7; » »)

 Reste 2017 méthode 2

=SOMME.SI.ENS(Tableau3[V];Tableau3[nom];Individual!$C$2;Tableau3[année];Individual!$C$3)-C7

Total Octobre

=NB.SI.ENS(Tableau2[Nom];Individual!$C$2;Tableau2[Type];Individual!$B7;Tableau2[année];Individual!$C$3;Tableau2[mois];Individual!$C$4)

Dans RTT :

Total 2017

=NB.SI.ENS(Tableau2[Nom];Individual!$C$2;Tableau2[année];Individual!$C$3;Tableau2[Type];Individual!$B8)

Teste 2017

=SOMME.SI.ENS(Tableau3[V];Tableau3[nom];Individual!$C$2;Tableau3[année];Individual!$C$3)-C8

Total Octobre

=NB.SI.ENS(Tableau2[Nom];Individual!$C$2;Tableau2[Type];Individual!$B8;Tableau2[année];Individual!$C$3;Tableau2[mois];Individual!$C$4)

Dans M :

Total 2017

=NB.SI.ENS(Tableau2[Nom];Individual!$C$2;Tableau2[année];Individual!$C$3;Tableau2[Type];Individual!$B9)

Total Octobre

=NB.SI.ENS(Tableau2[Nom];Individual!$C$2;Tableau2[Type];Individual!$B9;Tableau2[année];Individual!$C$3;Tableau2[mois];Individual!$C$4)

calcule des heures suplémentaire 

Pour calculer les heures total prester :

Total 2017

=SOMME.SI.ENS(Tableau2[[Total ]];Tableau2[Nom];Individual!$C$2;Tableau2[année];Individual!$C$3)

Total Octobre :

=SOMME.SI.ENS(Tableau2[[Total ]];Tableau2[Nom];Individual!$C$2;Tableau2[année];Individual!$C$3;Tableau2[mois];Individual!$C$4)

Ici il ne faut pas oublier de changer le format en [H] :mm sinon il ne cumulera pas les heures.  

Total supp :

Total 2017

=SOMME.SI.ENS(Tableau2[heures supp];Tableau2[Nom];Individual!$C$2;Tableau2[année];Individual!$C$3)

Total mois

=SOMME.SI.ENS(Tableau2[heures supp];Tableau2[Nom];Individual!$C$2;Tableau2[année];Individual!$C$3;Tableau2[mois];Individual!$C$4)

Total manque :

Total 2017

=SOMME.SI.ENS(Tableau2[Heures neg];Tableau2[Nom];Individual!$C$2;Tableau2[année];Individual!$C$3)

Total mois

SOMME.SI.ENS(Tableau2[Heures neg];Tableau2[Nom];Individual!$C$2;Tableau2[année];Individual!$C$3;Tableau2[mois];Individual!$C$4)

Et pour finir nous allons faire le calcul du solde restants au format texte ainsi nous allons pouvoir indiquer le signe + ou -.

Total 2017 :

= SI(C13>=C14;TEXTE(C13-C14; »+ [h]:mm »);TEXTE(C14-C13; »- [h]:mm »))

Total octobre :

= SI(D13>=D14;TEXTE(D13-D14; »+ [h]:mm »);TEXTE(D14-D13; »- [h]:mm »))

6. L’aperçu détailler

Dans la partie précédente de notre gestion du personnel nous avons vu comment réaliser ce premier morceau de notre aperçu individuel. Désormais nous allons crée un détaille qui nous permettra de voir en détaille quand la personne à pris ces vacances ou récup, avec les filtre nous allons afficher facilement les jours vacances, maladie, et récup. Ainsi que d’afficher quand la personne à effectuer des heures supplémentaires et quand il n’as pas presté ces journée complète.

La recherche.

Pour crée un tel détaille nous allons devoir crée un page de recherche ou nous allons définir les critères de recherche ainsi que les titre de notre tableau. Attention il faut reprendre exactement tous les tire e notre tableau.

Dans la partie critère nous allons placer le nom, type, mois, année, heures supp, heures neg.

Ici le but c’est d’afficher les information besoin dans les critères et rechercher ces information dans notre tableau pour que par la suite il place le tout ici dans la base de donnée.

Pour que ça fonctionne nous allons ajouter une macro sur cette page et dans ce macro nous allons ajouter le code suivant et le nomme marecherche

Sheets(« bd »).Range(« Tableau2 »).CurrentRegion.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheets(« recherche »).Range(« b2:g3 »), CopyToRange:=Sheets(« recherche »).Range(« l2:y2 »), Unique:=False

Alors ici nous somme partie sur notre tableau qui ce trouve sur la feuil BD et nous avons demander à Excel de filtre notre tableau selon les critère indiquer dans B2 qui di ce qu’il faut filtré et B3 quel est la recherche.

Puis nous allons demander de copier les donnée filtré et de les coller à leur emplacement la ou nous avons placer les titres.

Désormais nous allons crée un nom de plage de donnée qui va sélectionner tous les résultat trouver pour les placer plus tard dans notre liste.

Que nous allons nommer Liste.

=DECALER(recherche!$L$3;0;0;NBVAL(recherche!$L$3:$L$1048576);14)

Dans notre critère de recherche nous allons placer les critères de base.

Nom = individuelleC2
année = individuelleC3

Voila désormais nous avons configuré notre page recherche il est temps d’afficher nos détaille.

Les détaille.

Sur notre page individuelle, je vais placer tous les boutons ainsi que notre liste.

Pour afficher nos résultats dans notre zone de liste nous allons le faire en demandant à notre bouton de lancer la macro que nous avons créé marecherche et puis placer nos informations de liste dans.

marecherche

Me.listbox.listfillrange = »liste »

Désormais nos résultats devront s’afficher.

Mais le problème c’est que tous nos informations ne sont pas disponibles.
Donc nous allons faire quelque optimalisation sur notre formulaire.

Columncount = 11 le nombre de titre.

Clumnwidth = 75 pt pour ceux qui doivent être visible et 0 pt pour ceux qui ne le sont pas.

Height nous allons le fixer a 250

Integralheigth = false ainsi nous évitons la taille ne change.

Columnhead = true pour afficher les titres.

Maintenant nous allons ajouter une autre critère le mois. et ici nous voulons que s’il y a un mois indiquer alors nous allons utiliser le mois indiquer si ce n’est pas le cas nous allons afficher tout les mois de l’année.

If Range(« c4 ») = «  » Then
Sheets(« recherche »).Range(« d3 ») = «  »
Else
Sheets(« recherche »).Range(« d3 ») = Range(« c4 »)
End If

Donc ici nous allons vérifier s’il y a une date mentionner sur notre page. Si c’est le cas alors nous allons remplacer la date qui se trouver sur notre page recherche par celui si. Si ce n’est pas le cas nous allons vider la case date dans recherche.

Une dernière chose avec le bouton afficher nous voulons afficher toutes les informations donc plus tard si nous allons filtré avec les filtre hé ben nous voulons effacer ces filtre et uniquement chercher sur le nom, année et mois.

Donc nous allons ajouter le code suivant pour former le code complet comme suite.

Private Sub CommandButton1_Click()
If Range(« c4 ») = «  » Then
Sheets(« recherche »).Range(« d3 ») = «  »
Else
Sheets(« recherche »).Range(« d3 ») = Range(« c4 »)
End If
Sheets(« recherche »).Range(« g3 ») = «  »
Sheets(« recherche »).Range(« f3 ») = «  »
Sheets(« recherche »).Range(« c3 ») = «  »
marecherche
Me.ListBox1.ListFillRange = « liste »
End Sub

Les filtres supplémentaire.

Il est temps de placer nos filtre suplémetaire comme les heurs supp, négatif, vancances, rtt et maladie.

Pour cela nous allons ajouter une macro en plus avec le code suivant.

Pour les heures supplémentaire.

Sub Rectangleàcoinsarrondis3_Cliquer()
Sheets(« recherche »).Range(« g3 ») = «  »
Sheets(« recherche »).Range(« c3 ») = «  »
Sheets(« recherche »).Range(« f3 ») = « > 0 »
marecherche
Sheets(« individual »).ListBox1.ListFillRange = « liste »
End Sub

Pour les heures négatif

Sub Rectangleàcoinsarrondis4_Cliquer()
Sheets(« recherche »).Range(« f3 ») = «  »
Sheets(« recherche »).Range(« c3 ») = «  »
Sheets(« recherche »).Range(« G3 ») = « > 0 »
Sheets(« individual »).ListBox1.ListFillRange = « liste »
End Sub

Pour les vacances, maladie et RTT

Sub Rectangleàcoinsarrondis5_Cliquer()
Sheets(« recherche »).Range(« g3 ») = «  »
Sheets(« recherche »).Range(« f3 ») = «  »
Sheets(« recherche »).Range(« c3 ») = « v » ‘changer cette lettre selon le bouton
Sheets(« individual »).ListBox1.ListFillRange = « liste »
End Sub

Voilà désormais votre gestionnaire du personnel qui garde les temps de travaille et absence est désormais terminé. Si vous avez des questions ou que vous voulez ajouter quelque chose par la version 2.0 faite le moi savoir dans les commentaires et d’ici-là nous nous retrouver sur un prochain cours.

39 Commentaires

  1. Bonjour, j’ai suivi vos vidéos à la lettre, mais je dois avouer que depuis une semaine je bloque sur la vidéo 4 avec les fonctions INDEX et EQUIV. voici ce que j’ai saisi: =SIERREUR(INDEX(Tableau3[résultat];EQUIV(1;(Tableau3[Nom]=Aperçu!$A5)*(Tableau3[Date]=Aperçu!H$2);0)); » »)
    mais j’ai toujours la même erreur NA pourtant mon fichier est correct . Est il possible d’avoir de l’aide votre party s’il vous plait?

  2. Bonjour;
    j’aspere que tu va bien, j’ai un soucis concernant l’affichage de listbox1 (elle ne s’affiche pas), j’ai suivi les étapes mais toujours rien merci Mr daniel de m’orienté pour corigé le problême
    merci

  3. Bonjour

    J’ai un problème avec
    Private Sub TxtDate_AfterUpdate()
    On erreur GoTo Alert:
    Me.TxtDate = CDate(Me.TxtDate)
    Alert:
    MsgBox (« Le format de la date n’est pas Correcte »)
    Me.TxtDate = «  »
    End Sub

    En effet, peu importe la saisie , j’ai un problème de compilation, meme la saisie d’une date affiche le message le format de la date n’est pas correct. version office 2016

  4. bonjour merci pour tout ce que vous faites. par contre a partir de la 3ème video tout ce que je fais ne s’enregistre pas des que je ferme le fichier quand je l’ouvre a nouveau plus aucun enregistrement tout disparait que faire?
    merci

  5. Bonjour,
    Tout comme Patricia, je suis sur la partie 6 section création du bouton Afficher, et en marquant le même code que vous, il ne trouve pas la listbox1.

    Private Sub CommandButton1_Click()
    marecherche
    Me.ListBox.ListFillRange = « liste »

    End Sub

    Pourriez-vous m’aider svp?

  6. Bonjour super tuto

    Je arrivé à cette étape :
    Private Sub CommandButton1_Click()
    If Me.OptionButton1 = True Then
    If Me.Nom = «  » Or Me.txtdate = «  » Or Me.txtdébut = «  » Or txtfin = «  » Then
    MsgBox (« Des informations sont manquantes »)
    Else
    Sheets(« BDD »).ListObjects (1) .ListRows.Add
    End If
    End If

    End Sub

    Malheureusement j’ai une erreur de compilation : Attendu : fin d’instruction
    Pour cette ligne :
    Sheets(« BDD »).ListObjects (1) .ListRows.Add

    Pas moyen de trouver ce qui bloque merci par avance de votre aide.

  7. Bonjour Daniel,
    Super application et très utile.
    Les tuto sont super bien expliqué! merci

    Il me reste tout de même un soucis, les journée de RTT ne retire pas d’heure supplémentaire.
    Est-il possible d’adapter la formule du résultat ou ajouter le nombre d’heure de RTT.

    merci pour ta réponse,

  8. Bonjour,
    je suis sur la partie 6 section création du bouton Afficher, et en marquant le même code que vous, il ne trouve pas la listbox1.

    Private Sub CommandButton1_Click()
    marecherche
    Me.ListBox.ListFillRange = « liste »

    End Sub

    Pourriez-vous m’aider svp?

  9. bonjour, je suis en train de travailler sur le planning congé.
    je suis arrivé dans la partie#
    et je bloque avec la formule ou il faut taper ctrl+shift+entrée
    je n’y arrive pas à cause du shift( pas apparent sur le clavier)
    en faisant la flèche du haut +ctrl+entrée cela me fait ceci à la fin de ma formule }

    merci de pouvoir m’aider

  10. Bonjour,

    Je rencontre une difficulté, je voudrais mettre une plage de date pour la saisie horaire mais je n’arrive, je ne suis pas une pro du vba!Pourriez vous m’aider s’il vous plaît?Merci pour vos vidéos elles sont parfaites!

  11. Bonjour Daniel ,

    il y a une erreur sur ce bout de code au début du chapitre 6 , mais je ne trouve pas :

    Sheets(“BDD”).Range(« B2:O10 »).CurrentRegion.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheets(“recherche”).Range(« B2:G3 »), CopyToRange:=Sheets(“recherche”).Range(« K2:X2 »), Unique:=False

    l’indice n’appartient pas à la sélection

    Merci pour vos Tutos .

    Bonne journée

  12. bonjour,
    lorsque je tape « Sheets(“bd”).Range(“Tableau2”).CurrentRegion.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheets(“recherche”).Range(“b2:g3”), CopyToRange:=Sheets(“recherche”).Range(“l2:y2”), Unique:=False »
    il me marque que « Range(“b2:g3”), » attente de separateur de liste ou ) la je ne comprend plus….merci pour vos cours, si vous avez un conseil…

  13. Bonjour,
    Je vous remercie pour ces autos très bien fait et m’aide précieusement
    J’ai une question sur le fonctionnement des saisies :
    si j’ai placé une journée de vacances par exemple le 21/11 pour un salarié. Ce même salarié se blesse et je le passe en Maladie du 17/11 au 23/11.
    J’ai 2 informations pour la même journée et une seule s’affichera. (j’ai essayé)
    Comment résoudre ce problème svp
    Merci d’avance

  14. Tutoriel parfait, plein de pédagogie…… j’adore ! superrrrrrrrrrr

    Néanmoins je me suis arrangé à avoir un soucis. En effet, je voulu créer un petit gestionnaire de pointage pour les employés, sur la base des critères suivants :
    – l’employé doit pointer le matin uniquement que l’heure d’arrivée
    – l’employé doit pointer son intervalle de pause (heure de début et de fin de pause) après qu’il est fini sa pause.
    – l’employé doit finalement pointer son heure de départ avant de quitter les locaux.
    – Toutes ces informations doivent être enregistrées sur la même ligne (pour une date)

    Et là, je me suis complètement perdu. Comment récupérer la ligne qui correspond à la date du jour et à l’utilisateur sélectionné, puis enregistrer les valeurs qui n’ont pas encore été enregistrées dans la BD le long de la journée (je parle de l’heure de fin, l’heure de pause, etc..)

    Compliqué, veuillez m’aidez s’il vous plaît

  15. Bonjour Daniel,
    Je te félicite pour le temps passé à créer les vidéos et répondre aux différentes questions.
    Pour ma part je n’arrive pas à trouver la formule pour ma problématique.
    Je travaille sur trois communes.
    Je travaille du lundi au vendredi et exceptionnellement le week-end.
    je travaille 7h par jour.
    Le nombre heure travaillée est de 1607h sur une anné soit 35h par semaine
    Sur deux des 3 communes, je ne travaille que 4h par semaine et le reste du temps je travaille sur la troisième commune. Il peut m’arriver d’intervenir sur les deux premières communes, mais en heures supplémentaires.
    Dans la base de donné je souhaite préciser la commune d’emploi par une lettre (soit « L », « A » ou « C ») à la place du »t » de travail.
    ensuite dans l’onglet « individuel », Je souhaite faire un total des heures faites et restantes de chaque commune par semaine, mois et un décompte sur les 1607h
    je souhaite pouvoir imprimer un récapitulatif mensuel des heures (normales et supplémentaires )par mois.
    J’ai déjà modifié certaines choses, mais je bloque sur les formules.
    J’espère avoir été assez clair.
    Merci par avance pour ta réponse et le temps que tu pourras prendre.
    David

  16. Bonjour Daniel
    merci pour les cours c’est très intéressants vraiment, mais un petit soucis avec mon fichier. Mon problème est que quand je faire renter les informations tous disparaît dans l’aperçu au niveau du tableau des dates, est ce pourrait-je avoir votre fichier SVP ? car je n’ai pas pu voire le code, j’ai suivi tous les cours je peux même vous envoyer mon fichier que j’ai crée. Merci en espérant que vous allez me répondre.

    Sincèrement.

  17. BONJOUR après avoir fait le tableau croisé dynamique, la formule index et equiv bloque
    j’ai une erreur qui dit valeur je pense qu elle se situe sur apercu a$5

    j ai recommencer 10 fois sans suces

  18. Bonjour,

    Comment vous contacter en direct, on est une petite entreprise et j’ai beaucoup de mal à calculer les heures sans erreurs je voudrais vous montrer mon fichier, peut-être que vous pourrez me trouver une solution.
    Merci d’avance
    Cordialement

  19. Bonjour merci pour ses superbe tuto
    je souhaiterais avoir la possibilite de calculer les heures à la semaine et aussi faire un bilan des week ends travaillais ainsi que des jours férier merci à vous

  20. bonjour, excellent tuto

    j’ai réussi à récupérer les codes des video 1,2,3,4 et 6 mais la vidéo 5 n’est pas affichée sur votre site

    ma serie de code est incomplète :-((

    pouvez vous m’aider SVP

    Vincent

  21. Bonjour.. je suis zouher de maroc..
    Je vous remercier pour les videos. Et je je voudrais avoir s’il est possible de faire des document pdf. Cm je peux l’imprime..

  22. Bonjour,
    Déjà super tuto!!!!
    Vraiment nickel super bien expliqué.
    J ai un léger bug sur une formule qui me renvoie une erreur #VALEUR!
    =SI(E4 »t »; » »;SI(J4>(8/24);J4-(8/24);TEXTE((8/24)-J4; »- [h]:mm »)))
    Pour 07:30 en start, 15:30 en stop,12:00 en pause start et 13:00 en pause stop.
    Et cela ne se fait uniquement pour ces horaires
    Avez vous une idée?????
    Merci d’avance

  23. Bonjour c’est toujours un plaisir de voir vos vidéos.

    Je suis en train de faire la 3ème partie. Seulement comme j’ai oublié de mettre un nom dans le formulaire au moment de tester au niveau de la 50 ème minute (environ pour rajouter les 23 lignes de vacances), le fichier à buguer et j’ai du tout arrêter. G bien retrouver mon fichier, sauf que j’ai le message d’erreur « Les macros de ce projet sont désactivées. Référez-vous à l’aide en ligne ou à la documentation de l’application hôte pour savoir comment activer les macros ».
    Vous n’auriez pas la solution pour que tout re fonctionne et que je puisse continuer la l’exercice.
    Avec mes remerciements.

LAISSER UN COMMENTAIRE

Please enter your comment!
Please enter your name here

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.