VBA boucle pour protéger jour fériés dans fichier joins
Résolu/Fermé
PHILOU10120
Messages postés
6393
Date d'inscription
lundi 16 avril 2012
Statut
Contributeur
Dernière intervention
9 octobre 2024
-
26 juin 2015 à 19:27
PHILOU10120 Messages postés 6393 Date d'inscription lundi 16 avril 2012 Statut Contributeur Dernière intervention 9 octobre 2024 - 29 juin 2015 à 12:58
PHILOU10120 Messages postés 6393 Date d'inscription lundi 16 avril 2012 Statut Contributeur Dernière intervention 9 octobre 2024 - 29 juin 2015 à 12:58
A voir également:
- VBA boucle pour protéger jour fériés dans fichier joins
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier host - Guide
- Ouvrir fichier .bin - Guide
5 réponses
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 247
Modifié par eriiic le 26/06/2015 à 20:25
Modifié par eriiic le 26/06/2015 à 20:25
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
PHILOU10120
Messages postés
6393
Date d'inscription
lundi 16 avril 2012
Statut
Contributeur
Dernière intervention
9 octobre 2024
810
27 juin 2015 à 09:20
27 juin 2015 à 09:20
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
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 247
Modifié par eriiic le 27/06/2015 à 09:57
Modifié par eriiic le 27/06/2015 à 09:57
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
PHILOU10120
Messages postés
6393
Date d'inscription
lundi 16 avril 2012
Statut
Contributeur
Dernière intervention
9 octobre 2024
810
>
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
27 juin 2015 à 12:37
27 juin 2015 à 12:37
Pour .Activate je ne t'avais compris donc j'ai fais une bétise
Pour le déverrouillage il est fait sur la même année puisse qu'on ne peut pas changer l'année sans passer par la Macro montre tout dans laquelle j'ai ajouté ton VBA
et mis en Locked= false
Merci beaucoup pour ton aide
Pour le déverrouillage il est fait sur la même année puisse qu'on ne peut pas changer l'année sans passer par la Macro montre tout dans laquelle j'ai ajouté ton VBA
et mis en Locked= false
Merci beaucoup pour ton aide
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
PHILOU10120
Messages postés
6393
Date d'inscription
lundi 16 avril 2012
Statut
Contributeur
Dernière intervention
9 octobre 2024
810
27 juin 2015 à 19:23
27 juin 2015 à 19:23
Bonjour
Oui cela fonctionne, comme pour Eriiic j'ai étendu le champ de D54 à V208 tout est Ok
Merci à vous deux
Oui cela fonctionne, comme pour Eriiic j'ai étendu le champ de D54 à V208 tout est Ok
Merci à vous deux
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
PHILOU10120
Messages postés
6393
Date d'inscription
lundi 16 avril 2012
Statut
Contributeur
Dernière intervention
9 octobre 2024
810
27 juin 2015 à 21:09
27 juin 2015 à 21:09
Je regarderai vos macros Merci beaucoup
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
voila le fichier modifier
avec No.semaine
http://www.cjoint.com/c/EFDjdT8iz0I
A+
Maurice
PHILOU10120
Messages postés
6393
Date d'inscription
lundi 16 avril 2012
Statut
Contributeur
Dernière intervention
9 octobre 2024
810
29 juin 2015 à 12:58
29 juin 2015 à 12:58
la formule pour le numéro de semaine pour la France
=No.SEMAINE(C54;21)
=No.SEMAINE(C54;21)
26 juin 2015 à 21:32
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
Modifié par eriiic le 26/06/2015 à 22:58
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