Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

afficher une feuille cachée "xlVeryHidden"

2 réponses
Avatar
Patrice C.
Bonjour
J'ai mis en place dans un classeur une macro trouvée sur le site de F.S.
concernant les jours fériés
J'ai demandé les jours de 2004 et 2005
Je voudrais afficher la feuille ou se trouve ces jours mais je n'y arrive
pas.
D'autant plus que je ne sais pas sous quel nom elle est créée.
J'ai fait une petie macro:
Sub Show()
Sheets("Jours fériés").Visible = True
End Sub
mais ça ne fonctionne pas(erreur 9)
Pouvez vous m'aider? Merci d'avance
Voici la macro qui est assez longue
-----------
Sub EcritFeries()
Dim DimanchePaques, Saisie, Nom, An
Dim sht As Worksheet, Valide As Boolean
Dim posTiret, posPVirg, tabAns(), tabDetails
Dim i, j, AnUn, AnFin, Période, tmpS
Dim Titre$, Msg$, ModeEmploi$
Set sht = ActiveWorkbook.ActiveSheet
Titre = "Jours fériés"
Msg = "Établir une liste de jours fériés pour une ou plusieurs années." _
& vbLf & vbLf
ModeEmploi = "Période autorisée : 1900-2099" & vbLf & _
"(les années doivent être saisies avec 4 chiffres)" & vbLf & _
"Séparateurs autorisés : ';' (point virgule), '-' (tiret)" & vbLf &
_
"Vous pouvez saisir :" & vbLf & _
" - une ou des années isolées (2001;2002)" & vbLf & _
" - ou des séries d'années (2001-2003)" & vbLf & _
" - ou les deux (2001;2003-2007;2010)"
'saisie et contrôle de la saisie
Do
Valide = True
Saisie = InputBox(Msg & ModeEmploi, Titre)
'aucune date saisie ou clic sur Annuler
If Saisie = "" Then Exit Sub
'contrôle de la saisie
'exemple de saisie : 2001;2002;2010-2012
'A- Récupération des éléments de la saisie
' 1- année(s) isolée(s) ou séries : séparées par des points virgule
' ex : 2001;2002;2010-2012 --> 3 éléments
tmpS = Saisie & ";": i = 0: ReDim tabAns(i)
posPVirg = InStr(1, tmpS, ";")
Do
tabAns(i) = Left(tmpS, posPVirg - 1)
'1er contrôle :
'les éléments doivent avoir 4 (année isolée) ou 9 (série) caractères
If Not (Len(tabAns(i)) = 4 Or Len(tabAns(i)) = 9) Then
Valide = False
Exit Do
End If
tmpS = Right(tmpS, Len(tmpS) - posPVirg)
posPVirg = InStr(1, tmpS, ";")
If posPVirg <> 0 Then
i = i + 1
ReDim Preserve tabAns(i)
End If
Loop Until posPVirg = 0
' 2- séries d'années : séparées par des tirets
' ex : si 2010-2012 --> restituer 2010,2011,2012
' sinon, conserver les éléments isolés (2001,2002)
If Valide Then
j = 0: ReDim tabDetails(j)
For i = LBound(tabAns) To UBound(tabAns)
tmpS = tabAns(i)
posTiret = InStr(1, tmpS, "-")
If posTiret <> 0 Then
AnUn = Left(tmpS, posTiret - 1)
AnFin = Right(tmpS, Len(tmpS) - posTiret)
'2ème contrôle :
'la dernière année d'une série doit être plus grande
'que la première...
If AnFin < AnUn Then
Valide = False
Exit For
End If
tabDetails(j) = AnUn
Do While tabDetails(j) < AnFin
j = j + 1: ReDim Preserve tabDetails(j)
'3ème contrôle :
'les éléments d'une série doivent être des nombres
On Error Resume Next
tabDetails(j) = CStr(CLng(tabDetails(j - 1) + 1))
If Err <> 0 Then
On Error GoTo 0
Valide = False
Exit Do
Exit For
End If
Loop
Else
tabDetails(j) = tabAns(i)
End If
If i < UBound(tabAns) Then
j = j + 1: ReDim Preserve tabDetails(j)
End If
Next
End If
'4ème contrôle :
'contôle de la plage des dates saisies
If Valide Then
For i = LBound(tabDetails) To UBound(tabDetails)
An = tabDetails(i)
If An < 1900 Or An > 2099 Then Valide = False
Exit For
Next
End If
'si saisie non valide, RAZ des tableaux
If Not Valide Then
Erase tabAns: Erase tabDetails
End If
Loop Until Valide 'fin saisie et contrôle de la saisie
'nouvelle feuille pour écrire la liste
ActiveWorkbook.Sheets.Add
On Error Resume Next
ActiveSheet.Name = "Fériés " & Saisie
If Err <> 0 Then
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
MsgBox "La liste des fériés pour " & Saisie & _
" existe déjà dans ce classeur."
Exit Sub
End If
'écriture de la liste
For i = LBound(tabDetails) To UBound(tabDetails)
An = tabDetails(i)
'Cette formule interminable est de Jean-Paul Mesters (Windows News
06/2001)
'Elle donne la date du dimanche de Pâques jusqu'en 2099. Elle présente
'l'intérêt d'être insensible au calendrier du classeur (1900/1904)
DimanchePaques = "=DATE(" & An & ";SI((25-MOD((11*MOD(" & An & _
"-1900;19)+4-ENT((7*MOD(" & An & "-1900;19)+1)/19));29)-MOD(" & An &
_
"-1900+ENT((" & An & "-1900)/4)+31-MOD((11*MOD(" & An & _
"-1900;19)+4-ENT((7*MOD(" & An & _
"-1900;19)+1)/19));29);7))>0;4;3);SI((25-MOD((11*MOD(" & An & _
"-1900;19)+4-ENT((7*MOD(" & An & _
"-1900;19)+1)/19));29)-MOD(" & An & "-1900+ENT((" & An & _
"-1900)/4)+31-MOD((11*MOD(" & An & "-1900;19)+4-ENT((7*MOD(" & An &
_
"-1900;19)+1)/19));29);7))>0;(25-MOD((11*MOD(" & An & _
"-1900;19)+4-ENT((7*MOD(" & An & "-1900;19)+1)/19));29)-MOD(" & An &
_
"-1900+ENT((" & An & "-1900)/4)+31-MOD((11*MOD(" & An & _
"-1900;19)+4-ENT((7*MOD(" & An & _
"-1900;19)+1)/19));29);7));31+(25-MOD((11*MOD(" & An & _
"-1900;19)+4-ENT((7*MOD(" & An & _
"-1900;19)+1)/19));29)-MOD(" & An & "-1900+ENT((" & An & _
"-1900)/4)+31-MOD((11*MOD(" & An & "-1900;19)+4-ENT((7*MOD(" & An &
_
"-1900;19)+1)/19));29);7))))"
'Modifier le chiffre 11 pour adapter la macro
'au nombre de jours fériés souhaité
Range("A" & (i * 11) + 1).Select
'liste des fériés (modifiable)
ActiveCell(1).FormulaLocal = "=Date(" & An & ";1;1)" 'jour de l'an
ActiveCell(2).FormulaLocal = DimanchePaques & "+1" 'lundi Pâques
ActiveCell(3).FormulaLocal = DimanchePaques & "+39" 'jeudi Ascencion
ActiveCell(4).FormulaLocal = DimanchePaques & "+50" 'lundi Pentecôte
ActiveCell(5).FormulaLocal = "=Date(" & An & ";5;1)" 'fête du travail
ActiveCell(6).FormulaLocal = "=Date(" & An & ";5;8)" 'victoire 1945
ActiveCell(7).FormulaLocal = "=Date(" & An & ";7;14)" 'fête nationale
ActiveCell(8).FormulaLocal = "=Date(" & An & ";8;15)" 'assomption
ActiveCell(9).FormulaLocal = "=Date(" & An & ";11;1)" 'toussaint
ActiveCell(10).FormulaLocal = "=Date(" & An & ";11;11)" 'armistice 1918
ActiveCell(11).FormulaLocal = "=Date(" & An & ";12;25)" 'noël
Next i
'tri, définition d'un nom et format des dates
Range("A1").Select
'(modifier le chiffre 11 si nombre jours fériés modifié)
ActiveCell.Range("A1:A" & i * 11).Select
ActiveCell.Sort ActiveCell
'changer ou supprimer les caractères interdits dans les noms
Nom = Application.WorksheetFunction.Substitute(Saisie, ";", "_")
Nom = Application.WorksheetFunction.Substitute(Nom, "-", "")
Nom = "Feries" & Nom
ActiveWorkbook.Names.Add Nom, Selection
Selection.NumberFormatLocal = "jj/mm/aaaa"
'masquage de la feuille (la plage nommée reste accessible)
ActiveSheet.Visible = xlVeryHidden
sht.Select
End Sub

