Créer en VBA un planning Excel 2007

Bonjour,

Voici un planning pour un roulement 5 équipes en 3x8

il fonctionne en formule excel

mais au fil du temp des bug sont apparu des fonction on disparu

J'aimerai recréer ce planning dans Excel via VBA pour éviter les formules

Le roulement équipe est le suivant deux matin 5h a 13h deux aprés midi 13h a 21h deux nuit 21h a 5h suivi de 4 jours de repos

5 équipes ABCDE décalée pour se relayer

ce planning est utile pour inscrire les présences, absences et formations pour chaque membres de l 'équipe

Comment recreer un tableau similaire via vba qui permet d afficher automatiquement selon les choix d equipe" et d annéee ?

bonjour anarium,

la macro assume que vous commencez votre roulement le 01/01/2024 avec "RRMMAANNRR" et cela pendant 10 années, donc vous pouvez choiser votre année entre 2024 et 2033. C'est seulement au moment au vous changez ce roulement que vous devez modifier "Roulement" et "debut", le reste se fait sur les feuilles.

Sub Shifts()
     Dim Jour1, aR, Nombre, Delta, Roulement, s

     Roulement = "RRMMAANNRR"                'les équipes pendant 10 jours suivants
     debut = CLng(DateSerial(2024, 1, 1))    'le premier jour où on a aplliqué ce roulement (pas nécessairement ce jour de F20 de janvier
     s = WorksheetFunction.Rept(Roulement, 366)     'roulement pour 366 tours de 10 jours = 3660 jours = 10 années à partir du jour de début = 2024-2033

     annee = Sheets("janvier").Range("B3").Value
     If WorksheetFunction.Median(Year(debut), Year(debut) + 9, annee) = annee Then
          aa = Evaluate("TEXT(DATE(2024, column(A1:L1) ,1),""[$-Fr-fr]mmmm"")")
          For i = 1 To UBound(aa)
               Set sh = Sheets(Replace(Replace(aa(i), "é", "e"), "û", "u"))     'nom du mois
               'Application.Goto sh.Range("F20"), 1
               Jour1 = CLng(DateSerial(annee, i, 1))     'premier jour
               Nombre = WorksheetFunction.EDate(Jour1, 1) - Jour1     'nombre de jours
               Jours = Evaluate("transpose(row(offset(A1," & Jour1 - 1 & ",," & Nombre & "," & Nombre & ")))")     'les dates
               Delta = Jour1 - debut
               ReDim aR(1 To Nombre)
               For j = 1 To Nombre
                    aR(j) = Mid(s, Delta + j, 1)
               Next

               With sh.Range("F20")
                    .Resize(, Application.Max(29, Nombre)).ClearContents     'vider les dates de ce mois
                    .Resize(, Nombre).Value = Jours     'remplacer ces cellules vides par les dates calculées
                    .Offset(2).Resize(, Application.Max(29, Nombre)).ClearContents     'vider les "roulements"  de ce mois
                    .Offset(2).Resize(, Nombre).Value = aR     'remplacer ces cellules vides par les nouveaux roulements
               End With
          Next
     Else
          MsgBox "l'année est hors de l'intervalle prévu"
     End If

End Sub

merci pour votre aide , je ne comrend pas comment le code fonctionne et a quoi il sert ? il y a 5 équipe qui ne commence pas au même moment

re,

Voulez-vous me montrer le résultat voulu ?

Maintenant (avec la macro "shifts2") je vous montre les 5 équipes aux lignes 100 & 102-106 de chaque feuille

Si vous voulez quelque chose de différent, il faut le dire.

Merci, je viens de comprendre ,

effectivement votre code fonctionne bien. j'ai du mal a voir la différence du deuxième code ?

Pour clarifier mon besoin

Je voudrais le classeur identique a l'original avec 1mois par feuille, les valeurs des feuille qui se mettent a jours en choisissant l'années et l'équipe (l'année est utilisée très rarement) mais sans formule excel uniquement du vba

Au fil du temp les multiple utilisateur qui renseigne le tableau se trompe ou supprime sans s'apercevoir la formule, ce qui dérègle le tableau

Le tableau est utiliser pour le pointage des agents de chaque équipe A.B.C.D.E il permet de voir au mois le mois le présentiel pour assurer un nombre minimum d agent

avec ce bouton dans la cellule E1, la macro vous crée 5 fichiers avec le planning de cahque équipe sans macros

Merci, mais je dois garder les 5 équipe sur le même fichier. pour pouvoir switcher d une équipe a l autre voir qui est présent.

donc, au lieu de 5 fichiers d'un an par equipe, 12 fichiers d'un mois avec les 5 équipes ?

Non j'ai besoin comme a l originale 1 fichier qui contiens les 12 mois des 5 équipes

alors, comme ceci ?

Bonjour,

Autre possibilité :

3anarium3.zip (383.61 Ko)

La toupie "Equipe" à été modifiée pour alimenter maintenant directement la cellule R3. Cela ne doit pas être modifié.

Si une des formules est endommagée le fait de changer d'équipe (ou d'année) répare les formules.

Pour le fun je donne aussi la version2 (toutes les années sur une seule feuille) que j'avais fournie en MP et qui est bien plus "light" et plus pratique à utiliser (A mon avis) surtout si on veut y rajouter des stats,

2anarium2.xlsm (150.01 Ko)

Nota : Il ne sera pas fourni d'explications sur la V3 bâtie sur le même principe que la V2...
A+

Merci pour votre aide, je clôture le sujet

Rechercher des sujets similaires à "creer vba planning 2007"