Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Planing cyclique par DRANREB

  • Initiateur de la discussion Initiateur de la discussion fenec
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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.
 
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.
 
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
 
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
 
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:
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:
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

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:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

H
Réponses
2
Affichages
927
H
S
  • Résolu(e)
Réponses
6
Affichages
2 K
Serge6926
S
T
Réponses
3
Affichages
959
A
Réponses
1
Affichages
953
A
Réponses
13
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…