--
Cordialement
Patrice CASADEI

2 réponses

Avatar
Nicolas B.
Salut Patrice,

Apparemment, la feuille s'appelle "Fériés ".
Par macro :
sheet("Fériés ").Visible = xlSheetVisible

Sinon, dans VBA, tu as dans l'explorateur de projets la liste des feuilles
du classeur. Clique sur celle qui est cachée et affiche ses propriétés.
Modifie alors la propriété Visible.


A+
--
Nicolas B.


Bonjour
J'ai mis en place dans un classeur une macro trouvée sur le site de
F.S. concernant les jours fériés
J'ai demandé les jours de 2004 et 2005
Je voudrais afficher la feuille ou se trouve ces jours mais je n'y
arrive pas.
D'autant plus que je ne sais pas sous quel nom elle est créée.
J'ai fait une petie macro:
Sub Show()
Sheets("Jours fériés").Visible = True
End Sub
mais ça ne fonctionne pas(erreur 9)
Pouvez vous m'aider? Merci d'avance
Voici la macro qui est assez longue
-----------
Sub EcritFeries()
Dim DimanchePaques, Saisie, Nom, An
Dim sht As Worksheet, Valide As Boolean
Dim posTiret, posPVirg, tabAns(), tabDetails
Dim i, j, AnUn, AnFin, Période, tmpS
Dim Titre$, Msg$, ModeEmploi$
Set sht = ActiveWorkbook.ActiveSheet
Titre = "Jours fériés"
Msg = "Établir une liste de jours fériés pour une ou plusieurs
années." _ & vbLf & vbLf
ModeEmploi = "Période autorisée : 1900-2099" & vbLf & _
"(les années doivent être saisies avec 4 chiffres)" & vbLf & _
"Séparateurs autorisés : ';' (point virgule), '-' (tiret)" &
vbLf & _
"Vous pouvez saisir :" & vbLf & _
" - une ou des années isolées (2001;2002)" & vbLf & _
" - ou des séries d'années (2001-2003)" & vbLf & _
" - ou les deux (2001;2003-2007;2010)"
'saisie et contrôle de la saisie
Do
Valide = True
Saisie = InputBox(Msg & ModeEmploi, Titre)
'aucune date saisie ou clic sur Annuler
If Saisie = "" Then Exit Sub
'contrôle de la saisie
'exemple de saisie : 2001;2002;2010-2012
'A- Récupération des éléments de la saisie
' 1- année(s) isolée(s) ou séries : séparées par des points
virgule ' ex : 2001;2002;2010-2012 --> 3 éléments
tmpS = Saisie & ";": i = 0: ReDim tabAns(i)
posPVirg = InStr(1, tmpS, ";")
Do
tabAns(i) = Left(tmpS, posPVirg - 1)
'1er contrôle :
'les éléments doivent avoir 4 (année isolée) ou 9 (série)
caractères If Not (Len(tabAns(i)) = 4 Or Len(tabAns(i)) = 9)
Then Valide = False
Exit Do
End If
tmpS = Right(tmpS, Len(tmpS) - posPVirg)
posPVirg = InStr(1, tmpS, ";")
If posPVirg <> 0 Then
i = i + 1
ReDim Preserve tabAns(i)
End If
Loop Until posPVirg = 0
' 2- séries d'années : séparées par des tirets
' ex : si 2010-2012 --> restituer 2010,2011,2012
' sinon, conserver les éléments isolés (2001,2002)
If Valide Then
j = 0: ReDim tabDetails(j)
For i = LBound(tabAns) To UBound(tabAns)
tmpS = tabAns(i)
posTiret = InStr(1, tmpS, "-")
If posTiret <> 0 Then
AnUn = Left(tmpS, posTiret - 1)
AnFin = Right(tmpS, Len(tmpS) - posTiret)
'2ème contrôle :
'la dernière année d'une série doit être plus grande
'que la première...
If AnFin < AnUn Then
Valide = False
Exit For
End If
tabDetails(j) = AnUn
Do While tabDetails(j) < AnFin
j = j + 1: ReDim Preserve tabDetails(j)
'3ème contrôle :
'les éléments d'une série doivent être des nombres
On Error Resume Next
tabDetails(j) = CStr(CLng(tabDetails(j - 1) + 1))
If Err <> 0 Then
On Error GoTo 0
Valide = False
Exit Do
Exit For
End If
Loop
Else
tabDetails(j) = tabAns(i)
End If
If i < UBound(tabAns) Then
j = j + 1: ReDim Preserve tabDetails(j)
End If
Next
End If
'4ème contrôle :
'contôle de la plage des dates saisies
If Valide Then
For i = LBound(tabDetails) To UBound(tabDetails)
An = tabDetails(i)
If An < 1900 Or An > 2099 Then Valide = False
Exit For
Next
End If
'si saisie non valide, RAZ des tableaux
If Not Valide Then
Erase tabAns: Erase tabDetails
End If
Loop Until Valide 'fin saisie et contrôle de la saisie
'nouvelle feuille pour écrire la liste
ActiveWorkbook.Sheets.Add
On Error Resume Next
ActiveSheet.Name = "Fériés " & Saisie
If Err <> 0 Then
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
MsgBox "La liste des fériés pour " & Saisie & _
" existe déjà dans ce classeur."
Exit Sub
End If
'écriture de la liste
For i = LBound(tabDetails) To UBound(tabDetails)
An = tabDetails(i)
'Cette formule interminable est de Jean-Paul Mesters (Windows News
06/2001)
'Elle donne la date du dimanche de Pâques jusqu'en 2099. Elle
présente 'l'intérêt d'être insensible au calendrier du classeur
(1900/1904) DimanchePaques = "ÚTE(" & An &
";SI((25-MOD((11*MOD(" & An & _ "-1900;19)+4-ENT((7*MOD(" &
An & "-1900;19)+1)/19));29)-MOD(" & An & _
"-1900+ENT((" & An & "-1900)/4)+31-MOD((11*MOD(" & An & _
"-1900;19)+4-ENT((7*MOD(" & An & _
"-1900;19)+1)/19));29);7))>0;4;3);SI((25-MOD((11*MOD(" & An &
_ "-1900;19)+4-ENT((7*MOD(" & An & _
"-1900;19)+1)/19));29)-MOD(" & An & "-1900+ENT((" & An & _
"-1900)/4)+31-MOD((11*MOD(" & An & "-1900;19)+4-ENT((7*MOD("
& An & _
"-1900;19)+1)/19));29);7))>0;(25-MOD((11*MOD(" & An & _
"-1900;19)+4-ENT((7*MOD(" & An & "-1900;19)+1)/19));29)-MOD("
& An & _
"-1900+ENT((" & An & "-1900)/4)+31-MOD((11*MOD(" & An & _
"-1900;19)+4-ENT((7*MOD(" & An & _
"-1900;19)+1)/19));29);7));31+(25-MOD((11*MOD(" & An & _
"-1900;19)+4-ENT((7*MOD(" & An & _
"-1900;19)+1)/19));29)-MOD(" & An & "-1900+ENT((" & An & _
"-1900)/4)+31-MOD((11*MOD(" & An & "-1900;19)+4-ENT((7*MOD("
& An & _
"-1900;19)+1)/19));29);7))))"
'Modifier le chiffre 11 pour adapter la macro
'au nombre de jours fériés souhaité
Range("A" & (i * 11) + 1).Select
'liste des fériés (modifiable)
ActiveCell(1).FormulaLocal = "Úte(" & An & ";1;1)" 'jour de l'an
ActiveCell(2).FormulaLocal = DimanchePaques & "+1" 'lundi Pâques
ActiveCell(3).FormulaLocal = DimanchePaques & "+39" 'jeudi
Ascencion ActiveCell(4).FormulaLocal = DimanchePaques & "+50"
'lundi Pentecôte ActiveCell(5).FormulaLocal = "Úte(" & An &
";5;1)" 'fête du travail ActiveCell(6).FormulaLocal = "Úte(" &
An & ";5;8)" 'victoire 1945 ActiveCell(7).FormulaLocal = "Úte("
& An & ";7;14)" 'fête nationale ActiveCell(8).FormulaLocal > "Úte(" & An & ";8;15)" 'assomption ActiveCell(9).FormulaLocal > "Úte(" & An & ";11;1)" 'toussaint ActiveCell(10).FormulaLocal > "Úte(" & An & ";11;11)" 'armistice 1918
ActiveCell(11).FormulaLocal = "Úte(" & An & ";12;25)" 'noël Next i
'tri, définition d'un nom et format des dates
Range("A1").Select
'(modifier le chiffre 11 si nombre jours fériés modifié)
ActiveCell.Range("A1:A" & i * 11).Select
ActiveCell.Sort ActiveCell
'changer ou supprimer les caractères interdits dans les noms
Nom = Application.WorksheetFunction.Substitute(Saisie, ";", "_")
Nom = Application.WorksheetFunction.Substitute(Nom, "-", "")
Nom = "Feries" & Nom
ActiveWorkbook.Names.Add Nom, Selection
Selection.NumberFormatLocal = "jj/mm/aaaa"
'masquage de la feuille (la plage nommée reste accessible)
ActiveSheet.Visible = xlVeryHidden
sht.Select
End Sub

