VBA boucle pour protéger jour fériés dans fichier joins
Résolu
PHILOU10120
Messages postés
6445
Date d'inscription
Statut
Contributeur
Dernière intervention
-
PHILOU10120 Messages postés 6445 Date d'inscription Statut Contributeur Dernière intervention -
PHILOU10120 Messages postés 6445 Date d'inscription Statut Contributeur Dernière intervention -
A voir également:
- VBA boucle pour protéger jour fériés dans fichier joins
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
5 réponses
Bonjour,
mettre une protection sur les 5 dates mobiles
Pas très précis, on va supposer, tu adapteras.
A tester :
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
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
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
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 :
<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
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
A+
Maurice
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 macro
ça peux te servire
A+
Maurice
j'ais modifier aussi tes macro
Sub 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
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
Teste en pas à pas en mettant .activate devant .Unprotect, en remplaçant .Locked = True par .select, fait F1 sur les fonctions inconnues et revient s'il te reste des questions.
eric