Feuille de présence depuis un planning

Bonjour à tous,

Depuis un planning (Feuille "(Mai) Résultat souhaité"), j'aimerais extraire une de feuille de présence dans la feuille "FP".

Mais avant, le planning devra être renseigné selon le nom et la date depuis le tableau "Brgd!E5:I35" par :

- "P" si l'agent travaille la matinée.

- "G" si l'agent travaille l'après-midi.

- "N" si l'agent travaille la nuit.

- "R" si l'agent est en repos.

- "L" si l'agent travaille toute la journée (Limite).

Les zones de texte de A1:A5 sont utilisées pour lancer le code VBA.

L’idée qui m’est arrivée jusqu’à maintenant, me permet seulement de marquer les cellules de tout le personnel par les mêmes abréviations à savoir le "G" et le "P".

Ce que j’ai fait, c’est de récupérer, dans la tableau tbBrgd(), les noms et leurs lignes dans le planning, puis lancer la boucle pour marquer un "G" si la reste de la division du numéro du jour dans la ligne 5 sur 2 est un 1 sinon marquer un "P"

Il y aussi un cas ou je souhaiterais trouvé une solution. C'est celui ou un agent "Nom1" qui travaille sous le système P/G et qui pourra partir en formation "FO" pour une durée de 5 jours par exemple (13/05/2013 au 17/05/2013)

Dans ce cas, l'agent "Nom2" qui travaille en "L" devra le remplacer, et pendent cette période (5j), il travaillera sous le système P/G.

Merci d'avance.

Bonjour,

Pour le premier point (Marquage du planning avec les abréviations "P", "G", "N" et "L"), j'ai développé une autre idée, qui fonctionne bien pour le moment, sauf qu'il me manque :

- Comment écrire des "R" (Repos) entre les cellules marquées par un "N" ?

- Comment écrire des "L" pour les "Nom2" et "Nom6", tout en inscrivant des "R" lorsqu'il s’agit d'un jour férié ou d'un Week-end ?

Merci.

Bonjour à tous,

Je crois que je rame tout seul

Alors une proposition ?

Bonsoir

Une proposition

Bonsoir Banzai64,

C'est très bien fait. Merci.

Je vais faire quelques essais ensuite on attaquera l'étape suivante qui est l'affichage de la feuille de présence dans la feuille "FP".

Bonsoir Banzai64,

Je reçois cette erreur :

Erreur d'exécution '9':

L'indice n'appartient pas à la selection

Sur cette ligne :

Tablo(mTab(I, Ct), I) = Tt

Bonsoir

apt a écrit :

Je reçois cette erreur :

Avec le fichier que j'ai posté ?

Si oui : Il faut me dire ce que tu fais pour arriver à cette erreur

Si non : Sans le fichier et les actions faites pas facile à deviner

Bonsoir Banzai64,

Banzai64 a écrit :

Avec le fichier que j'ai posté ?

Nom bien sûr

J'ai changé :

Cel.Row-5

Par

Cel.offset(,2)

Ce qui me génère une erreur dans le tableau "Tablo" (La première valeur traitée est 8 (Ligne 8) ce qui est hors indice de "Tablo" qui contient au maximum 6 lignes)

        With Range("S4:W35")
            .Replace What:=Cel, Replacement:=Cel.Offset(, 2), LookAt:=xlPart, _
                     SearchOrder:=xlByRows, MatchCase:=False, _
                     SearchFormat:=False, ReplaceFormat:=False
        End With

Pour le renseignement de la feuille "FP", voila un fichier explicatif que j'avais préparé en PJ.

Bonjour

Pourquoi veux tu modifier

Ton tableau de la feuille "Mai" serait situé à partir de la ligne 200 la macro ne serait pas modifiée (a part les coordonnées du tableau)

Les formules en colonne D de la feuille "Brgd" ne sont d'aucune utilité

Dans l'état actuel la macro fonctionne

Il faut juste à penser à effacer le tableau de la page "mai"

        With Sheets(NomFeuille)
        ' effacer la zone d'abord
        .Range("B8:AF13").ClearContents
        Tablo = .Range("B8:AF13")

Bonjour Banzai64,

J'ai réussi à traiter le cas d'une permutation du système du travail entre agents (Ex : Cas "G", "P" et "FO")

Il me reste le traitement de la feuille "FP"

Bonjour,

Une question ?

Bonjour

Je pense que tu t'adresses à moi

Mais je ne sais pas ce que tu cherches, tu connais tellement ton programme alors tu penses que moi aussi

Quand j'ai regardé la feuille "FP" et que j'ai modifié la toupie, j'ai remarqué que des données changeaient

Pour moi c'était ok

Il faudrait que je comprenne