--
Cordialement
Patrice CASADEI


Avatar
Patrice C.
Bonjour Nicolas
C'est, comme toujours, parfait
C'est ce qu'il me fallait
Merci beaucoup
Cordialement
Patrice C
pour m'écrire enlever "spammeuroubliezmoi_"


"Nicolas B." a écrit dans le message de
news:OXg$
Salut Patrice,

Apparemment, la feuille s'appelle "Fériés ".
Par macro :
sheet("Fériés ").Visible = xlSheetVisible

Sinon, dans VBA, tu as dans l'explorateur de projets la liste des feuilles
du classeur. Clique sur celle qui est cachée et affiche ses propriétés.
Modifie alors la propriété Visible.


A+
--
Nicolas B.


Bonjour
J'ai mis en place dans un classeur une macro trouvée sur le site de
F.S. concernant les jours fériés
J'ai demandé les jours de 2004 et 2005
Je voudrais afficher la feuille ou se trouve ces jours mais je n'y
arrive pas.
D'autant plus que je ne sais pas sous quel nom elle est créée.
J'ai fait une petie macro:
Sub Show()
Sheets("Jours fériés").Visible = True
End Sub
mais ça ne fonctionne pas(erreur 9)
Pouvez vous m'aider? Merci d'avance
Voici la macro qui est assez longue
-----------
Sub EcritFeries()
Dim DimanchePaques, Saisie, Nom, An
Dim sht As Worksheet, Valide As Boolean
Dim posTiret, posPVirg, tabAns(), tabDetails
Dim i, j, AnUn, AnFin, Période, tmpS
Dim Titre$, Msg$, ModeEmploi$
Set sht = ActiveWorkbook.ActiveSheet
Titre = "Jours fériés"
Msg = "Établir une liste de jours fériés pour une ou plusieurs
années." _ & vbLf & vbLf
ModeEmploi = "Période autorisée : 1900-2099" & vbLf & _
"(les années doivent être saisies avec 4 chiffres)" & vbLf & _
"Séparateurs autorisés : ';' (point virgule), '-' (tiret)" &
vbLf & _
"Vous pouvez saisir :" & vbLf & _
" - une ou des années isolées (2001;2002)" & vbLf & _
" - ou des séries d'années (2001-2003)" & vbLf & _
" - ou les deux (2001;2003-2007;2010)"
'saisie et contrôle de la saisie
Do
Valide = True
Saisie = InputBox(Msg & ModeEmploi, Titre)
'aucune date saisie ou clic sur Annuler
If Saisie = "" Then Exit Sub
'contrôle de la saisie
'exemple de saisie : 2001;2002;2010-2012
'A- Récupération des éléments de la saisie
' 1- année(s) isolée(s) ou séries : séparées par des points
virgule ' ex : 2001;2002;2010-2012 --> 3 éléments
tmpS = Saisie & ";": i = 0: ReDim tabAns(i)
posPVirg = InStr(1, tmpS, ";")
Do
tabAns(i) = Left(tmpS, posPVirg - 1)
'1er contrôle :
'les éléments doivent avoir 4 (année isolée) ou 9 (série)
caractères If Not (Len(tabAns(i)) = 4 Or Len(tabAns(i)) = 9)
Then Valide = False
Exit Do
End If
tmpS = Right(tmpS, Len(tmpS) - posPVirg)
posPVirg = InStr(1, tmpS, ";")
If posPVirg <> 0 Then
i = i + 1
ReDim Preserve tabAns(i)
End If
Loop Until posPVirg = 0
' 2- séries d'années : séparées par des tirets
' ex : si 2010-2012 --> restituer 2010,2011,2012
' sinon, conserver les éléments isolés (2001,2002)
If Valide Then
j = 0: ReDim tabDetails(j)
For i = LBound(tabAns) To UBound(tabAns)
tmpS = tabAns(i)
posTiret = InStr(1, tmpS, "-")
If posTiret <> 0 Then
AnUn = Left(tmpS, posTiret - 1)
AnFin = Right(tmpS, Len(tmpS) - posTiret)
'2ème contrôle :
'la dernière année d'une série doit être plus grande
'que la première...
If AnFin < AnUn Then
Valide = False
Exit For
End If
tabDetails(j) = AnUn
Do While tabDetails(j) < AnFin
j = j + 1: ReDim Preserve tabDetails(j)
'3ème contrôle :
'les éléments d'une série doivent être des nombres
On Error Resume Next
tabDetails(j) = CStr(CLng(tabDetails(j - 1) + 1))
If Err <> 0 Then
On Error GoTo 0
Valide = False
Exit Do
Exit For
End If
Loop
Else
tabDetails(j) = tabAns(i)
End If
If i < UBound(tabAns) Then
j = j + 1: ReDim Preserve tabDetails(j)
End If
Next
End If
'4ème contrôle :
'contôle de la plage des dates saisies
If Valide Then
For i = LBound(tabDetails) To UBound(tabDetails)
An = tabDetails(i)
If An < 1900 Or An > 2099 Then Valide = False
Exit For
Next
End If
'si saisie non valide, RAZ des tableaux
If Not Valide Then
Erase tabAns: Erase tabDetails
End If
Loop Until Valide 'fin saisie et contrôle de la saisie
'nouvelle feuille pour écrire la liste
ActiveWorkbook.Sheets.Add
On Error Resume Next
ActiveSheet.Name = "Fériés " & Saisie
If Err <> 0 Then
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
MsgBox "La liste des fériés pour " & Saisie & _
" existe déjà dans ce classeur."
Exit Sub
End If
'écriture de la liste
For i = LBound(tabDetails) To UBound(tabDetails)
An = tabDetails(i)
'Cette formule interminable est de Jean-Paul Mesters (Windows News
06/2001)
'Elle donne la date du dimanche de Pâques jusqu'en 2099. Elle
présente 'l'intérêt d'être insensible au calendrier du classeur
(1900/1904) DimanchePaques = "ÚTE(" & An &
";SI((25-MOD((11*MOD(" & An & _ "-1900;19)+4-ENT((7*MOD(" &
An & "-1900;19)+1)/19));29)-MOD(" & An & _
"-1900+ENT((" & An & "-1900)/4)+31-MOD((11*MOD(" & An & _
"-1900;19)+4-ENT((7*MOD(" & An & _
"-1900;19)+1)/19));29);7))>0;4;3);SI((25-MOD((11*MOD(" & An &
_ "-1900;19)+4-ENT((7*MOD(" & An & _
"-1900;19)+1)/19));29)-MOD(" & An & "-1900+ENT((" & An & _
"-1900)/4)+31-MOD((11*MOD(" & An & "-1900;19)+4-ENT((7*MOD("
& An & _
"-1900;19)+1)/19));29);7))>0;(25-MOD((11*MOD(" & An & _
"-1900;19)+4-ENT((7*MOD(" & An & "-1900;19)+1)/19));29)-MOD("
& An & _
"-1900+ENT((" & An & "-1900)/4)+31-MOD((11*MOD(" & An & _
"-1900;19)+4-ENT((7*MOD(" & An & _
"-1900;19)+1)/19));29);7));31+(25-MOD((11*MOD(" & An & _
"-1900;19)+4-ENT((7*MOD(" & An & _
"-1900;19)+1)/19));29)-MOD(" & An & "-1900+ENT((" & An & _
"-1900)/4)+31-MOD((11*MOD(" & An & "-1900;19)+4-ENT((7*MOD("
& An & _
"-1900;19)+1)/19));29);7))))"
'Modifier le chiffre 11 pour adapter la macro
'au nombre de jours fériés souhaité
Range("A" & (i * 11) + 1).Select
'liste des fériés (modifiable)
ActiveCell(1).FormulaLocal = "Úte(" & An & ";1;1)" 'jour de l'an
ActiveCell(2).FormulaLocal = DimanchePaques & "+1" 'lundi Pâques
ActiveCell(3).FormulaLocal = DimanchePaques & "+39" 'jeudi
Ascencion ActiveCell(4).FormulaLocal = DimanchePaques & "+50"
'lundi Pentecôte ActiveCell(5).FormulaLocal = "Úte(" & An &
";5;1)" 'fête du travail ActiveCell(6).FormulaLocal = "Úte(" &
An & ";5;8)" 'victoire 1945 ActiveCell(7).FormulaLocal = "Úte("
& An & ";7;14)" 'fête nationale ActiveCell(8).FormulaLocal > > "Úte(" & An & ";8;15)" 'assomption ActiveCell(9).FormulaLocal > > "Úte(" & An & ";11;1)" 'toussaint ActiveCell(10).FormulaLocal > > "Úte(" & An & ";11;11)" 'armistice 1918
ActiveCell(11).FormulaLocal = "Úte(" & An & ";12;25)" 'noël Next i
'tri, définition d'un nom et format des dates
Range("A1").Select
'(modifier le chiffre 11 si nombre jours fériés modifié)
ActiveCell.Range("A1:A" & i * 11).Select
ActiveCell.Sort ActiveCell
'changer ou supprimer les caractères interdits dans les noms
Nom = Application.WorksheetFunction.Substitute(Saisie, ";", "_")
Nom = Application.WorksheetFunction.Substitute(Nom, "-", "")
Nom = "Feries" & Nom
ActiveWorkbook.Names.Add Nom, Selection
Selection.NumberFormatLocal = "jj/mm/aaaa"
'masquage de la feuille (la plage nommée reste accessible)
ActiveSheet.Visible = xlVeryHidden
sht.Select
End Sub

--
Cordialement
Patrice CASADEI