VBA boucle pour protéger jour fériés dans fichier joins
Résolu
PHILOU10120
Messages postés
6463
Date d'inscription
Statut
Contributeur
Dernière intervention
-
PHILOU10120 Messages postés 6463 Date d'inscription Statut Contributeur Dernière intervention -
PHILOU10120 Messages postés 6463 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai ouvert un nouveau sujet pour avoir de l'aide sur Le VBA
J'ai besoin d'aide pour finaliser ce fichier MERCI aux bonnes volontés
Le fichier modifié, il ne reste plus qu'a insérer dans la macro masque de saisie une boucle pour mettre une protection sur les 5 dates mobiles : Pâques dimanche et Lundi, le jeudi de l'ascension et le dimanche et le lundi de Pentecôte suivant la feuille jour fériés
Et enlever cette protection dans la macro montre tout
Les personnes maitrisant le langage VBA vont nous aider
Je joins la dernière version du fichier
http://www.cjoint.com/c/EFAnReQEyEx
--
C'est en forgeant que l'on devient forgeron. - C'est au pied du mur que l'on voit le maçon - on apprend toujours de ses erreurs
J'ai ouvert un nouveau sujet pour avoir de l'aide sur Le VBA
J'ai besoin d'aide pour finaliser ce fichier MERCI aux bonnes volontés
Le fichier modifié, il ne reste plus qu'a insérer dans la macro masque de saisie une boucle pour mettre une protection sur les 5 dates mobiles : Pâques dimanche et Lundi, le jeudi de l'ascension et le dimanche et le lundi de Pentecôte suivant la feuille jour fériés
Et enlever cette protection dans la macro montre tout
Les personnes maitrisant le langage VBA vont nous aider
Je joins la dernière version du fichier
http://www.cjoint.com/c/EFAnReQEyEx
--
C'est en forgeant que l'on devient forgeron. - C'est au pied du mur que l'on voit le maçon - on apprend toujours de ses erreurs
5 réponses
-
Bonjour,
mettre une protection sur les 5 dates mobiles
Pas très précis, on va supposer, tu adapteras.
A tester :Sub verrouFeries() Dim c As Range With Worksheets("fériés") For Each c In Range(.[D3], .[D3].End(xlDown)) With Sheets(Format(c, "mmmm")) .Unprotect "PHILOU" If .[E52] = Year(c) Then .[G54].Offset((Day(c) - 1) * 5).Resize(5, 16).Locked = True .Protect "PHILOU" End With Next c End With End Sub
Je fais tous les fériés, tu peux tester le début de la formule de date =" si tu veux vraiment restreindre aux fêtes mobiles.
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci-
Bonsoir Eriiic
Pour être plus précis dans une feuille mensuelle contrôler les dates colonne C et si la date appartient à la liste des jours fériés, appliquer un format (protection Masquer et verrouiller) sur les cellules de la colonne D à V de cette ligne.
répéter cela sur les douze feuilles mensuelles
Et il faudra une deuxième pour enlever cette protection au moment ou on montre tout
Merci de mettre les détails des actions sur les macros pour que je comprenne bien -
-
-
Bonjour Eriiic
J'ai un problème pour passer de janvier au mois suivant la macro bloque sur cette ligne à partir de .[G54]....
If .[E52] = Year(c) Then .[G54].Offset((Day(c) - 1) * 5).Resize(5, 16).Select 'Locked = True
Pouvez-vous détailler cette ligne.
Merci
le lien du fichier
http://www.cjoint.com/c/EFBhtqYzYFx-
Bonjour,
C'est quoi ça : ActiveSheet.Unprotect "PHILOU" ?
Il faut :.Activate .Unprotect "PHILOU" 'enlever la protection de la feuille
If .[E52] = Year(c) Then .[G54].Offset((Day(c) - 1) * 5).Resize(5, 16).Select 'Locked = True
<si l'année feuille est correcte, à partir de G54 se décaler de x fois 5 lignes pour être sur le bon jour et sélectionner une plage de 5 lignes, 16 colonnes.
Et tu devrais ajouter au début le déverrouillage complet du mois, sinon si c'est repris d'une année antérieure il y aura des jours verrouillés à tort.
eric
-
-
Bonjour
Voila une macro pour bloquer les jours ferier
Sub Test() Onglet = Array(Feuil1.Name, Feuil2.Name, Feuil3.Name, Feuil4.Name, Feuil5.Name, Feuil6.Name, _ Feuil7.Name, Feuil8.Name, Feuil9.Name, Feuil10.Name, Feuil11.Name, Feuil12.Name) For TT = LBound(Onglet) To UBound(Onglet) Sheets(Onglet(TT)).Select ActiveSheet.Unprotect Password:="PHILOU" Range("G54:V208").Locked = False For L = 54 To 208 Step 5 MaDate = Range("C" & L).Value For Each Cell In Feuil14.Range("D3:D15") If MaDate = CDate(Cell.Value) Then Range("G" & L & ":V" & L + 4).Locked = True End If Next Next ActiveSheet.Protect Password:="PHILOU" Next Sheets(Onglet(0)).Select End Sub
A+
Maurice -
Re
j'ais modifier aussi tes macroSub MontreTout() Onglet = Array(Feuil1.Name, Feuil2.Name, Feuil3.Name, Feuil4.Name, Feuil5.Name, Feuil6.Name, _ Feuil7.Name, Feuil8.Name, Feuil9.Name, Feuil10.Name, Feuil11.Name, Feuil12.Name) For TT = LBound(Onglet) To UBound(Onglet) Sheets(Onglet(TT)).Select ActiveSheet.Unprotect Password:="PHILOU" ActiveWindow.FreezePanes = False Cells.Select Selection.EntireColumn.Hidden = False Selection.EntireRow.Hidden = False Application.Goto Range("A51"), True Next Sheets(Onglet(0)).Select End Sub Sub MasqueSaisie() Onglet = Array(Feuil1.Name, Feuil2.Name, Feuil3.Name, Feuil4.Name, Feuil5.Name, Feuil6.Name, _ Feuil7.Name, Feuil8.Name, Feuil9.Name, Feuil10.Name, Feuil11.Name, Feuil12.Name) For TT = LBound(Onglet) To UBound(Onglet) Sheets(Onglet(TT)).Select ActiveSheet.Unprotect Password:="PHILOU" Columns(1).EntireColumn.Hidden = True Columns(3).EntireColumn.Hidden = True Application.Goto Range("A51"), True Range("A54").Select ActiveWindow.FreezePanes = True ActiveSheet.Protect "PHILOU" Next Sheets(Onglet(0)).Select End Sub
ça peux te servire
A+
Maurice -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonjour
voila le fichier modifier
avec No.semaine
http://www.cjoint.com/c/EFDjdT8iz0I
A+
Maurice