Tu pourrais noter ce que tu veux comme résultat, par exemple si on change de jour que doit-on obtenir etc

Bonjour Banzai64,

Un fichier explicatif pour la feuille de présence "FP" en PJ.

26fp.xlsx (38.17 Ko)

Bonjour Banzai64,

Dans le fichier que tu m'as posté :

https://forum.excel-pratique.com/download/file.php?id=44658

J'ai besoin de marquer des "Rn" entre les "N" au lieu des "R" pour différencier le repos automatique "R" et le repos d'une récupération d'une nuit.

Merci.

Bonjour

Modifies la ligne correspondante

      If Repos = True Then                                  ' On a vu que c'est "R"
        For I = 1 To UBound(Tablo, 2)
          If Tablo(K, I) = "" Then Tablo(K, I) = "Rn"        ' Dans les cases vides "R"
        Next I
      ElseIf Limite = True Then                             ' Toute la ligne est vide

Merci Banzai64,

Je vais continuer à travailler dans la feuille "FP".

Après, je vais posté ce que j'ai pu atteindre comme solution ....

Bonjour Banzai64, le forum,

Voila, J'ai pu renseigner la feuille de présence "FP" depuis le planning du mois en cours (Pour notre cas c'est le mois de "Mai").

Mais il reste à chercher à résoudre les points suivants :

- Attacher la procédure "RemplirFP()" à la toupie.

- Adapter la procédure "VerifJourSuivants()" qui sert à cacher les tableaux en cas de dépassement des dates du mois en cours.

- Faire la liaison des cellules "FP!O1:P1", qui servent pour la date qu'incrémente/décrémente la toupie, avec le planning en cours.

D'autres points pourront voir le jour après vos tests 8)

Et puis vous pourrez toujours apporter vos grains de sel au code pour mieux le perfectionner

Merci d'avance.

Bonsoir,

J'ai remplacé la toupie (Formule) par la toupie (ActiveX) pour avoir l'évenement Change.

Voila le code de la SpinButton :

Private Sub SpinButton1_Change()
    With Me.SpinButton1
        .LinkedCell = Range("M1").Address
        .SmallChange = 1
        .Max = 10
        .Min = 0
        .PrintObject = False
        If .Value > 0 And .Value <= 10 Then
            Call RemplirFP
        End If
' Si on est à plus 8 on active la verification du mois
' 8 et 9 équivaut le 28 et le 29 du mois - Vérification du mois de Février
' 9 et 10 équivaut le 30 et le 31 - Vérification des derniers jours des 11 mois restants 
        If .Value > .Max - 2 Then 
            Call VerifJourSuivants
        End If
    End With
End Sub

Et de la procédure "VerifJourSuivants()" adaptée :

Sub VerifJourSuivants()
    Dim Cll As Long
    For t = 1 To nTab - 1
        Cll = nLt * t + 7
        If Month(Range("B7")) <> Month(Range("B" & Cll)) Then

            ' On masque le tableau suivant
            'With Range("A18:H27")
            'With Range("A29:H38")
            With Range("A" & Cll & ":H" & Cll + nLt - 2)
                .Borders.LineStyle = xlNone
                .Font.ColorIndex = 2
                .Interior.ColorIndex = 2
            End With
        Else

            ' Sinon on l'affiche s'il est masqué
            'With Range("A18:H27")
            'With Range("A29:H38")
            With Range("A" & Cll & ":H" & Cll + nLt - 2)
                .Borders.Weight = xlThin
                .Font.ColorIndex = xlAutomatic
            End With

            ' On grise la zone des heures creuses
            'With Range("G20:H22,G24:H25")
            'With Range("G31:H33,G35:H36")
            With Range("G" & Cll + 2 & ":H" & Cll + 4 & ",G" & Cll + 6 & ":H" & Cll + 7)
                '---
                .Borders(xlInsideVertical).LineStyle = xlNone
                .Borders(xlInsideHorizontal).LineStyle = xlNone
                With .Interior
                    .Color = 15921906
                End With
                '---
            End With
        End If
    Next t
End Sub

"nTab" et "nLt" sont définies "Public" dans la procédure "RemplirFP()"

nTab = Nombre de tableaux affichés dans une page (Egal à 3 tableaux dans notre cas)

nLt = Nombre de lignes par tableau (Egal à 11 lignes par tableau dans notre cas)

Maintenant, j'ai un autre souci :

Le code VBA du traitement des tableaux selon les dates (B7, B18, B29) dans la procédure "RemplirFP()" n'est pas lancé pour la première fourche de date obtenue par défaut (K1=01/05/2013 - L1=03/05/2013) lorsque M1=0 !!?

Une solution ?

Merci.

Rechercher des sujets similaires à "feuille presence planning"