Planing cyclique par DRANREB

fenec

XLDnaute Impliqué
Bonsoir le forum,

j'ouvre cette nouvelle discussion pour ne pas embrouiller celle en cours
Alors voila mon soucis:
je ne parviens pas à faire l'initialisation du code de Dranreb malgré de nombreux essaies en fonction de mon besoin
je vous joint mon fichier avec des commentaires dans le code qui je pense vous aiderons à comprendre ma problématique
Cordialement ,
Philippe.

PS: suis à l'écoute si besoin de complément d'informations
 

Pièces jointes

  • Planning-cyclique.1 (version 1).xls
    140.5 KB · Affichages: 99

Dranreb

XLDnaute Barbatruc
Re : Planing cyclique par DRANREB

Bonjour.

Il y a des choses qui ont changé, il faut aussi les changer dans le programme d'installation.
La première c'est la formule de calcul de L en fonction de N. C'est enfin pareil pour tous les mois mais ce n'est plus 14 + (N -1) * 11 mais 11 + (N - 1) * 8.
Je regarde pour le reste.
 

fenec

XLDnaute Impliqué
Re : Planing cyclique par DRANREB

Bonsoir le forum, Dranreb
Déjà merci pour l'intérêt à mon problème
Je prends déjà votre remarque en compte et vois si je parviens à progresser vu cette remarque
J'ai oublié de vous dire aussi que je rencontre une erreur sur :
Code:
.StopIfTrue = False
Cordialement ,
Philippe.
 

grisan29

XLDnaute Accro
Re : Planing cyclique par DRANREB

bonjour Dranreb, fenec et le forum

bonne année a vous

fenec j'ai rétabli un peu l'ordre dans les with et end with
Code:
Sub Installation()
Dim N&, L&, PLg As Range
 Application.Goto Feuil1.[A1]
 Cells.FormatConditions.Delete
For N = 1 To 12
    If N = 1 Then
       L = 11 ' Ne pouviez vous vraiment pas vous arranger pour que janvier soit en ligne 14 ?    ////  La, je ne comprends pas votre commentaire  /////
   Else      ' Touts les autres mois sont basés sur la 14 :
      L = 14 + (N - 1) * 11
       End If
    Set PLg = [C:AG].Rows(L).Resize(7)    '///////   Ici, je ne parviens pas à modifier pour insérer les formules    ////////
    If N = 2 Then
       Cells(L, "AE").FormulaR1C1 = "=IF(MONTH(SLF)=MONTH(RC2),SLF,"""")"
       Cells(L + 1, "AE").FormulaR1C1 = "=IF(MONTH(SLF)=MONTH(R" & L & "C2),_SLF1,"""")"
       End If
    PLg.Rows(3).Resize(5).FormulaR1C1 = "=CYC(R" & L & "C)"
    
    '///////     Ici je voudrais incrémenter la MFC des postes, soit "M" pour matin, "S" pour soir, "N" pour nuit     /////////
    '///////             j 'ai essayé ceci pour les matins mais ca ne fonctionne pas
    '///////     alors que si je ne passe pas par le vba cela fonctionne comme vous pouvez le constater
    
    ' With PLg.Rows(3).Resize(5).FormatConditions.Add(Type:=xlExpression,
     'Formula1:="=(A$" & L & ";2)=""M""")
       '.Interior.ColorIndex = RGB(255, 255, 160)

       
'/////////     J'ai réussi à modifier votre code en fonction de mon souhait    /////////
  
   With PLg.Resize(7).FormatConditions.Add(Type:=xlExpression, _
       Formula1:="=OU(JOURSEM(A$" & L & ";2)>5;ESTNUM(EQUIV(A$" & L & ";Ferie;0)))")
       .Interior.Color = RGB(199, 255, 151): .Font.Color = RGB(186, 0, 0)
   End With
'////////      Par celui-ci      ///////

    With PLg.Resize(2).FormatConditions.Add(Type:=xlExpression, _
       Formula1:="=(JOURSEM(A$" & L & ";2)>5)")
       .Interior.Color = RGB(255, 255, 0): .Font.Color = RGB(255, 0, 0)
    End With
    
    With PLg.Resize(2).FormatConditions.Add(Type:=xlExpression, _
       Formula1:="=RECHERCHEV(A$" & L & ";Fériés;1;0)")
       .Interior.Color = RGB(96, 255, 0): .Font.Color = RGB(255, 0, 0)
       
      ' .StopIfTrue = False
       
       End With
       
    Next N

End Sub
Pascal
 

fenec

XLDnaute Impliqué
Re : Planing cyclique par DRANREB

Bonsoir le forum, Dranreb, Grisan29

Merci Grisan29 pour ce ménage.
je continue à chercher ma problématique sur les MFC pour les postes l'insertion des formules et aussi sur le cycle qui ne corresponds pas à mon attente

Cordialement,

Philippe
 

Dranreb

XLDnaute Barbatruc
Re : Planing cyclique par DRANREB

Quels problème rencontrez vous au juste ? Ça devrait être réglé depuis le temps, une fois mis L = 11 + (N - 1) * 8 derrière le For N = 1 To 12 (puisque il n'y a plus les 3 ligne en plus derrière Janvier qui faisaient que sa ligne ne pouvait pas être calculée comme celle des autres mois).
 
Dernière édition:

fenec

XLDnaute Impliqué
Re : Planing cyclique par DRANREB

Re à tous et meilleurs vœux à tous

Vous joint un fichier avec ma problématique qui je pense sera plus parlant que de long discours.

Cordialement,

Philippe.
 

Pièces jointes

  • Planing-cyclique version-1-.xls
    142.5 KB · Affichages: 83

Dranreb

XLDnaute Barbatruc
Re : Planing cyclique par DRANREB

Enlevez le If N = 1 Then: Il ne sert plus à rien puisque désormais janvier est cadré comme les autres mois.
Et c'est L = 11 + (N - 1) * 8 pour tous les mois, pas seulement janvier.

Ah et puis vous avez tout avancé d'une colonne vers la droite alors les formules pour les années bissextiles c'est la colonne C, donc $C19 et non plus $B19 en notation A1, soit RC3 et non plus RC2 en notation R1C1. Ça donne pour le début :
VB:
For N = 1 To 12
    L = 11 + (N - 1) * 8
    Set PLg = [C:AG].Rows(L).Resize(7)
    If N = 2 Then
       Cells(L, "AE").FormulaR1C1 = "=IF(MONTH(SLF)=MONTH(RC3),SLF,"""")"
       Cells(L + 1, "AE").FormulaR1C1 = "=IF(MONTH(SLF)=MONTH(R" & L & "C3),_SLF1,"""")"
       End If
Et j'ai du changer les Resize(2).FormatConditions.Add(Type:=xlExpression, Formula1:="=(JOURSEM(C$" & L & ";2)>5)") pour la même raison.

Pour les autre mises en formes conditionnelles vous devriez pouvoir vous baser sur ce modèle :
VB:
    With PLg.Offset(2).Resize(5).FormatConditions.Add(Type:=xlCellValue, _
       Operator:=xlEqual, Formula1:="=""M""")
       .Interior.Color = RGB(0, 255, 255)
       End With
 
Dernière édition:

fenec

XLDnaute Impliqué
Re : Planing cyclique par DRANREB

Bonsoir le forum, Dranreb

Suis parvenu grâce à vos conseils à appliquer les modifications et les MFC.

Seul reste le problème des postes qui ne correspond pas à ce que je devrais obtenir.

Vous joint mon fichier avec ce que je devrais obtenir.

Pardonnez moi si j'abuse mais je ne parviens pas à trouver.

Cordialement,

Philippe.
 

Pièces jointes

  • Planing-cyclique version-2-.xls
    149 KB · Affichages: 99

Dranreb

XLDnaute Barbatruc
Re : Planing cyclique par DRANREB

Ce cycle exact particulier peut être obtenu en modifiant comme suit la fonction CYC (j'ai laissé en commentaire l'ancienne formule)
VB:
Function CYC(ByVal D As Range) As String
Const Z = "MMMM---NNN--SSSS--MMM---NNNN--SSS--"
If Not IsDate(D.Value) Then Exit Function
' CYC = Mid$(Z, (D.Value - (Application.Caller.Row - D.Row) * 7 - 2) Mod 35 + 1, 1)
 CYC = Mid$(Z, (D.Value - 9 + (Application.Caller.Row - D.Row) * 14) Mod 35 + 1, 1)
End Function
Je ne pensais pas que ça avait une importance du moment que chaque jour une équipe est affectée aux 3 postes et que chacune observe le même cycle.
On obtient d'ailleurs le même résultat avec :
VB:
CYC = Mid$(Z, (D.Value - 9 - (Application.Caller.Row - D.Row) * 21) Mod 35 + 1, 1)
En tout cas les débuts de cycles ne se suivent plus à 7 jours immédiatement d'une équipe à l'autre.
 
Dernière édition: